From e8b6b78363a9c8cd0b178b99e6d18feda191cbf6 Mon Sep 17 00:00:00 2001 From: Macqueen Ma-hnu Date: Mon, 19 Oct 2026 09:55:51 +0800 Subject: [PATCH 1/7] perf(pt): add opt-in SO2 edge-cohort inference backward Use a compiled single-cohort branch for small edge sets and retain a streamed runtime path for larger frozen Neo input gradients. Keep native fallback and explicit stride defaults, add 60 CUDA checks and cold-first-peak evidence. The switch remains disabled by default; multi-model and AOT deployment are not validated. N64 cold allocated peak falls 3.62%; no speedup is claimed. --- .../kernels/triton/sezm/so2_edge_cohort.py | 380 ++ .../kernels/triton/sezm/so2_value_path.py | 34 +- .../ecs-edge-cohort-benchmark-results.json | 5202 +++++++++++++++++ doc/development/ecs-edge-cohort-benchmarks.md | 205 + .../_so2_edge_cohort_benchmark_common.py | 131 + .../_so2_edge_cohort_benchmark_impl.py | 207 + .../kernels/benchmark_so2_edge_cohort.py | 131 + .../pt_expt/kernels/test_so2_edge_cohort.py | 201 + 8 files changed, 6487 insertions(+), 4 deletions(-) create mode 100644 deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py create mode 100644 doc/development/ecs-edge-cohort-benchmark-results.json create mode 100644 doc/development/ecs-edge-cohort-benchmarks.md create mode 100644 source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_common.py create mode 100644 source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_impl.py create mode 100644 source/tests/pt_expt/kernels/benchmark_so2_edge_cohort.py create mode 100644 source/tests/pt_expt/kernels/test_so2_edge_cohort.py diff --git a/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py b/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py new file mode 100644 index 0000000000..1bee615190 --- /dev/null +++ b/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py @@ -0,0 +1,380 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +"""Experimental edge-cohort backward for frozen, narrow SO(2) inference. + +Keep native GEMM column parallelism and arithmetic, but traverse all layers +of one cohort before advancing to the next cohort. Scratch scales with the +cohort, not the entire graph. The saved activations and returned input gradient +still have full edge extent. This Python runtime launcher is an online-compile +prototype; standalone AOTInductor/C++ deployment is not validated. +""" + +from __future__ import annotations + +import torch +import triton +from torch import Tensor +from torch.library import wrap_triton + +from . import so2_value_path as sv + +COHORT_EDGES = 8192 +SINGLE_COHORT_MAX_EDGES = 16384 + + +def supports_edge_cohort( + grad_out: Tensor, z_all: Tensor, lmax: int, focus_dim: int, apply_alpha: bool +) -> bool: + """Restrict opt-in dispatch to the experimentally checked Neo layout.""" + return ( + grad_out.is_cuda + and z_all.device == grad_out.device + and grad_out.dtype == torch.float32 + and z_all.dtype == torch.float32 + and grad_out.is_contiguous() + and z_all.is_contiguous() + and lmax == 3 + and focus_dim == 32 + and apply_alpha + and grad_out.ndim == 3 + and z_all.ndim == 4 + and grad_out.shape[1:] == (2, 320) + and z_all.shape[:2] == (2, 2) + and z_all.shape[2] == grad_out.shape[0] + and z_all.shape[3] == 320 + ) + + +def cohort_input_backward_impl( + grad_out: Tensor, + z_all: Tensor, + alpha: Tensor, + w0t: Tensor, + w1t: Tensor, + gw: Tensor, + gwt: Tensor, + cohort_edges: int, +) -> Tensor: + """Compute input gradients without retaining unrelated forward outputs. + + Kernels infer scratch focus strides from the cohort edge count. Independent + saved/output strides retain full-graph layout, including partial cohorts. + Only an internally owned residual is overwritten: matrix input ``gz`` and + GEMM output never alias, and caller-owned tensors remain read-only. + """ + if not supports_edge_cohort(grad_out, z_all, 3, 32, True): + raise ValueError("edge cohorts require contiguous FP32 Neo inference tensors") + if cohort_edges <= 0: + raise ValueError("cohort_edges must be positive") + if not all(t.is_contiguous() for t in (alpha, w0t, w1t, gw, gwt)): + raise ValueError("edge-cohort parameters must be contiguous") + n_gated, n_focus, n_edge, row = z_all.shape + result = grad_out.new_empty((n_focus, n_edge, row)) + if n_edge == 0: + return result + cap = min(n_edge, cohort_edges) + g = grad_out.new_empty((n_focus, cap, row)) + gz = torch.empty_like(g) + sig = grad_out.new_empty((n_focus, cap, 96)) + bm, bn, bk, warps, stages = sv.stack_fp32_configs(32, 3)[2] + n_tiles = triton.cdiv(128, bn) + triton.cdiv(192, bn) + inside, point_config, recompute_config = sv._point_backward_schedule( + 32, 3, train=False + ) + for start in range(0, n_edge, cap): + count = min(cap, n_edge - start) + go = grad_out[start:] + a = alpha[start:] + z = z_all.view(-1)[start * row :] + grid = (triton.cdiv(count, bm) * n_tiles, n_focus) + sv._stack_gemm_bwd_kernel[grid]( + go, + go, + w0t, + w1t, + a, + g, + count, + n_gated, + L=3, + CF=32, + G_EDGE_MAJOR=True, + FOLD_ALPHA=True, + RES_IS_GZ=True, + BLOCK_M=bm, + BLOCK_N=bn, + BLOCK_K=bk, + num_warps=warps, + num_stages=stages, + ) + for layer in range(n_gated - 1, -1, -1): + if not inside: + rbm, rw, rs = recompute_config + sv._stack_recompute_kernel[(triton.cdiv(count, rbm), n_focus)]( + z, + gw, + sig, + count, + layer, + L=3, + CF=32, + BLOCK_M=rbm, + saved_edges=n_edge, + num_warps=rw, + num_stages=rs, + ) + pbm, pw, ps = point_config + sv._stack_point_bwd_kernel[(triton.cdiv(count, pbm), n_focus)]( + g, + z, + sig, + gwt, + gz, + sig, + g, + g, + count, + layer, + L=3, + CF=32, + GLOGIT_OUT=False, + GLOGIT_STORE=False, + RECOMPUTE_SIG=inside, + RECOVER_INPUT=False, + BLOCK_M=pbm, + saved_edges=n_edge, + num_warps=pw, + num_stages=ps, + ) + # Residual elements are loaded before their matching output store. + # Distinct (edge, focus, column) tiles own disjoint residual elements. + target = result.view(-1)[start * row :] if layer == 0 else g + sv._stack_gemm_bwd_kernel[grid]( + gz, + g, + w0t, + w1t, + gz, + target, + count, + layer, + L=3, + CF=32, + G_EDGE_MAJOR=False, + FOLD_ALPHA=False, + RES_IS_GZ=False, + BLOCK_M=bm, + BLOCK_N=bn, + BLOCK_K=bk, + output_edges=n_edge if layer == 0 else count, + num_warps=warps, + num_stages=stages, + ) + return result + + +# Small edge sets must not pay the opaque multi-cohort launcher overhead. +# The residual and returned result share internally owned storage; gz never +# aliases GEMM output. See the inference-only dispatcher below. +@torch.library.triton_op("sezm_triton::so2_single_cohort_input_bwd", mutates_args=()) +def _single_cohort_input_backward( + grad_out: Tensor, + z_all: Tensor, + alpha: Tensor, + w0t: Tensor, + w1t: Tensor, + gw: Tensor, + gwt: Tensor, + cohort_edges: int, +) -> Tensor: + """Compute one small cohort with compiled launchers and owned residual reuse.""" + if not supports_edge_cohort(grad_out, z_all, 3, 32, True): + raise ValueError("edge cohorts require contiguous FP32 Neo inference tensors") + if cohort_edges <= 0: + raise ValueError("cohort_edges must be positive") + if not all(t.is_contiguous() for t in (alpha, w0t, w1t, gw, gwt)): + raise ValueError("edge-cohort parameters must be contiguous") + n_gated, n_focus, n_edge, row = z_all.shape + result = grad_out.new_empty((n_focus, n_edge, row)) + if n_edge == 0: + return result + cap = n_edge + g = result + gz = torch.empty_like(g) + sig = grad_out.new_empty((n_focus, cap, 96)) + bm, bn, bk, warps, stages = sv.stack_fp32_configs(32, 3)[2] + n_tiles = triton.cdiv(128, bn) + triton.cdiv(192, bn) + inside, point_config, recompute_config = sv._point_backward_schedule( + 32, 3, train=False + ) + start = 0 + count = min(cap, n_edge - start) + go = grad_out[start:] + a = alpha[start:] + z = z_all.view(-1)[start * row :] + grid = (triton.cdiv(count, bm) * n_tiles, n_focus) + wrap_triton(sv._stack_gemm_bwd_kernel)[grid]( + go, + go, + w0t, + w1t, + a, + g, + count, + n_gated, + L=3, + CF=32, + G_EDGE_MAJOR=True, + FOLD_ALPHA=True, + RES_IS_GZ=True, + output_edges=n_edge, + BLOCK_M=bm, + BLOCK_N=bn, + BLOCK_K=bk, + num_warps=warps, + num_stages=stages, + ) + for layer in range(n_gated - 1, -1, -1): + if not inside: + rbm, rw, rs = recompute_config + wrap_triton(sv._stack_recompute_kernel)[triton.cdiv(count, rbm), n_focus]( + z, + gw, + sig, + count, + layer, + L=3, + CF=32, + BLOCK_M=rbm, + saved_edges=n_edge, + num_warps=rw, + num_stages=rs, + ) + pbm, pw, ps = point_config + wrap_triton(sv._stack_point_bwd_kernel)[triton.cdiv(count, pbm), n_focus]( + g, + z, + sig, + gwt, + gz, + sig, + g, + g, + count, + layer, + L=3, + CF=32, + GLOGIT_OUT=False, + GLOGIT_STORE=False, + RECOMPUTE_SIG=inside, + RECOVER_INPUT=False, + BLOCK_M=pbm, + saved_edges=n_edge, + num_warps=pw, + num_stages=ps, + ) + target = result.view(-1)[start * row :] if layer == 0 else g + wrap_triton(sv._stack_gemm_bwd_kernel)[grid]( + gz, + g, + w0t, + w1t, + gz, + target, + count, + layer, + L=3, + CF=32, + G_EDGE_MAJOR=False, + FOLD_ALPHA=False, + RES_IS_GZ=False, + BLOCK_M=bm, + BLOCK_N=bn, + BLOCK_K=bk, + output_edges=n_edge if layer == 0 else count, + num_warps=warps, + num_stages=stages, + ) + return result + + +@torch.library.custom_op("sezm_triton::so2_cohort_input_bwd", mutates_args=()) +def _cohort_input_backward( + grad_out: Tensor, + z_all: Tensor, + alpha: Tensor, + w0t: Tensor, + w1t: Tensor, + gw: Tensor, + gwt: Tensor, + cohort_edges: int, +) -> Tensor: + """Keep the runtime edge loop opaque without retaining x_local/u_final.""" + return cohort_input_backward_impl( + grad_out, z_all, alpha, w0t, w1t, gw, gwt, cohort_edges + ) + + +@_cohort_input_backward.register_fake +def _cohort_input_backward_fake( + grad_out: Tensor, + z_all: Tensor, + alpha: Tensor, + w0t: Tensor, + w1t: Tensor, + gw: Tensor, + gwt: Tensor, + cohort_edges: int, +) -> Tensor: + """Preserve full input-gradient shape under FakeTensor tracing.""" + return grad_out.new_empty(z_all.shape[1:]) + + +@torch.library.triton_op("sezm_triton::so2_cohort_alpha_bwd", mutates_args=()) +def _cohort_alpha_backward(grad_out: Tensor, x_local: Tensor, alpha: Tensor) -> Tensor: + """Expose alpha's short-lived output dependency to the graph scheduler.""" + n_edge, n_focus = alpha.shape + result = torch.empty_like(alpha) + if sv._has_no_edges(n_edge): + return result + bm, warps, stages = sv.gate_config(32, 3) + wrap_triton(sv._stack_grad_alpha_kernel)[(triton.cdiv(n_edge, bm), n_focus)]( + grad_out, + x_local, + alpha, + result, + n_edge, + L=3, + CF=32, + BLOCK_M=bm, + num_warps=warps, + num_stages=stages, + ) + return result + + +def cohort_backward( + grad_out: Tensor, + x_local: Tensor, + z_all: Tensor, + u_final: Tensor, + alpha: Tensor, + w0t: Tensor, + w1t: Tensor, + gw: Tensor, + gwt: Tensor, + lmax: int, + focus_dim: int, + apply_alpha: bool, +) -> tuple[Tensor, Tensor]: + """First-order dispatcher; training/higher derivatives never enter here.""" + del u_final + if not supports_edge_cohort(grad_out, z_all, lmax, focus_dim, apply_alpha): + raise ValueError("unsupported edge-cohort layout") + grad_alpha = _cohort_alpha_backward(grad_out, x_local, alpha) + input_backward = ( + _single_cohort_input_backward + if grad_out.shape[0] <= SINGLE_COHORT_MAX_EDGES + else _cohort_input_backward + ) + grad_u0 = input_backward(grad_out, z_all, alpha, w0t, w1t, gw, gwt, COHORT_EDGES) + return grad_u0, grad_alpha diff --git a/deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py b/deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py index 7a8ac3fd43..38db605a4a 100644 --- a/deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py +++ b/deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py @@ -91,6 +91,7 @@ annotations, ) +import os from typing import ( TYPE_CHECKING, NamedTuple, @@ -161,6 +162,10 @@ _ROTATE_MIX_BWD_CONFIG = (1, 2) # per-edge backward (warps, stages) +# Experimental, frozen first-order inference only. Read before compilation; +# changing the switch requires a new process/graph. Disabled by default. +_EDGE_COHORT_INFER = os.environ.get("DP_SO2_EDGE_COHORT_INFER", "0") == "1" + # ====================================================================== # Eager reference / fallback implementations @@ -1369,6 +1374,7 @@ def _stack_recompute_kernel( L: tl.constexpr, CF: tl.constexpr, BLOCK_M: tl.constexpr, + saved_edges=0, ): """Recompute the gate sigmoids from the saved pre-activation (backward).""" ROW: tl.constexpr = (3 * L + 1) * CF @@ -1386,7 +1392,8 @@ def _stack_recompute_kernel( cm = mm & (nc < CF)[None, :] wm = ((nc < CF)[:, None]) & ((nc < CF)[None, :]) - z_row = z_ptr + (layer * n_focus + fid) * n_edge * ROW + offs_m * ROW + z_stride = tl.where(saved_edges > 0, saved_edges, n_edge).to(tl.int64) + z_row = z_ptr + (layer * n_focus + fid) * z_stride * ROW + offs_m * ROW z_s = tl.load(z_row[:, None] + nc[None, :], mask=cm, other=0.0).to(tl.float32) sig_row = sig_ptr + (fid * n_edge + offs_m) * LG for g in tl.static_range(L): @@ -1420,6 +1427,7 @@ def _stack_point_bwd_kernel( RECOMPUTE_SIG: tl.constexpr, RECOVER_INPUT: tl.constexpr, BLOCK_M: tl.constexpr, + saved_edges=0, ): """Pointwise part of the gated-layer backward. @@ -1456,7 +1464,8 @@ def _stack_point_bwd_kernel( wm = ((nc < CF)[:, None]) & ((nc < CF)[None, :]) g_row = g_ptr + fid * n_edge * ROW + offs_m * ROW - z_row = z_ptr + (layer * n_focus + fid) * n_edge * ROW + offs_m * ROW + z_stride = tl.where(saved_edges > 0, saved_edges, n_edge).to(tl.int64) + z_row = z_ptr + (layer * n_focus + fid) * z_stride * ROW + offs_m * ROW gz_row = gz_ptr + fid * n_edge * ROW + offs_m * ROW sig_row = sig_ptr + (fid * n_edge + offs_m) * LG gl_row = gl_ptr + (fid * n_edge + offs_m) * LG @@ -2014,6 +2023,7 @@ def _stack_gemm_bwd_kernel( BLOCK_M: tl.constexpr, BLOCK_N: tl.constexpr, BLOCK_K: tl.constexpr, + output_edges=0, ): """Backward block GEMM ``g_u = residual + gz @ W^T`` over both blocks. @@ -2044,7 +2054,8 @@ def _stack_gemm_bwd_kernel( gz_row = gz_ptr + fid * ROW + offs_m * (n_focus * ROW) else: gz_row = gz_ptr + fid * n_edge * ROW + offs_m * ROW - gu_row = gu_ptr + fid * n_edge * ROW + offs_m * ROW + output_stride = tl.where(output_edges > 0, output_edges, n_edge).to(tl.int64) + gu_row = gu_ptr + fid * output_stride * ROW + offs_m * ROW if FOLD_ALPHA: alpha = tl.load(alpha_ptr + offs_m * n_focus + fid, mask=m_mask, other=0.0) @@ -2435,6 +2446,7 @@ def _launch_stack_point_backward( L=lmax, CF=focus_dim, BLOCK_M=block_m, + saved_edges=0, num_warps=warps, num_stages=stages, ) @@ -2458,6 +2470,7 @@ def _launch_stack_point_backward( RECOMPUTE_SIG=recompute_sigmoid, RECOVER_INPUT=recover, BLOCK_M=block_m, + saved_edges=0, num_warps=warps, num_stages=stages, ) @@ -3218,6 +3231,7 @@ def _stack_backward_traversal( BLOCK_M=block_m, BLOCK_N=block_n, BLOCK_K=block_k, + output_edges=0, num_warps=warps, num_stages=stages, ) @@ -3402,6 +3416,7 @@ def _stack_backward_traversal( BLOCK_M=block_m, BLOCK_N=block_n, BLOCK_K=block_k, + output_edges=0, num_warps=warps, num_stages=stages, ) @@ -4956,7 +4971,18 @@ def _mixing_stack_backward(ctx, grad_out, grad_z, grad_u): None, None, ) - grad_u0, grad_alpha = _mixing_stack_bwd_op( + backward_op = _mixing_stack_bwd_op + if _EDGE_COHORT_INFER: + from .so2_edge_cohort import ( + cohort_backward, + supports_edge_cohort, + ) + + if supports_edge_cohort( + grad_out, z_all, ctx.lmax, ctx.focus_dim, ctx.apply_alpha + ): + backward_op = cohort_backward + grad_u0, grad_alpha = backward_op( grad_out, x_local, z_all, diff --git a/doc/development/ecs-edge-cohort-benchmark-results.json b/doc/development/ecs-edge-cohort-benchmark-results.json new file mode 100644 index 0000000000..7a1225794f --- /dev/null +++ b/doc/development/ecs-edge-cohort-benchmark-results.json @@ -0,0 +1,5202 @@ +{ + "schema_version": 1, + "baseline_commit": "668b60cc2a9559f79abb9c33acd959833376344f", + "model": { + "name": "DPA4-Neo-OMat24-v20260627.pt", + "sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d" + }, + "environment": { + "gpu": "NVIDIA GeForce RTX 5090", + "driver": "595.91.07", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "precision": "FP32 SO(2), TF32 and AMP disabled" + }, + "protocol": { + "gpu": 0, + "atoms": 64, + "edges": 10114, + "seed": 0, + "coordinate_std_angstrom": 0.02, + "warmup": 8, + "samples": 30, + "independent_processes_per_arm": 3, + "order": [ + "BASE", + "FIXED", + "FIXED", + "BASE", + "BASE", + "FIXED" + ], + "cache": "new process and empty Inductor/Triton caches per run; driver/system caches not purged", + "timing": "full ASE energy/force/virial/stress API including neighbor building and host gaps", + "primary_memory": "complete high-water mark from model loading through first JIT, warmup and 30 measured calls", + "steady_memory": "separate 30-call replay after resetting peak counters; reserved cache not emptied", + "tolerance": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + } + }, + "summary": { + "groups": { + "BASE": { + "process_p50_ms": [ + 12.157610966823995, + 11.771477526053786, + 12.372727505862713 + ], + "p50_ms": 12.157610966823995, + "pooled_wall_ms": { + "median": 12.157610966823995, + "p90": 12.414685660041869, + "min": 11.702988063916564, + "max": 12.85580382682383 + }, + "pooled_event_ms": { + "median": 12.128463745117188, + "p90": 12.389702796936035, + "min": 11.678048133850098, + "max": 12.829216003417969 + }, + "first_call_ms": [ + 124931.33242195472, + 125718.05966598913, + 125241.41405685805 + ], + "peak_bytes": { + "first": { + "allocated": 498199552, + "reserved": 528482304 + }, + "complete": { + "allocated": 498199552, + "reserved": 528482304 + }, + "steady": { + "allocated": 397536256, + "reserved": 528482304 + } + }, + "within_process_worst_ratio": 0.25613949444882667 + }, + "FIXED": { + "process_p50_ms": [ + 12.398104998283088, + 12.254007975570858, + 12.313776067458093 + ], + "p50_ms": 12.313776067458093, + "pooled_wall_ms": { + "median": 12.340801884420216, + "p90": 12.432650523260236, + "min": 12.185728875920177, + "max": 12.588670011609793 + }, + "pooled_event_ms": { + "median": 12.31489610671997, + "p90": 12.40545301437378, + "min": 12.159104347229004, + "max": 12.562368392944336 + }, + "first_call_ms": [ + 124219.04061594978, + 125799.81218092144, + 126628.89281916432 + ], + "peak_bytes": { + "first": { + "allocated": 480156672, + "reserved": 507510784 + }, + "complete": { + "allocated": 480156672, + "reserved": 507510784 + }, + "steady": { + "allocated": 379493376, + "reserved": 507510784 + } + }, + "within_process_worst_ratio": 0.3543239288673778 + } + }, + "comparisons": { + "BASE_self": { + "pairs": 3, + "max_ratio": 0.2826209178989357, + "passed": true + }, + "FIXED_self": { + "pairs": 3, + "max_ratio": 0.1841048210822708, + "passed": true + }, + "BASE_to_FIXED": { + "pairs": 9, + "max_ratio": 0.2565698522949588, + "passed": true + }, + "fresh_TORCH_reference": { + "pairs": 6, + "max_ratio": 0.3528409108417077, + "passed": true + } + }, + "accuracy_pairs": { + "BASE_self": [ + { + "left": 0, + "right": 3, + "metrics": { + "0_energy": { + "max_abs": 8.940696716308594e-07, + "mean_abs": 8.940696716308594e-07, + "max_relative": 1.5415036795113678e-09, + "max_ratio": 1.541237948098774e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 2.965923755482436e-06, + "mean_abs": 8.992252606137887e-07, + "max_relative": 0.00018129709564356622, + "max_ratio": 0.212322447982351, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 1.0430906838720944e-05, + "mean_abs": 5.297451218102791e-06, + "max_relative": 1.5161652394934063e-05, + "max_ratio": 0.1184620629853578, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 2.8729148331130272e-08, + "mean_abs": 1.575682060806531e-08, + "max_relative": 1.4455929777240921e-05, + "max_ratio": 0.002483244331711669, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 9.5367431640625e-07, + "mean_abs": 9.5367431640625e-07, + "max_relative": 1.6450582960812087e-09, + "max_ratio": 1.6447745776232866e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 3.072592622999082e-06, + "mean_abs": 8.257417271247588e-07, + "max_relative": 0.00029077901142756247, + "max_ratio": 0.2225471585955478, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 9.138159774657595e-06, + "mean_abs": 3.4021552949416013e-06, + "max_relative": 4.097431548740198e-06, + "max_ratio": 0.03681828794195407, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 2.5168621645144107e-08, + "mean_abs": 1.2202694460508126e-08, + "max_relative": 2.6460235648039898e-06, + "max_ratio": 0.0021300188722638653, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 5.364418029785156e-07, + "mean_abs": 5.364418029785156e-07, + "max_relative": 9.250785174462079e-10, + "max_ratio": 9.249190178119503e-06, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 3.2578318069909074e-06, + "mean_abs": 8.857876907311657e-07, + "max_relative": 0.00025897255957233525, + "max_ratio": 0.18197773157379202, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 6.907196955729944e-06, + "mean_abs": 3.2810026232380865e-06, + "max_relative": 1.1137410154557084e-05, + "max_ratio": 0.07108779028853267, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 1.902403011858067e-08, + "mean_abs": 1.0941050272613969e-08, + "max_relative": 8.652974525195661e-06, + "max_ratio": 0.001625726251792459, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "left": 0, + "right": 4, + "metrics": { + "0_energy": { + "max_abs": 3.516674041748047e-06, + "mean_abs": 3.516674041748047e-06, + "max_relative": 6.063247759968554e-09, + "max_ratio": 6.0622025497615815e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 3.2823477695842485e-06, + "mean_abs": 8.839282358523206e-07, + "max_relative": 0.00020464965009608344, + "max_ratio": 0.25890461210680166, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 9.622049509161457e-06, + "mean_abs": 4.642091341778966e-06, + "max_relative": 1.4183353787201505e-05, + "max_ratio": 0.10899733540006643, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 2.650136674345327e-08, + "mean_abs": 1.5290398695145598e-08, + "max_relative": 1.3874511688985726e-05, + "max_ratio": 0.0022740881153230194, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 5.364418029785156e-07, + "mean_abs": 5.364418029785156e-07, + "max_relative": 9.253452939241907e-10, + "max_ratio": 9.251857022907892e-06, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 3.218249410963381e-06, + "mean_abs": 9.158397781168967e-07, + "max_relative": 0.00036924432162528155, + "max_ratio": 0.2826209178989357, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 6.380520600757222e-06, + "mean_abs": 2.5744617862348087e-06, + "max_relative": 8.864145951536472e-06, + "max_ratio": 0.07523450405792259, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 1.7573440699164555e-08, + "mean_abs": 7.1633927793791794e-09, + "max_relative": 6.3961402482526385e-06, + "max_ratio": 0.0015074465811325795, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 2.8014183044433594e-06, + "mean_abs": 2.8014183044433594e-06, + "max_relative": 4.830965563300724e-09, + "max_ratio": 4.8301326207758556e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 3.4257420757910495e-06, + "mean_abs": 8.769898487970273e-07, + "max_relative": 7.557494315839386e-05, + "max_ratio": 0.1225531436537252, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 7.613317217547433e-06, + "mean_abs": 3.197560840995095e-06, + "max_relative": 2.3634955035730916e-05, + "max_ratio": 0.1508563578526751, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 2.0968849882146978e-08, + "mean_abs": 9.646180220006182e-09, + "max_relative": 1.7951638661488256e-05, + "max_ratio": 0.0017990714517089582, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "left": 3, + "right": 4, + "metrics": { + "0_energy": { + "max_abs": 4.410743713378906e-06, + "mean_abs": 4.410743713378906e-06, + "max_relative": 7.60475142775717e-09, + "max_ratio": 7.603440486141644e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 3.0916532978153555e-06, + "mean_abs": 9.305361371817847e-07, + "max_relative": 0.00017413721193387842, + "max_ratio": 0.22838952639928795, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 7.448277292931849e-06, + "mean_abs": 4.2978168480694515e-06, + "max_relative": 2.0845363055897785e-05, + "max_ratio": 0.16287116359459955, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 1.907185856030863e-08, + "mean_abs": 1.0950027422520296e-08, + "max_relative": 1.9379657422618404e-05, + "max_ratio": 0.001888599816151424, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 1.4901161193847656e-06, + "mean_abs": 1.4901161193847656e-06, + "max_relative": 2.570403594233863e-09, + "max_ratio": 2.5699602841410813e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 3.3687922851299845e-06, + "mean_abs": 8.240444436026969e-07, + "max_relative": 7.848813289941239e-05, + "max_ratio": 0.11443101806335318, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 1.3313125077019095e-05, + "mean_abs": 5.59745221890346e-06, + "max_relative": 1.0058768345251114e-05, + "max_ratio": 0.08537387042429323, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 3.666744905275743e-08, + "mean_abs": 1.9150195969748426e-08, + "max_relative": 9.042187738898462e-06, + "max_ratio": 0.003145327182061733, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 3.337860107421875e-06, + "mean_abs": 3.337860107421875e-06, + "max_relative": 5.756044075422138e-09, + "max_ratio": 5.755051633264849e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 3.327522954066353e-06, + "mean_abs": 8.446165667130393e-07, + "max_relative": 0.00018344512366715853, + "max_ratio": 0.15726049204774675, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 1.3753510108571732e-05, + "mean_abs": 5.100490138940403e-06, + "max_relative": 1.2497405692440768e-05, + "max_ratio": 0.10085031873806688, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 3.7880372061316336e-08, + "mean_abs": 1.8009192727528706e-08, + "max_relative": 9.298583675884927e-06, + "max_ratio": 0.0032500349966094605, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + } + ], + "FIXED_self": [ + { + "left": 1, + "right": 2, + "metrics": { + "0_energy": { + "max_abs": 2.5033950805664062e-06, + "mean_abs": 2.5033950805664062e-06, + "max_relative": 4.316210295978376e-09, + "max_ratio": 4.315466248025407e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 3.464957440968419e-06, + "mean_abs": 8.566671179805382e-07, + "max_relative": 0.00013695467135212407, + "max_ratio": 0.15173810696645162, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 1.0431228751883737e-05, + "mean_abs": 3.735409205815918e-06, + "max_relative": 8.53347719245301e-06, + "max_ratio": 0.0655788598753071, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 2.8730034955237738e-08, + "mean_abs": 1.301779196452218e-08, + "max_relative": 7.649554833729004e-06, + "max_ratio": 0.0024653308187899564, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 1.9073486328125e-06, + "mean_abs": 1.9073486328125e-06, + "max_relative": 3.290116601972453e-09, + "max_ratio": 3.289549165053226e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 3.0887364204090773e-06, + "mean_abs": 7.468107269028209e-07, + "max_relative": 0.00018952946762189202, + "max_ratio": 0.1553377294372898, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 4.861605932937607e-06, + "mean_abs": 2.3255834481730432e-06, + "max_relative": 6.579688265428884e-06, + "max_ratio": 0.0558452113547386, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 1.3389995723311898e-08, + "mean_abs": 5.92888821913419e-09, + "max_relative": 6.203949590935915e-06, + "max_ratio": 0.0011485910563039455, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 2.6226043701171875e-06, + "mean_abs": 2.6226043701171875e-06, + "max_relative": 4.522606108535715e-09, + "max_ratio": 4.521826332537997e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 3.0098079371043696e-06, + "mean_abs": 8.000548023297943e-07, + "max_relative": 4.621128518980757e-05, + "max_ratio": 0.11214579410508098, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 1.6102631762215935e-05, + "mean_abs": 5.236860729155672e-06, + "max_relative": 1.408936271354574e-05, + "max_ratio": 0.08992926857064246, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 4.4350400553450076e-08, + "mean_abs": 1.8307552185382518e-08, + "max_relative": 1.2324680868699736e-05, + "max_ratio": 0.003805146938924361, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "left": 1, + "right": 5, + "metrics": { + "0_energy": { + "max_abs": 2.1457672119140625e-06, + "mean_abs": 2.1457672119140625e-06, + "max_relative": 3.699608822843138e-09, + "max_ratio": 3.698971067455665e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 3.452820550364777e-06, + "mean_abs": 8.50088282605919e-07, + "max_relative": 9.110506307853517e-05, + "max_ratio": 0.14261412509849772, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 1.5471517931686662e-05, + "mean_abs": 4.255925488496872e-06, + "max_relative": 5.7410638300566795e-06, + "max_ratio": 0.04485669448764502, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 4.2612165983280104e-08, + "mean_abs": 1.6293057885665135e-08, + "max_relative": 4.687701030752969e-06, + "max_ratio": 0.0036565600679524814, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 3.2782554626464844e-06, + "mean_abs": 3.2782554626464844e-06, + "max_relative": 5.654887859057156e-09, + "max_ratio": 5.653912576869681e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 3.1145664216580826e-06, + "mean_abs": 7.611858398870464e-07, + "max_relative": 0.00018604014174886728, + "max_ratio": 0.14239085085210829, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 1.308394809118596e-05, + "mean_abs": 6.308510781353564e-06, + "max_relative": 1.8865476796092743e-05, + "max_ratio": 0.16012074414403737, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 3.6036242226367143e-08, + "mean_abs": 1.9459369161823822e-08, + "max_relative": 1.7817344800203037e-05, + "max_ratio": 0.0030497461495408245, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 1.7285346984863281e-06, + "mean_abs": 1.7285346984863281e-06, + "max_relative": 2.9808085491686604e-09, + "max_ratio": 2.980294605905149e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 3.558982866636029e-06, + "mean_abs": 8.532306706842546e-07, + "max_relative": 0.0001251744707255284, + "max_ratio": 0.15948698843428785, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 1.7625671745236104e-05, + "mean_abs": 4.94553905226273e-06, + "max_relative": 7.468606827717489e-06, + "max_ratio": 0.061324633485665386, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 4.85452076072479e-08, + "mean_abs": 1.842574916499336e-08, + "max_relative": 5.90659958115022e-06, + "max_ratio": 0.004165050427261389, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "left": 2, + "right": 5, + "metrics": { + "0_energy": { + "max_abs": 3.5762786865234375e-07, + "mean_abs": 3.5762786865234375e-07, + "max_relative": 6.166014704738564e-10, + "max_ratio": 6.1649517790927755e-06, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 3.0560628623277353e-06, + "mean_abs": 8.003858274497252e-07, + "max_relative": 0.00013980057584457578, + "max_ratio": 0.13452822025794395, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 5.040289179802926e-06, + "mean_abs": 2.7159711748245584e-06, + "max_relative": 9.5484088243805e-06, + "max_ratio": 0.07337866316405262, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 1.3882131028042366e-08, + "mean_abs": 7.810361734965354e-09, + "max_relative": 8.40958432071667e-06, + "max_ratio": 0.0011912289554851792, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 5.185604095458984e-06, + "mean_abs": 5.185604095458984e-06, + "max_relative": 8.945004431599502e-09, + "max_ratio": 8.943461712502949e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 2.7869749814612987e-06, + "mean_abs": 7.410935437916303e-07, + "max_relative": 9.683531416660768e-05, + "max_ratio": 0.15359708738223432, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 1.458303843548947e-05, + "mean_abs": 6.698377729769729e-06, + "max_relative": 1.2285707694537109e-05, + "max_ratio": 0.10427495046363401, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 4.016508639223537e-08, + "mean_abs": 2.2192026930221525e-08, + "max_relative": 1.161332316079565e-05, + "max_ratio": 0.0033991701132774603, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 4.351139068603516e-06, + "mean_abs": 4.351139068603516e-06, + "max_relative": 7.503414623769387e-09, + "max_ratio": 7.502120904519858e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 3.2130779956673905e-06, + "mean_abs": 9.486840407517405e-07, + "max_relative": 0.00016168008936062617, + "max_ratio": 0.1841048210822708, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 3.900632851605579e-06, + "mean_abs": 1.6166356524078335e-06, + "max_relative": 1.545687728526555e-05, + "max_ratio": 0.09865836153998099, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 8.048961187660797e-09, + "mean_abs": 3.999675147405548e-09, + "max_relative": 1.3748926252107536e-05, + "max_ratio": 0.0007948484312275592, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + } + ], + "BASE_to_FIXED": [ + { + "left": 0, + "right": 1, + "metrics": { + "0_energy": { + "max_abs": 2.5033950805664062e-06, + "mean_abs": 2.5033950805664062e-06, + "max_relative": 4.316210295978376e-09, + "max_ratio": 4.315466248025407e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 3.2497954052246314e-06, + "mean_abs": 8.170359411819225e-07, + "max_relative": 0.0001600258481928866, + "max_ratio": 0.2563435876828824, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 1.6732199354052568e-05, + "mean_abs": 6.382014568342667e-06, + "max_relative": 8.438116733027205e-06, + "max_ratio": 0.06484610575977443, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 4.608437641911989e-08, + "mean_abs": 2.3482017297207086e-08, + "max_relative": 7.171305062815963e-06, + "max_ratio": 0.003954511386667091, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 1.1324882507324219e-06, + "mean_abs": 1.1324882507324219e-06, + "max_relative": 1.9535067298100677e-09, + "max_ratio": 1.953169814140177e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 2.4917882583963546e-06, + "mean_abs": 8.187516069800097e-07, + "max_relative": 0.0001457299170923512, + "max_ratio": 0.1288229190236598, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 6.2591292930846976e-06, + "mean_abs": 2.8019525226315642e-06, + "max_relative": 5.437627577013009e-06, + "max_ratio": 0.046151970751207146, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 1.7239100747606928e-08, + "mean_abs": 8.434100154458673e-09, + "max_relative": 5.0534887765316435e-06, + "max_ratio": 0.0014696344164177805, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 8.940696716308594e-07, + "mean_abs": 8.940696716308594e-07, + "max_relative": 1.5417975276507295e-09, + "max_ratio": 1.5415316949274583e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 3.0821727698970847e-06, + "mean_abs": 8.665492355972257e-07, + "max_relative": 0.00014890554261097887, + "max_ratio": 0.10460941651911013, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 1.5530077689618338e-05, + "mean_abs": 4.85358025624648e-06, + "max_relative": 1.5981533887883987e-05, + "max_ratio": 0.10200724321074704, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 4.27734532029711e-08, + "mean_abs": 1.7410504470744513e-08, + "max_relative": 1.3272863943669268e-05, + "max_ratio": 0.0036698489819558065, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "left": 0, + "right": 2, + "metrics": { + "0_energy": { + "max_abs": 0.0, + "mean_abs": 0.0, + "max_relative": 0.0, + "max_ratio": 0.0, + "finite": true, + "passed": true, + "bitwise_equal": true + }, + "0_forces": { + "max_abs": 3.564676553935442e-06, + "mean_abs": 9.65789413001165e-07, + "max_relative": 0.00024659012952264785, + "max_ratio": 0.24858991453507, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 1.0182196941599386e-05, + "mean_abs": 3.862737266250675e-06, + "max_relative": 1.5203637665294587e-05, + "max_ratio": 0.11683847559469454, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 2.804414330967453e-08, + "mean_abs": 1.3089311808533403e-08, + "max_relative": 1.4820746524431751e-05, + "max_ratio": 0.002412478572977225, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 7.748603820800781e-07, + "mean_abs": 7.748603820800781e-07, + "max_relative": 1.336609867764783e-09, + "max_ratio": 1.3363793465169632e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 2.7782762650474524e-06, + "mean_abs": 7.973099946240181e-07, + "max_relative": 0.0003353229382922192, + "max_ratio": 0.2565698522949588, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 7.163670851184634e-06, + "mean_abs": 3.4782319593418265e-06, + "max_relative": 4.011891984749853e-06, + "max_ratio": 0.03656863357223033, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 1.97304189965275e-08, + "mean_abs": 1.1436187822109803e-08, + "max_relative": 2.2032958862029333e-06, + "max_ratio": 0.001692471536237772, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 3.516674041748047e-06, + "mean_abs": 3.516674041748047e-06, + "max_relative": 6.064403608759535e-09, + "max_ratio": 6.063358000048003e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 3.4110940561049574e-06, + "mean_abs": 8.867498779395466e-07, + "max_relative": 0.00011238991726285375, + "max_ratio": 0.13152191825833903, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 4.683424453255647e-06, + "mean_abs": 2.32884255524985e-06, + "max_relative": 2.65412376931645e-05, + "max_ratio": 0.1694079246381617, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 1.2440488126794474e-08, + "mean_abs": 5.793119772690422e-09, + "max_relative": 2.559722933468633e-05, + "max_ratio": 0.0012380318643186422, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "left": 0, + "right": 5, + "metrics": { + "0_energy": { + "max_abs": 3.5762786865234375e-07, + "mean_abs": 3.5762786865234375e-07, + "max_relative": 6.166014708540537e-10, + "max_ratio": 6.1649517828934386e-06, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 2.6479242194454855e-06, + "mean_abs": 8.848242572627452e-07, + "max_relative": 0.00016049889405174818, + "max_ratio": 0.14319398833105043, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 5.842541449752048e-06, + "mean_abs": 3.2079253548040262e-06, + "max_relative": 7.932949304317797e-06, + "max_ratio": 0.06096394324117989, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 1.60917207406297e-08, + "mean_abs": 9.536634793041286e-09, + "max_relative": 6.411216119377634e-06, + "max_ratio": 0.0013842794575832202, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 4.410743713378906e-06, + "mean_abs": 4.410743713378906e-06, + "max_relative": 7.608394631891842e-09, + "max_ratio": 7.607082434019637e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 3.0591417443659452e-06, + "mean_abs": 8.126516822711446e-07, + "max_relative": 0.00033183179287500175, + "max_ratio": 0.2538986283441084, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 8.145923447777648e-06, + "mean_abs": 4.425371495574302e-06, + "max_relative": 1.4195859270381565e-05, + "max_ratio": 0.12048762166138247, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 2.2435771563494855e-08, + "mean_abs": 1.2896613491106962e-08, + "max_relative": 1.2763628609699553e-05, + "max_ratio": 0.001942695399208099, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 8.344650268554688e-07, + "mean_abs": 8.344650268554688e-07, + "max_relative": 1.4390110258073474e-09, + "max_ratio": 1.4387629152656278e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 3.0745850949642772e-06, + "mean_abs": 8.560020093329827e-07, + "max_relative": 0.00027411432545211404, + "max_ratio": 0.19878841936231909, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 2.7684267465133416e-06, + "mean_abs": 1.623742950633093e-06, + "max_relative": 1.4500457370956113e-05, + "max_ratio": 0.09255379940892738, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 7.624892436192132e-09, + "mean_abs": 4.518151703952148e-09, + "max_relative": 1.184846598626384e-05, + "max_ratio": 0.0006493777217609957, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "left": 3, + "right": 1, + "metrics": { + "0_energy": { + "max_abs": 3.3974647521972656e-06, + "mean_abs": 3.3974647521972656e-06, + "max_relative": 5.857713982143198e-09, + "max_ratio": 5.856704202775342e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 2.8331195096598094e-06, + "mean_abs": 8.391489818068004e-07, + "max_relative": 0.000141521208429515, + "max_ratio": 0.13616619325918683, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 1.3557260022167839e-05, + "mean_abs": 4.900032116937779e-06, + "max_relative": 1.6747003465334255e-05, + "max_ratio": 0.1308488367659256, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 3.7339853587586846e-08, + "mean_abs": 1.571966778185771e-08, + "max_relative": 1.490426849288731e-05, + "max_ratio": 0.003204141546055703, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 1.7881393432617188e-07, + "mean_abs": 1.7881393432617188e-07, + "max_relative": 3.084484305152266e-10, + "max_ratio": 3.0839523330436627e-06, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 2.6708029654542997e-06, + "mean_abs": 7.695750990956615e-07, + "max_relative": 0.00014509146953643878, + "max_ratio": 0.1312238033096061, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 4.630539558014846e-06, + "mean_abs": 2.3863599110724506e-06, + "max_relative": 4.191521811319009e-06, + "max_ratio": 0.03820596720385815, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 1.2753585080377272e-08, + "mean_abs": 6.8802454654433064e-09, + "max_relative": 3.8047308292898984e-06, + "max_ratio": 0.0010939998893052874, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 3.5762786865234375e-07, + "mean_abs": 3.5762786865234375e-07, + "max_relative": 6.167190116308052e-10, + "max_ratio": 6.166126785413002e-06, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 2.9193637693936125e-06, + "mean_abs": 8.154476670036576e-07, + "max_relative": 0.00011010557941086086, + "max_ratio": 0.11242474644896829, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 2.1670270580642637e-05, + "mean_abs": 7.4559687065057905e-06, + "max_relative": 1.1599905319604472e-05, + "max_ratio": 0.09524648915176151, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 5.968497538214046e-08, + "mean_abs": 2.694975855708621e-08, + "max_relative": 9.660968082858098e-06, + "max_ratio": 0.005120813530906574, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "left": 3, + "right": 2, + "metrics": { + "0_energy": { + "max_abs": 8.940696716308594e-07, + "mean_abs": 8.940696716308594e-07, + "max_relative": 1.5415036795113678e-09, + "max_ratio": 1.541237948098774e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 3.652311042046108e-06, + "mean_abs": 9.0165124397359e-07, + "max_relative": 0.0002160905265423494, + "max_ratio": 0.1663773591491956, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 6.3409835576178075e-06, + "mean_abs": 4.535569011082035e-06, + "max_relative": 1.7746769432867446e-05, + "max_ratio": 0.13866027683403492, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 1.636903270568757e-08, + "mean_abs": 1.1799454028468883e-08, + "max_relative": 1.5800162788249333e-05, + "max_ratio": 0.0015716921143921737, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 1.7285346984863281e-06, + "mean_abs": 1.7285346984863281e-06, + "max_relative": 2.9816681616471906e-09, + "max_ratio": 2.9811539219422073e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 2.622570361765497e-06, + "mean_abs": 8.008451883127302e-07, + "max_relative": 8.143111917855028e-05, + "max_ratio": 0.12916177030542228, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 4.341390157813763e-06, + "mean_abs": 2.146065588965524e-06, + "max_relative": 4.4880118389860785e-06, + "max_ratio": 0.038418718898414785, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 1.0661650651742904e-08, + "mean_abs": 5.1139682926727714e-09, + "max_relative": 3.7964741977241034e-06, + "max_ratio": 0.001036753284290047, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 2.9802322387695312e-06, + "mean_abs": 2.9802322387695312e-06, + "max_relative": 5.139325096923377e-09, + "max_ratio": 5.138438987844168e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 3.0200959031390084e-06, + "mean_abs": 8.762374907993661e-07, + "max_relative": 0.0001466117482140252, + "max_ratio": 0.17428169824314738, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 7.230537531155434e-06, + "mean_abs": 3.773210884418078e-06, + "max_relative": 1.8484811674911637e-05, + "max_ratio": 0.1293563947770333, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 1.581117151788769e-08, + "mean_abs": 1.0832932002896705e-08, + "max_relative": 1.694447630166402e-05, + "max_ratio": 0.001351166732180352, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "left": 3, + "right": 5, + "metrics": { + "0_energy": { + "max_abs": 1.2516975402832031e-06, + "mean_abs": 1.2516975402832031e-06, + "max_relative": 2.158105151315915e-09, + "max_ratio": 2.1577331273382837e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 3.021258759616785e-06, + "mean_abs": 9.514052733353382e-07, + "max_relative": 0.00014438667293904412, + "max_ratio": 0.18998665090521874, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 8.03511220237585e-06, + "mean_abs": 3.231909721734816e-06, + "max_relative": 2.24881964015619e-05, + "max_ratio": 0.17570631941403955, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 1.9280515324484465e-08, + "mean_abs": 8.579979346756637e-09, + "max_relative": 1.9592061365366535e-05, + "max_ratio": 0.001909262511515301, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 3.4570693969726562e-06, + "mean_abs": 3.4570693969726562e-06, + "max_relative": 5.963336323294381e-09, + "max_ratio": 5.9623078438844146e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 3.799431247841767e-06, + "mean_abs": 8.736820588846802e-07, + "max_relative": 5.220489665077357e-05, + "max_ratio": 0.10770858027384109, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 1.7284083222435243e-05, + "mean_abs": 7.827526790515904e-06, + "max_relative": 1.542878404516959e-05, + "max_ratio": 0.1309521884652673, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 4.760439320863896e-08, + "mean_abs": 2.509930795161509e-08, + "max_relative": 1.540961840164147e-05, + "max_ratio": 0.004028756813412307, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 1.3709068298339844e-06, + "mean_abs": 1.3709068298339844e-06, + "max_relative": 2.3640895445847535e-09, + "max_ratio": 2.3636819344083173e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 3.6259248403780475e-06, + "mean_abs": 9.17398632047095e-07, + "max_relative": 0.00011741689010772874, + "max_ratio": 0.17111553341544167, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 7.114759327464526e-06, + "mean_abs": 2.628289404103966e-06, + "max_relative": 7.255286860349191e-06, + "max_ratio": 0.05957295186446658, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 1.9595705263303342e-08, + "mean_abs": 8.52400939209285e-09, + "max_relative": 4.731002824113286e-06, + "max_ratio": 0.0016745795854173449, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "left": 4, + "right": 1, + "metrics": { + "0_energy": { + "max_abs": 1.0132789611816406e-06, + "mean_abs": 1.0132789611816406e-06, + "max_relative": 1.747037490160431e-09, + "max_ratio": 1.746736327897405e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 3.290223560270533e-06, + "mean_abs": 8.041648595329363e-07, + "max_relative": 6.517579561001305e-05, + "max_ratio": 0.19868143753148934, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 7.147174594379635e-06, + "mean_abs": 3.3849157402874062e-06, + "max_relative": 7.661087616193025e-06, + "max_ratio": 0.05887465114312625, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 1.9684984461920685e-08, + "mean_abs": 1.170259162649014e-08, + "max_relative": 6.703107127813843e-06, + "max_ratio": 0.0017014994071021157, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 1.6689300537109375e-06, + "mean_abs": 1.6689300537109375e-06, + "max_relative": 2.8788520255419266e-09, + "max_ratio": 2.878355518238011e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 3.3309182398966186e-06, + "mean_abs": 8.264881629869528e-07, + "max_relative": 0.00022356821447730763, + "max_ratio": 0.17257859387711083, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 8.682585519004249e-06, + "mean_abs": 4.844359711252287e-06, + "max_relative": 1.3533537055391348e-05, + "max_ratio": 0.1148659954471302, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 2.3913863972380156e-08, + "mean_abs": 1.5318228923339183e-08, + "max_relative": 1.1449661347607239e-05, + "max_ratio": 0.0020513269486576867, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 3.6954879760742188e-06, + "mean_abs": 3.6954879760742188e-06, + "max_relative": 6.372763083503082e-09, + "max_ratio": 6.371664308257512e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 3.8669147395253844e-06, + "mean_abs": 8.413805578314643e-07, + "max_relative": 7.331934592466621e-05, + "max_ratio": 0.10484243242327972, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 7.916760472070905e-06, + "mean_abs": 3.1147095480206963e-06, + "max_relative": 7.653043425012089e-06, + "max_ratio": 0.052615763883340605, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 2.1804603320824123e-08, + "mean_abs": 1.0092492480195253e-08, + "max_relative": 6.043192585390032e-06, + "max_ratio": 0.001870776870014795, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "left": 4, + "right": 2, + "metrics": { + "0_energy": { + "max_abs": 3.516674041748047e-06, + "mean_abs": 3.516674041748047e-06, + "max_relative": 6.063247759968554e-09, + "max_ratio": 6.0622025497615815e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 2.558920101591866e-06, + "mean_abs": 7.963307079658875e-07, + "max_relative": 0.00015248590797911364, + "max_ratio": 0.20080905567073987, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 3.321078906992625e-06, + "mean_abs": 1.5894322017490698e-06, + "max_relative": 4.0606384140641834e-06, + "max_ratio": 0.03172699898198549, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 9.14702527957112e-09, + "mean_abs": 5.259374560283765e-09, + "max_relative": 3.579800836111131e-06, + "max_ratio": 0.0007849082532307691, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 2.384185791015625e-07, + "mean_abs": 2.384185791015625e-07, + "max_relative": 4.112645750774181e-10, + "max_ratio": 4.11193645462573e-06, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 3.1207533197630255e-06, + "mean_abs": 8.403453724640612e-07, + "max_relative": 5.225748720673966e-05, + "max_ratio": 0.09793277618149758, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 1.3544191451941856e-05, + "mean_abs": 5.322241773581599e-06, + "max_relative": 6.953803036106228e-06, + "max_ratio": 0.059020454491416074, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 3.7303859695692054e-08, + "mean_abs": 1.800687441469642e-08, + "max_relative": 5.245679212741918e-06, + "max_ratio": 0.0031999183725013947, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 6.318092346191406e-06, + "mean_abs": 6.318092346191406e-06, + "max_relative": 1.0895369142763335e-08, + "max_ratio": 0.00010893490591537036, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 3.2605700186483233e-06, + "mean_abs": 8.368412163934266e-07, + "max_relative": 9.9140822278612e-05, + "max_ratio": 0.18383399529031766, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 8.555791906061927e-06, + "mean_abs": 3.5528820367762095e-06, + "max_relative": 1.2385105362876509e-05, + "max_ratio": 0.07905172709619647, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 2.3564644811846502e-08, + "mean_abs": 1.2046217676061352e-08, + "max_relative": 7.646050185409828e-06, + "max_ratio": 0.0020068943337864928, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "left": 4, + "right": 5, + "metrics": { + "0_energy": { + "max_abs": 3.159046173095703e-06, + "mean_abs": 3.159046173095703e-06, + "max_relative": 5.446646292853109e-09, + "max_ratio": 5.445707375209556e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 3.391698790267128e-06, + "mean_abs": 8.152480790116906e-07, + "max_relative": 0.00012070849007633732, + "max_ratio": 0.1695978442400181, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 8.361368086795551e-06, + "mean_abs": 2.466124053012041e-06, + "max_relative": 8.67610953561439e-06, + "max_ratio": 0.06667498764916598, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 2.3029156307613485e-08, + "mean_abs": 7.685625896987347e-09, + "max_relative": 7.463206617115103e-06, + "max_ratio": 0.00197613697331279, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 4.947185516357422e-06, + "mean_abs": 4.947185516357422e-06, + "max_relative": 8.533739932856425e-09, + "max_ratio": 8.53226814334839e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 2.4330501062763688e-06, + "mean_abs": 7.706839581742934e-07, + "max_relative": 7.449196392872802e-05, + "max_ratio": 0.1483188708243597, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 5.012745159405085e-06, + "mean_abs": 2.3900289757541572e-06, + "max_relative": 7.4032950267375415e-06, + "max_ratio": 0.06283557446679792, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 1.3806268378546704e-08, + "mean_abs": 6.1582937833767086e-09, + "max_relative": 6.36756999940558e-06, + "max_ratio": 0.0011684239617101707, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 1.9669532775878906e-06, + "mean_abs": 1.9669532775878906e-06, + "max_relative": 3.391954544445189e-09, + "max_ratio": 3.391369712459643e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 3.877306451016693e-06, + "mean_abs": 9.560547285213568e-07, + "max_relative": 0.00019851866611915524, + "max_ratio": 0.15325354178747644, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 9.7089112731652e-06, + "mean_abs": 3.5839522669056656e-06, + "max_relative": 9.134154947116843e-06, + "max_ratio": 0.06028569288529424, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 2.6740604286423775e-08, + "mean_abs": 1.2054285844509145e-08, + "max_relative": 6.102959975844337e-06, + "max_ratio": 0.002294272601670486, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + } + ], + "fresh_TORCH_reference": [ + { + "run": 0, + "arm": "BASE", + "metrics": { + "0_energy": { + "max_abs": 2.5033950805664062e-06, + "mean_abs": 2.5033950805664062e-06, + "max_relative": 4.316210277348705e-09, + "max_ratio": 4.315466229402158e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 3.925824630712782e-06, + "mean_abs": 1.1316701976644278e-06, + "max_relative": 9.947909213479234e-05, + "max_ratio": 0.21011716865236335, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 2.2983075097293693e-05, + "mean_abs": 5.13236174452351e-06, + "max_relative": 9.967756171134278e-06, + "max_ratio": 0.07660105918536045, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 6.3300744965189e-08, + "mean_abs": 1.6542216766132132e-08, + "max_relative": 7.027449006800764e-06, + "max_ratio": 0.005445401060680373, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 3.5762786865234375e-07, + "mean_abs": 3.5762786865234375e-07, + "max_relative": 6.168968624258463e-10, + "max_ratio": 6.167904680036443e-06, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 4.9024780111039945e-06, + "mean_abs": 1.3303387125287076e-06, + "max_relative": 0.00020759325003847186, + "max_ratio": 0.3528409108417077, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 1.358681530039263e-05, + "mean_abs": 7.393902649082622e-06, + "max_relative": 1.1642783076590821e-05, + "max_ratio": 0.10568174873739804, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 3.742125570874166e-08, + "mean_abs": 2.198987547199673e-08, + "max_relative": 1.0526286743058509e-05, + "max_ratio": 0.0031669581966787728, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 5.364418029785156e-07, + "mean_abs": 5.364418029785156e-07, + "max_relative": 9.250785157346674e-10, + "max_ratio": 9.249190161009998e-06, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 4.306604660442304e-06, + "mean_abs": 1.1957265343125884e-06, + "max_relative": 0.00022402680904011062, + "max_ratio": 0.2988872331978788, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 8.136632175137493e-06, + "mean_abs": 3.7477703602492894e-06, + "max_relative": 3.869418065681748e-05, + "max_ratio": 0.24697450699171744, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 2.2410181231558024e-08, + "mean_abs": 1.1691497407043304e-08, + "max_relative": 3.6568041555416964e-05, + "max_ratio": 0.0019085744922526034, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "run": 1, + "arm": "FIXED", + "metrics": { + "0_energy": { + "max_abs": 0.0, + "mean_abs": 0.0, + "max_relative": 0.0, + "max_ratio": 0.0, + "finite": true, + "passed": true, + "bitwise_equal": true + }, + "0_forces": { + "max_abs": 4.527575256929595e-06, + "mean_abs": 1.067519477960498e-06, + "max_relative": 0.00018370823246949622, + "max_ratio": 0.25518220696062394, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 1.6043919504049597e-05, + "mean_abs": 5.64965593369271e-06, + "max_relative": 6.79372359959658e-06, + "max_ratio": 0.053081286935481586, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 4.418869330863329e-08, + "mean_abs": 2.0680690620395424e-08, + "max_relative": 4.462850166656916e-06, + "max_ratio": 0.0038195128645091784, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 1.4901161193847656e-06, + "mean_abs": 1.4901161193847656e-06, + "max_relative": 2.570403593441026e-09, + "max_ratio": 2.569960283348518e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 4.097163397887016e-06, + "mean_abs": 1.3121784282338345e-06, + "max_relative": 0.00015755771831217906, + "max_ratio": 0.26779680374534254, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 9.584862855405163e-06, + "mean_abs": 6.71797738392864e-06, + "max_relative": 1.708047396272216e-05, + "max_ratio": 0.14497060260767908, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 2.407962315415131e-08, + "mean_abs": 1.855203801638585e-08, + "max_relative": 1.5579828714062066e-05, + "max_ratio": 0.00237131216706514, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 1.430511474609375e-06, + "mean_abs": 1.430511474609375e-06, + "max_relative": 2.466876041959113e-09, + "max_ratio": 2.466450709602666e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 4.6781486453539856e-06, + "mean_abs": 1.1865757921445304e-06, + "max_relative": 0.00017814919080574304, + "max_ratio": 0.25958145708885877, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 1.5851051300863617e-05, + "mean_abs": 5.758438917282918e-06, + "max_relative": 2.387734981019379e-05, + "max_ratio": 0.1524032736709229, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 4.3657489328524646e-08, + "mean_abs": 2.0098080416508528e-08, + "max_relative": 2.3294692249107447e-05, + "max_ratio": 0.0037181123020493963, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "run": 2, + "arm": "FIXED", + "metrics": { + "0_energy": { + "max_abs": 2.5033950805664062e-06, + "mean_abs": 2.5033950805664062e-06, + "max_relative": 4.316210277348705e-09, + "max_ratio": 4.315466229402158e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 4.120793080986118e-06, + "mean_abs": 1.206645155507266e-06, + "max_relative": 0.0002158360388633338, + "max_ratio": 0.19977655642001657, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 1.2800878155694306e-05, + "mean_abs": 4.861094871343328e-06, + "max_relative": 1.0350732105010215e-05, + "max_ratio": 0.07954446020100742, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 3.5256601655514475e-08, + "mean_abs": 1.5474512483416077e-08, + "max_relative": 7.793401669671431e-06, + "max_ratio": 0.0030329238013944862, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 4.172325134277344e-07, + "mean_abs": 4.172325134277344e-07, + "max_relative": 7.197130061634873e-10, + "max_ratio": 7.19588879337585e-06, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 5.5258943802982685e-06, + "mean_abs": 1.2796234949522904e-06, + "max_relative": 0.00017503752070820261, + "max_ratio": 0.2975067745541382, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 1.3362219120516272e-05, + "mean_abs": 5.676467307091926e-06, + "max_relative": 1.1252196638502153e-05, + "max_ratio": 0.09550307157189585, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 3.680266548802824e-08, + "mean_abs": 1.7130493982062758e-08, + "max_relative": 9.375820956005566e-06, + "max_ratio": 0.0031569260099769993, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 4.0531158447265625e-06, + "mean_abs": 4.0531158447265625e-06, + "max_relative": 6.989482118884153e-09, + "max_ratio": 6.988277010540888e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 4.373390538603417e-06, + "mean_abs": 1.1224270012547694e-06, + "max_relative": 0.00016574727123934367, + "max_ratio": 0.24151060121135348, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 7.394178226149961e-06, + "mean_abs": 3.0288296546202944e-06, + "max_relative": 1.2151915972206826e-05, + "max_ratio": 0.07756239840968897, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 2.0365290030743832e-08, + "mean_abs": 8.773099016806009e-09, + "max_relative": 1.0969876180184622e-05, + "max_ratio": 0.0017472876572367502, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "run": 3, + "arm": "BASE", + "metrics": { + "0_energy": { + "max_abs": 3.3974647521972656e-06, + "mean_abs": 3.3974647521972656e-06, + "max_relative": 5.8577139478303855e-09, + "max_ratio": 5.856704168474357e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 4.454404965770209e-06, + "mean_abs": 1.0822716146284088e-06, + "max_relative": 0.0001413014023672787, + "max_ratio": 0.1359720688692467, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 1.5614621201365253e-05, + "mean_abs": 4.717924652416124e-06, + "max_relative": 1.4614767888090017e-05, + "max_ratio": 0.11418947235887897, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 4.300630573883524e-08, + "mean_abs": 1.5187287509142635e-08, + "max_relative": 1.0441262706847604e-05, + "max_ratio": 0.003699586521690765, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 1.3113021850585938e-06, + "mean_abs": 1.3113021850585938e-06, + "max_relative": 2.261955162228103e-09, + "max_ratio": 2.261565049346696e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 6.283628756875714e-06, + "mean_abs": 1.2897524341905682e-06, + "max_relative": 0.00018531713913155803, + "max_ratio": 0.31497877774754524, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 1.313115274559351e-05, + "mean_abs": 7.1632861239222396e-06, + "max_relative": 1.574027912004727e-05, + "max_ratio": 0.13359569261523305, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 3.6166254845093615e-08, + "mean_abs": 1.95208834053564e-08, + "max_relative": 1.31723451621982e-05, + "max_ratio": 0.0031369967263049567, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 1.0728836059570312e-06, + "mean_abs": 1.0728836059570312e-06, + "max_relative": 1.8501570314693347e-09, + "max_ratio": 1.8498380322019996e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 4.250479454626088e-06, + "mean_abs": 1.2169380960256927e-06, + "max_relative": 0.00018613188063891704, + "max_ratio": 0.2712130465954496, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 1.2961817044576662e-05, + "mean_abs": 4.329289229745539e-06, + "max_relative": 2.8273183491474522e-05, + "max_ratio": 0.18046080303936543, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 3.5699864859434216e-08, + "mean_abs": 1.3419665789574705e-08, + "max_relative": 2.791482548394752e-05, + "max_ratio": 0.0030629533456062973, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "run": 4, + "arm": "BASE", + "metrics": { + "0_energy": { + "max_abs": 1.0132789611816406e-06, + "mean_abs": 1.0132789611816406e-06, + "max_relative": 1.747037493212571e-09, + "max_ratio": 1.7467363309484924e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 4.4901413449593974e-06, + "mean_abs": 1.2040938136605635e-06, + "max_relative": 0.00019091663067145355, + "max_ratio": 0.24448377220469686, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 1.581789891780261e-05, + "mean_abs": 5.753449204812553e-06, + "max_relative": 1.1646427203480092e-05, + "max_ratio": 0.09099683481350862, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 4.3566179941390004e-08, + "mean_abs": 1.9293950867689796e-08, + "max_relative": 8.93856794215537e-06, + "max_ratio": 0.0037477492973123777, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 1.7881393432617188e-07, + "mean_abs": 1.7881393432617188e-07, + "max_relative": 3.0844843121292315e-10, + "max_ratio": 3.0839523400182213e-06, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 4.911470574242571e-06, + "mean_abs": 1.3792238902863667e-06, + "max_relative": 0.00016551912435531406, + "max_ratio": 0.24192221213347356, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 1.6719993588765192e-05, + "mean_abs": 6.72102709838492e-06, + "max_relative": 1.0394280153489983e-05, + "max_ratio": 0.09474438335605129, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 4.6050758893689814e-08, + "mean_abs": 2.016729100399207e-08, + "max_relative": 9.478766625211287e-06, + "max_ratio": 0.0038972724345960473, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 2.2649765014648438e-06, + "mean_abs": 2.2649765014648438e-06, + "max_relative": 3.905887066435262e-09, + "max_ratio": 3.905213623537555e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 4.688271758368501e-06, + "mean_abs": 1.1938721353818803e-06, + "max_relative": 0.0001738727830055782, + "max_ratio": 0.253350296774, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 1.3530556705276808e-05, + "mean_abs": 3.4256812905500113e-06, + "max_relative": 2.2173229172746646e-05, + "max_ratio": 0.1415262891671298, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 3.726630642617024e-08, + "mean_abs": 1.0612924193336926e-08, + "max_relative": 1.8616068704990023e-05, + "max_ratio": 0.0031738039568059723, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + }, + { + "run": 5, + "arm": "FIXED", + "metrics": { + "0_energy": { + "max_abs": 2.1457672119140625e-06, + "mean_abs": 2.1457672119140625e-06, + "max_relative": 3.6996088091560327e-09, + "max_ratio": 3.6989710537732785e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_forces": { + "max_abs": 3.836393950518158e-06, + "mean_abs": 1.1824680998002758e-06, + "max_relative": 0.00012974215508172618, + "max_ratio": 0.2060756186204351, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_virial": { + "max_abs": 1.7140533647541645e-05, + "mean_abs": 4.038336444029462e-06, + "max_relative": 1.0428096054443312e-05, + "max_ratio": 0.08147766843054059, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "0_stress": { + "max_abs": 4.7209024224559304e-08, + "mean_abs": 1.3809508221095315e-08, + "max_relative": 9.150594092659245e-06, + "max_ratio": 0.004061122356892835, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_energy": { + "max_abs": 4.76837158203125e-06, + "mean_abs": 4.76837158203125e-06, + "max_relative": 8.225291499011284e-09, + "max_ratio": 8.223872906715258e-05, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_forces": { + "max_abs": 4.8009702418028155e-06, + "mean_abs": 1.272185179419331e-06, + "max_relative": 0.00015651893489550722, + "max_ratio": 0.26603121027427434, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_virial": { + "max_abs": 2.1732738748170277e-05, + "mean_abs": 6.43367546914063e-06, + "max_relative": 6.218779005804291e-06, + "max_ratio": 0.056684480551665306, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "1_stress": { + "max_abs": 5.985702727223652e-08, + "mean_abs": 2.085710104601472e-08, + "max_relative": 6.122652883739036e-06, + "max_ratio": 0.005065695940939568, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_energy": { + "max_abs": 2.980232238769531e-07, + "mean_abs": 2.980232238769531e-07, + "max_relative": 5.139325087414818e-10, + "max_ratio": 5.138438978338888e-06, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_forces": { + "max_abs": 5.123225150782673e-06, + "mean_abs": 1.265274831119383e-06, + "max_relative": 8.433965946043052e-05, + "max_ratio": 0.21632957633965655, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_virial": { + "max_abs": 8.91721820917013e-06, + "mean_abs": 3.827077020185982e-06, + "max_relative": 2.5245116688026845e-05, + "max_ratio": 0.16113339453682496, + "finite": true, + "passed": true, + "bitwise_equal": false + }, + "2_stress": { + "max_abs": 2.4560097084541654e-08, + "mean_abs": 1.1748530601056448e-08, + "max_relative": 2.4719142293956574e-05, + "max_ratio": 0.0021071909327867564, + "finite": true, + "passed": true, + "bitwise_equal": false + } + } + } + ] + }, + "source_sha256": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "2bf062b9bbb84e2fa4c3fd2132f3ca68e4c9cb91a093a70a600f1c1eb045b3a6", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474", + "source/tests/pt_expt/kernels/test_so2_edge_cohort.py": "e950f552d1b7012e58e7ff2190e1eeec565d9572a63d65111a527331a14c9737" + }, + "time_change_percent": 1.2845048345455856, + "first_alloc_reduction_percent": 3.621617066407956, + "first_reserved_reduction_percent": 3.9682539682539653, + "steady_alloc_reduction_percent": 4.538675335313314, + "monitor": { + "samples": 3242, + "max_temperature_c": 46, + "sm_mhz_range": [ + 172, + 2902 + ], + "sampled_device_memory_peak_bytes": 1816068096, + "scope": "250 ms samples over each whole process, including compilation and idle; no foreign compute process detected" + } + }, + "runs": [ + { + "run": 0, + "arm": "BASE", + "status": "completed", + "n_atoms": 64, + "first_ms": 124931.33242195472, + "wall_ms": { + "median": 12.157610966823995, + "p90": 12.462712894193828, + "min": 12.077634921297431, + "max": 12.85580382682383, + "samples": [ + 12.30828114785254, + 12.720479164272547, + 12.85580382682383, + 12.233138782903552, + 12.471918947994709, + 12.312327977269888, + 12.269356986507773, + 12.151514878496528, + 12.147377012297511, + 12.461689999327064, + 12.172183021903038, + 12.12242990732193, + 12.155541917309165, + 12.13379087857902, + 12.17744406312704, + 12.159680016338825, + 12.122099054977298, + 12.16399809345603, + 12.206007959321141, + 12.209655018523335, + 12.141965795308352, + 12.086872942745686, + 12.12665787898004, + 12.140112929046154, + 12.153697898611426, + 12.288042111322284, + 12.118241982534528, + 12.142166960984468, + 12.125856010243297, + 12.077634921297431 + ] + }, + "event_elapsed_ms": { + "median": 12.128463745117188, + "p90": 12.437004661560058, + "min": 12.052000045776367, + "max": 12.829216003417969, + "samples": [ + 12.269599914550781, + 12.694144248962402, + 12.829216003417969, + 12.198111534118652, + 12.44604778289795, + 12.286272048950195, + 12.243552207946777, + 12.12559986114502, + 12.121312141418457, + 12.435999870300293, + 12.146592140197754, + 12.096575736999512, + 12.12940788269043, + 12.108575820922852, + 12.151904106140137, + 12.126655578613281, + 12.096447944641113, + 12.137984275817871, + 12.179967880249023, + 12.184096336364746, + 12.116031646728516, + 12.060064315795898, + 12.100383758544922, + 12.114336013793945, + 12.127519607543945, + 12.261695861816406, + 12.091520309448242, + 12.115936279296875, + 12.100288391113281, + 12.052000045776367 + ] + }, + "memory": { + "before": { + "allocated": 5105152, + "reserved": 10485760 + }, + "first": { + "allocated": 498199552, + "reserved": 528482304 + }, + "complete": { + "allocated": 498199552, + "reserved": 528482304 + }, + "steady": { + "allocated": 397536256, + "reserved": 528482304 + } + }, + "finite": true, + "precision_pass": true, + "repeat_noise": [ + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 1.9669532775878906e-06, + "mean_abs": 1.9669532775878906e-06, + "max_relative": 3.3913080896972957e-09, + "max_ratio": 3.3907234805913915e-05, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 3.2472080135903525e-06, + "mean_abs": 9.086119398717349e-07, + "max_relative": 0.00018046946259340423, + "max_ratio": 0.25613949444882667, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 1.4868033937354141e-05, + "mean_abs": 6.87211094825403e-06, + "max_relative": 2.0866547746516262e-05, + "max_ratio": 0.16035772450332592, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 4.0950030418679395e-08, + "mean_abs": 2.4099972201197233e-08, + "max_relative": 1.760091727443201e-05, + "max_ratio": 0.003522698834367644, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 7.748603820800781e-07, + "mean_abs": 7.748603820800781e-07, + "max_relative": 1.336609867764783e-09, + "max_ratio": 1.3363793465169632e-05, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 3.4381458107191065e-06, + "mean_abs": 9.57708538940986e-07, + "max_relative": 0.0002881588388941582, + "max_ratio": 0.22048259242000248, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 8.837183596455134e-06, + "mean_abs": 3.2278098796640406e-06, + "max_relative": 3.31957329098556e-06, + "max_ratio": 0.0281749405332579, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 2.4339663107914022e-08, + "mean_abs": 1.1119843221349054e-08, + "max_relative": 2.4972382310130556e-06, + "max_ratio": 0.002074957801518164, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 1.1324882507324219e-06, + "mean_abs": 1.1324882507324219e-06, + "max_relative": 1.9529435350242573e-09, + "max_ratio": 1.9526068135747806e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 3.0112414037830604e-06, + "mean_abs": 8.47281389920046e-07, + "max_relative": 0.00031869762431633333, + "max_ratio": 0.22389208582286926, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 4.162781728545006e-06, + "mean_abs": 2.0412725297970347e-06, + "max_relative": 2.3590569982844715e-05, + "max_ratio": 0.15057470416519836, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 1.0359651938379733e-08, + "mean_abs": 5.7499078493749465e-09, + "max_relative": 2.05692886172861e-05, + "max_ratio": 0.0009948512161845266, + "bitwise_equal": false + } + }, + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 5.960464477539062e-07, + "mean_abs": 5.960464477539062e-07, + "max_relative": 1.0276691180900896e-09, + "max_ratio": 1.0274919638155731e-05, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 3.5522310923852274e-06, + "mean_abs": 8.616659386452332e-07, + "max_relative": 0.00011671996665938881, + "max_ratio": 0.18674204523360033, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 1.8787712357415387e-05, + "mean_abs": 8.5284128733666e-06, + "max_relative": 1.3903422899363783e-05, + "max_ratio": 0.10684667564722757, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 5.174573826025042e-08, + "mean_abs": 2.958305038261025e-08, + "max_relative": 1.367745887868352e-05, + "max_ratio": 0.00445139234303787, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 5.960464477539062e-07, + "mean_abs": 5.960464477539062e-07, + "max_relative": 1.0281614367421408e-09, + "max_ratio": 1.0279841127053563e-05, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 3.3015296452276743e-06, + "mean_abs": 9.65899596495438e-07, + "max_relative": 0.0003250100860081021, + "max_ratio": 0.248679050070836, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 1.0974315697964698e-05, + "mean_abs": 4.4703845860391865e-06, + "max_relative": 5.636302303914145e-06, + "max_ratio": 0.04783822145800495, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 3.02258229695207e-08, + "mean_abs": 1.5748254031707164e-08, + "max_relative": 3.342210486846823e-06, + "max_ratio": 0.0025927652648572246, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 2.562999725341797e-06, + "mean_abs": 2.562999725341797e-06, + "max_relative": 4.419819579265424e-09, + "max_ratio": 4.419057525458714e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 3.5791410368801735e-06, + "mean_abs": 9.350705137221166e-07, + "max_relative": 0.00033143966601398425, + "max_ratio": 0.23284365017622433, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 8.807908145946897e-06, + "mean_abs": 4.18877440017118e-06, + "max_relative": 1.203522953124509e-05, + "max_ratio": 0.0768186955334506, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 2.425903169317456e-08, + "mean_abs": 1.3138067292675911e-08, + "max_relative": 1.0916529056499548e-05, + "max_ratio": 0.0020813606593784754, + "bitwise_equal": false + } + }, + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 5.960464477539063e-08, + "mean_abs": 5.960464477539063e-08, + "max_relative": 1.0276691180900896e-10, + "max_ratio": 1.0274919638155732e-06, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 3.862759925254977e-06, + "mean_abs": 9.054389725245369e-07, + "max_relative": 0.00017714111412548637, + "max_ratio": 0.24822438249525894, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 1.8602137436651844e-05, + "mean_abs": 6.575257495194325e-06, + "max_relative": 1.6520854282879152e-05, + "max_ratio": 0.1290823255605453, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 5.12346216841042e-08, + "mean_abs": 2.3314165421019016e-08, + "max_relative": 1.631586062223091e-05, + "max_ratio": 0.00442853766536586, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 8.344650268554688e-07, + "mean_abs": 8.344650268554688e-07, + "max_relative": 1.4394260114389972e-09, + "max_ratio": 1.4391777577874988e-05, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 3.229503974466752e-06, + "mean_abs": 7.989976509997776e-07, + "max_relative": 0.0002994390146746574, + "max_ratio": 0.22911353502298576, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 3.950119011553177e-06, + "mean_abs": 2.412937835871709e-06, + "max_relative": 7.0391372774856934e-06, + "max_ratio": 0.05974480959259562, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 1.0047790039878143e-08, + "mean_abs": 6.1546335728595095e-09, + "max_relative": 6.500982136492226e-06, + "max_ratio": 0.0009894857076380235, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 8.940696716308594e-07, + "mean_abs": 8.940696716308594e-07, + "max_relative": 1.5417975276507295e-09, + "max_ratio": 1.5415316949274583e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 3.5413705319342625e-06, + "mean_abs": 9.303543591227444e-07, + "max_relative": 0.00027089951508552947, + "max_ratio": 0.19031286352075447, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 8.079219341539101e-06, + "mean_abs": 3.1017506052684793e-06, + "max_relative": 8.632980035629049e-06, + "max_ratio": 0.07088534903314236, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 2.225205290862231e-08, + "mean_abs": 9.712742385372262e-09, + "max_relative": 5.794325184387772e-06, + "max_ratio": 0.0018951070514409266, + "bitwise_equal": false + } + } + ] + }, + { + "run": 1, + "arm": "FIXED", + "status": "completed", + "n_atoms": 64, + "first_ms": 124219.04061594978, + "wall_ms": { + "median": 12.398104998283088, + "p90": 12.507841410115361, + "min": 12.301146984100342, + "max": 12.588670011609793, + "samples": [ + 12.507717125117779, + 12.371439952403307, + 12.403219006955624, + 12.423819163814187, + 12.397339101880789, + 12.340521905571222, + 12.43073190562427, + 12.466670013964176, + 12.451761169359088, + 12.378974119201303, + 12.508959975093603, + 12.417846824973822, + 12.401136104017496, + 12.301146984100342, + 12.357622850686312, + 12.374595971778035, + 12.417035875841975, + 12.403189903125167, + 12.350850971415639, + 12.398870894685388, + 12.363173998892307, + 12.449918081983924, + 12.588670011609793, + 12.385715963318944, + 12.34121317975223, + 12.388502014800906, + 12.509260093793273, + 12.357803992927074, + 12.371790129691362, + 12.347134063020349 + ] + }, + "event_elapsed_ms": { + "median": 12.367520332336426, + "p90": 12.47305612564087, + "min": 12.275168418884277, + "max": 12.562368392944336, + "samples": [ + 12.472000122070312, + 12.345279693603516, + 12.367744445800781, + 12.397695541381836, + 12.37183952331543, + 12.315008163452148, + 12.404352188110352, + 12.44057559967041, + 12.42518424987793, + 12.342623710632324, + 12.482560157775879, + 12.391488075256348, + 12.36729621887207, + 12.275168418884277, + 12.331904411315918, + 12.348992347717285, + 12.391231536865234, + 12.376640319824219, + 12.325216293334961, + 12.373023986816406, + 12.334400177001953, + 12.424192428588867, + 12.562368392944336, + 12.360128402709961, + 12.314784049987793, + 12.362655639648438, + 12.48310375213623, + 12.332480430603027, + 12.33903980255127, + 12.321056365966797 + ] + }, + "memory": { + "before": { + "allocated": 5105152, + "reserved": 10485760 + }, + "first": { + "allocated": 480156672, + "reserved": 507510784 + }, + "complete": { + "allocated": 480156672, + "reserved": 507510784 + }, + "steady": { + "allocated": 379493376, + "reserved": 507510784 + } + }, + "finite": true, + "precision_pass": true, + "repeat_noise": [ + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 3.159046173095703e-06, + "mean_abs": 3.159046173095703e-06, + "max_relative": 5.446646302368604e-09, + "max_ratio": 5.4457073847217706e-05, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 3.1636909980647943e-06, + "mean_abs": 7.96394071748858e-07, + "max_relative": 0.00014595640502068608, + "max_ratio": 0.10909625746085425, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 6.467106907770415e-06, + "mean_abs": 2.3535028535409056e-06, + "max_relative": 6.74490231331375e-06, + "max_ratio": 0.052699910686379976, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 1.781191956429229e-08, + "mean_abs": 6.819793128531668e-09, + "max_relative": 5.469390445885312e-06, + "max_ratio": 0.001532257917230382, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 0.0, + "mean_abs": 0.0, + "max_relative": 0.0, + "max_ratio": 0.0, + "bitwise_equal": true + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 3.0790839034011697e-06, + "mean_abs": 8.704951882931855e-07, + "max_relative": 0.0001609382102145368, + "max_ratio": 0.18178804931306822, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 1.1611256943822035e-05, + "mean_abs": 4.979022273859317e-06, + "max_relative": 2.0691207318763643e-05, + "max_ratio": 0.1756171725308677, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 3.169781435745887e-08, + "mean_abs": 1.2235066751228584e-08, + "max_relative": 2.0508577780209694e-05, + "max_ratio": 0.0031215353558468896, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 2.2649765014648438e-06, + "mean_abs": 2.2649765014648438e-06, + "max_relative": 3.905887076070601e-09, + "max_ratio": 3.905213633169572e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 2.9753927925924017e-06, + "mean_abs": 7.886328368521961e-07, + "max_relative": 4.9940103418234445e-05, + "max_ratio": 0.11074049048212564, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 2.280334225268632e-05, + "mean_abs": 6.932224802500306e-06, + "max_relative": 3.0009057241043987e-05, + "max_ratio": 0.1915421141920729, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 6.280571882705255e-08, + "mean_abs": 2.5540199302667e-08, + "max_relative": 2.569587474687198e-05, + "max_ratio": 0.005388562331391321, + "bitwise_equal": false + } + }, + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 5.364418029785156e-07, + "mean_abs": 5.364418029785156e-07, + "max_relative": 9.249022022890082e-10, + "max_ratio": 9.247427634433196e-06, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 2.990632353316869e-06, + "mean_abs": 7.957689285205868e-07, + "max_relative": 0.0002651763011623085, + "max_ratio": 0.15349091978470727, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 5.303985849636206e-06, + "mean_abs": 2.787250357029326e-06, + "max_relative": 1.0835452811799306e-05, + "max_ratio": 0.08326923750940592, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 1.4608413111127927e-08, + "mean_abs": 6.980488893078979e-09, + "max_relative": 9.984028456785468e-06, + "max_ratio": 0.0012535509348947788, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 1.1920928955078125e-07, + "mean_abs": 1.1920928955078125e-07, + "max_relative": 2.0563228694672411e-10, + "max_ratio": 2.0559682213950576e-06, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 2.6453553978456057e-06, + "mean_abs": 8.643875422746176e-07, + "max_relative": 0.0002575738113708474, + "max_ratio": 0.19710720880902646, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 7.519411159506717e-06, + "mean_abs": 2.981587394880315e-06, + "max_relative": 7.10441447810012e-06, + "max_ratio": 0.06029889364115624, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 2.071021071303747e-08, + "mean_abs": 8.609019121717798e-09, + "max_relative": 6.894680777532616e-06, + "max_ratio": 0.001765546498492741, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 7.748603820800781e-07, + "mean_abs": 7.748603820800781e-07, + "max_relative": 1.3362245260241532e-09, + "max_ratio": 1.3359941376632745e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 3.1974552250346733e-06, + "mean_abs": 7.739347731184945e-07, + "max_relative": 6.84882826521186e-05, + "max_ratio": 0.13918149345119568, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 1.7802545383638346e-05, + "mean_abs": 4.362613464012652e-06, + "max_relative": 2.46031560780845e-05, + "max_ratio": 0.15703727355181346, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 4.903235882591783e-08, + "mean_abs": 1.545427646340761e-08, + "max_relative": 2.284328599208962e-05, + "max_ratio": 0.004206844961303074, + "bitwise_equal": false + } + }, + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 7.152557373046875e-07, + "mean_abs": 7.152557373046875e-07, + "max_relative": 1.2332029363853443e-09, + "max_ratio": 1.2329903512577594e-05, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 3.4228048955142754e-06, + "mean_abs": 7.863306853405269e-07, + "max_relative": 0.00013088189286850622, + "max_ratio": 0.1390238705982766, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 9.792460804902703e-06, + "mean_abs": 3.3164386323959583e-06, + "max_relative": 1.1872735985570117e-05, + "max_ratio": 0.09124088693985201, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 2.697071916496485e-08, + "mean_abs": 9.511418680260552e-09, + "max_relative": 9.203742205342233e-06, + "max_ratio": 0.00231436296104415, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 1.4901161193847656e-06, + "mean_abs": 1.4901161193847656e-06, + "max_relative": 2.5704035868340516e-09, + "max_ratio": 2.5699602767438223e-05, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 2.5334713882330107e-06, + "mean_abs": 6.902550626399403e-07, + "max_relative": 7.382360167266479e-05, + "max_ratio": 0.11041073973751817, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 9.716531373271664e-06, + "mean_abs": 4.5390762410452764e-06, + "max_relative": 1.4399999524329939e-05, + "max_ratio": 0.12222035220874042, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 2.67615918175812e-08, + "mean_abs": 1.3552713361033737e-08, + "max_relative": 1.3349641734147784e-05, + "max_ratio": 0.0022814270401352527, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 4.5299530029296875e-06, + "mean_abs": 4.5299530029296875e-06, + "max_relative": 7.811774152141202e-09, + "max_ratio": 7.810427266339144e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 2.8646219973893494e-06, + "mean_abs": 7.015759708745248e-07, + "max_relative": 5.732217333753957e-05, + "max_ratio": 0.09528239944255006, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 2.1871057589883947e-05, + "mean_abs": 7.662054952043787e-06, + "max_relative": 1.5763068948032005e-05, + "max_ratio": 0.10938039568129745, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 6.02379895998928e-08, + "mean_abs": 2.6873931956725508e-08, + "max_relative": 1.2981430620981175e-05, + "max_ratio": 0.005168258046222853, + "bitwise_equal": false + } + } + ] + }, + { + "run": 2, + "arm": "FIXED", + "status": "completed", + "n_atoms": 64, + "first_ms": 125799.81218092144, + "wall_ms": { + "median": 12.254007975570858, + "p90": 12.347013526596129, + "min": 12.185728875920177, + "max": 12.451760936528444, + "samples": [ + 12.451760936528444, + 12.291829101741314, + 12.292080093175173, + 12.296758824959397, + 12.297330191358924, + 12.262884993106127, + 12.228679843246937, + 12.22724700346589, + 12.345089809969068, + 12.34573102556169, + 12.317137094214559, + 12.26913696154952, + 12.233559042215347, + 12.193053029477596, + 12.214985210448503, + 12.20905315130949, + 12.282682117074728, + 12.232027016580105, + 12.286479119211435, + 12.244370067492127, + 12.228438863530755, + 12.36017793416977, + 12.21710816025734, + 12.358556035906076, + 12.31890101917088, + 12.245130958035588, + 12.185728875920177, + 12.211597990244627, + 12.244248995557427, + 12.235753936693072 + ] + }, + "event_elapsed_ms": { + "median": 12.227823734283447, + "p90": 12.321485042572021, + "min": 12.159104347229004, + "max": 12.415360450744629, + "samples": [ + 12.415360450744629, + 12.264800071716309, + 12.26473617553711, + 12.271455764770508, + 12.270751953125, + 12.23641586303711, + 12.203200340270996, + 12.20150375366211, + 12.319328308105469, + 12.320256233215332, + 12.292032241821289, + 12.241344451904297, + 12.2074556350708, + 12.167360305786133, + 12.189151763916016, + 12.182751655578613, + 12.256511688232422, + 12.206239700317383, + 12.259424209594727, + 12.218527793884277, + 12.20297622680664, + 12.33459186553955, + 12.191679954528809, + 12.332544326782227, + 12.293343544006348, + 12.219231605529785, + 12.159104347229004, + 12.18569564819336, + 12.217984199523926, + 12.209759712219238 + ] + }, + "memory": { + "before": { + "allocated": 5105152, + "reserved": 10485760 + }, + "first": { + "allocated": 480156672, + "reserved": 507510784 + }, + "complete": { + "allocated": 480156672, + "reserved": 507510784 + }, + "steady": { + "allocated": 379493376, + "reserved": 507510784 + } + }, + "finite": true, + "precision_pass": true, + "repeat_noise": [ + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 7.152557373046875e-07, + "mean_abs": 7.152557373046875e-07, + "max_relative": 1.2332029417081074e-09, + "max_ratio": 1.2329903565786877e-05, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 3.2385857338113055e-06, + "mean_abs": 9.092064427145228e-07, + "max_relative": 0.00022596061167403088, + "max_ratio": 0.14011150322171637, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 9.258415912150042e-06, + "mean_abs": 3.9971433023601304e-06, + "max_relative": 1.444438783499084e-05, + "max_ratio": 0.11285828100964093, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 2.549983507335596e-08, + "mean_abs": 1.2216466218457293e-08, + "max_relative": 1.3320334276970815e-05, + "max_ratio": 0.0022041143435479658, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 1.1324882507324219e-06, + "mean_abs": 1.1324882507324219e-06, + "max_relative": 1.953506732421144e-09, + "max_ratio": 1.953169816750353e-05, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 2.7195005145586038e-06, + "mean_abs": 8.366441915976427e-07, + "max_relative": 0.00021936606086437867, + "max_ratio": 0.16789828490568873, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 6.919836792462775e-06, + "mean_abs": 2.885176994217432e-06, + "max_relative": 4.954334982627175e-06, + "max_ratio": 0.042049998885312724, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 1.9058843173797024e-08, + "mean_abs": 8.830040519263184e-09, + "max_relative": 3.851167630655554e-06, + "max_ratio": 0.0016348636149906299, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 3.635883331298828e-06, + "mean_abs": 3.635883331298828e-06, + "max_relative": 6.2699766504699685e-09, + "max_ratio": 6.268895597382222e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 2.7090551348862846e-06, + "mean_abs": 8.195372191213227e-07, + "max_relative": 7.469505899550625e-05, + "max_ratio": 0.17302833032377618, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 7.6347980546565e-06, + "mean_abs": 3.11533769527096e-06, + "max_relative": 4.3267624858064126e-05, + "max_ratio": 0.2761676262712549, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 1.7588065561846122e-08, + "mean_abs": 8.047141763085604e-09, + "max_relative": 3.6189679011481375e-05, + "max_ratio": 0.0017503001547146614, + "bitwise_equal": false + } + }, + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 5.364418029785156e-07, + "mean_abs": 5.364418029785156e-07, + "max_relative": 9.249022062810805e-10, + "max_ratio": 9.247427674340157e-06, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 4.022603885545095e-06, + "mean_abs": 9.833570512549998e-07, + "max_relative": 0.000255143868685143, + "max_ratio": 0.17528675748961484, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 9.361600912249912e-06, + "mean_abs": 3.80086732847889e-06, + "max_relative": 1.1563065156540037e-05, + "max_ratio": 0.090345684817436, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 2.5784030611986086e-08, + "mean_abs": 1.2054085951835117e-08, + "max_relative": 1.1166486380218711e-05, + "max_ratio": 0.0022286791872524457, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 3.337860107421875e-06, + "mean_abs": 3.337860107421875e-06, + "max_relative": 5.7577040534517926e-09, + "max_ratio": 5.7567110388431455e-05, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 3.1641990290154354e-06, + "mean_abs": 8.74002191027697e-07, + "max_relative": 8.538334577130119e-05, + "max_ratio": 0.14359149244426625, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 7.0292276017625e-06, + "mean_abs": 3.809336141993549e-06, + "max_relative": 4.469513301101349e-06, + "max_ratio": 0.04112643081957306, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 1.9360130960183186e-08, + "mean_abs": 1.1885304907970363e-08, + "max_relative": 4.044364671704443e-06, + "max_ratio": 0.0016384467728254289, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 4.172325134277344e-07, + "mean_abs": 4.172325134277344e-07, + "max_relative": 7.195055172670455e-10, + "max_ratio": 7.193814619946813e-06, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 3.2048392029082606e-06, + "mean_abs": 9.089657930135461e-07, + "max_relative": 0.00010630216182784798, + "max_ratio": 0.24624501028892629, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 5.559962241719063e-06, + "mean_abs": 2.7951922455958666e-06, + "max_relative": 6.405853374666516e-06, + "max_ratio": 0.05259841857027804, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 1.5313431751817763e-08, + "mean_abs": 9.255750557185744e-09, + "max_relative": 6.2744007685854106e-06, + "max_ratio": 0.0013138518982400394, + "bitwise_equal": false + } + }, + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 1.1920928955078125e-07, + "mean_abs": 1.1920928955078125e-07, + "max_relative": 2.0553382361801792e-10, + "max_ratio": 2.0549839276311463e-06, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 3.3171053317460064e-06, + "mean_abs": 8.361984208463125e-07, + "max_relative": 0.00035285677798947197, + "max_ratio": 0.24241664434560256, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 5.74896923399848e-06, + "mean_abs": 3.7575176754203434e-06, + "max_relative": 1.2942611300316943e-05, + "max_ratio": 0.10112449125063193, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 1.583400105475974e-08, + "mean_abs": 1.1033798990020693e-08, + "max_relative": 1.2267660151699603e-05, + "max_ratio": 0.001362108966275992, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 1.5497207641601562e-06, + "mean_abs": 1.5497207641601562e-06, + "max_relative": 2.6732197391026183e-09, + "max_ratio": 2.672758696605746e-05, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 3.932146000806824e-06, + "mean_abs": 9.655348704451505e-07, + "max_relative": 0.00019345931614685497, + "max_ratio": 0.18769611929951177, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 4.054637941619532e-06, + "mean_abs": 1.6984614552573163e-06, + "max_relative": 3.518368849277478e-06, + "max_ratio": 0.03237443169525763, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 1.0334061052632432e-08, + "mean_abs": 4.023288165874254e-09, + "max_relative": 3.255817142590016e-06, + "max_ratio": 0.0010016145593793198, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 3.993511199951172e-06, + "mean_abs": 3.993511199951172e-06, + "max_relative": 6.886695665270293e-09, + "max_ratio": 6.88550827909195e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 4.463629726281226e-06, + "mean_abs": 9.373090818880214e-07, + "max_relative": 9.923577997016855e-05, + "max_ratio": 0.1228490593628531, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 9.795469799844803e-06, + "mean_abs": 4.468108131822696e-06, + "max_relative": 5.551249811377623e-05, + "max_ratio": 0.3543239288673778, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 2.5615728646468782e-08, + "mean_abs": 1.2360874242669538e-08, + "max_relative": 5.270761551923672e-05, + "max_ratio": 0.002549183914250601, + "bitwise_equal": false + } + } + ] + }, + { + "run": 3, + "arm": "BASE", + "status": "completed", + "n_atoms": 64, + "first_ms": 125718.05966598913, + "wall_ms": { + "median": 11.771477526053786, + "p90": 11.858010827563703, + "min": 11.702988063916564, + "max": 12.02712906524539, + "samples": [ + 11.856026016175747, + 12.02712906524539, + 11.778540210798383, + 11.875874130055308, + 11.759805027395487, + 11.795803206041455, + 11.770044919103384, + 11.722513940185308, + 11.724489042535424, + 11.774613056331873, + 11.833012802526355, + 11.740819085389376, + 11.772910133004189, + 11.77318999543786, + 11.709119193255901, + 11.702988063916564, + 11.746088974177837, + 11.734567116945982, + 11.991452891379595, + 11.807334842160344, + 11.722153052687645, + 11.738163884729147, + 11.705441866070032, + 11.749215191230178, + 11.82985701598227, + 11.800782987847924, + 11.764724040403962, + 11.795892845839262, + 11.790983844548464, + 11.761438101530075 + ] + }, + "event_elapsed_ms": { + "median": 11.746016025543213, + "p90": 11.82440643310547, + "min": 11.678048133850098, + "max": 12.001152038574219, + "samples": [ + 11.82153606414795, + 12.001152038574219, + 11.753151893615723, + 11.850239753723145, + 11.733344078063965, + 11.770463943481445, + 11.745152473449707, + 11.697504043579102, + 11.699328422546387, + 11.749792098999023, + 11.807840347290039, + 11.71571159362793, + 11.746879577636719, + 11.74777603149414, + 11.683487892150879, + 11.678048133850098, + 11.721311569213867, + 11.70911979675293, + 11.965984344482422, + 11.782464027404785, + 11.69696044921875, + 11.713055610656738, + 11.680512428283691, + 11.72390365600586, + 11.805312156677246, + 11.775360107421875, + 11.739168167114258, + 11.770655632019043, + 11.76591968536377, + 11.735936164855957 + ] + }, + "memory": { + "before": { + "allocated": 5105152, + "reserved": 10485760 + }, + "first": { + "allocated": 498199552, + "reserved": 528482304 + }, + "complete": { + "allocated": 498199552, + "reserved": 528482304 + }, + "steady": { + "allocated": 397536256, + "reserved": 528482304 + } + }, + "finite": true, + "precision_pass": true, + "repeat_noise": [ + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 2.5033950805664062e-06, + "mean_abs": 2.5033950805664062e-06, + "max_relative": 4.31621030263183e-09, + "max_ratio": 4.3154662546765674e-05, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 3.147650076584796e-06, + "mean_abs": 8.603994276999242e-07, + "max_relative": 0.0002335735431599308, + "max_ratio": 0.13520398706021303, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 6.80767550709227e-06, + "mean_abs": 4.109026575802341e-06, + "max_relative": 1.6397802932454654e-05, + "max_ratio": 0.12601537942025434, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 1.8477332914580702e-08, + "mean_abs": 1.0724167956678953e-08, + "max_relative": 1.6334103979623607e-05, + "max_ratio": 0.0017741230626752307, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 1.1324882507324219e-06, + "mean_abs": 1.1324882507324219e-06, + "max_relative": 1.953506726596435e-09, + "max_ratio": 1.953169810927653e-05, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 2.5379241321843438e-06, + "mean_abs": 7.794191991076597e-07, + "max_relative": 0.00013409975738400837, + "max_ratio": 0.2127020018387337, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 1.3101228760525885e-05, + "mean_abs": 6.598115515954461e-06, + "max_relative": 6.511329058758599e-06, + "max_ratio": 0.05935114635468757, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 3.608383721681596e-08, + "mean_abs": 2.21087418396642e-08, + "max_relative": 5.908172781517606e-06, + "max_ratio": 0.0030952640902238695, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 3.993511199951172e-06, + "mean_abs": 3.993511199951172e-06, + "max_relative": 6.886695629877325e-09, + "max_ratio": 6.885508243711184e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 2.4977684063287597e-06, + "mean_abs": 8.333219193151312e-07, + "max_relative": 4.86503637119551e-05, + "max_ratio": 0.14599793484675763, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 1.3497438032139542e-05, + "mean_abs": 5.8741474928927474e-06, + "max_relative": 3.705160075924161e-05, + "max_ratio": 0.23649272030712531, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 3.717508988490548e-08, + "mean_abs": 1.8166305397200166e-08, + "max_relative": 3.633735657585368e-05, + "max_ratio": 0.0031895247015927483, + "bitwise_equal": false + } + }, + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 5.364418029785156e-07, + "mean_abs": 5.364418029785156e-07, + "max_relative": 9.249022077068207e-10, + "max_ratio": 9.247427688592645e-06, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 3.4793615668604616e-06, + "mean_abs": 8.944955001184927e-07, + "max_relative": 9.523617544742061e-05, + "max_ratio": 0.2050014795333228, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 1.2076273368855084e-05, + "mean_abs": 4.457574338078017e-06, + "max_relative": 1.5856462121876832e-05, + "max_ratio": 0.12389086040081705, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 3.326087120308907e-08, + "mean_abs": 1.4789296282687481e-08, + "max_relative": 1.500818536094625e-05, + "max_ratio": 0.0028541231161992044, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 1.7285346984863281e-06, + "mean_abs": 1.7285346984863281e-06, + "max_relative": 2.9816681616471906e-09, + "max_ratio": 2.9811539219422073e-05, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 2.8314796480799487e-06, + "mean_abs": 8.626311686077415e-07, + "max_relative": 0.00011779719322420614, + "max_ratio": 0.18684372961259885, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 6.176719145045695e-06, + "mean_abs": 3.3852992677872883e-06, + "max_relative": 4.085862628173192e-06, + "max_ratio": 0.0372428810466072, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 1.7012123994242234e-08, + "mean_abs": 1.0297557701545503e-08, + "max_relative": 3.841895405339083e-06, + "max_ratio": 0.0014592964761872493, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 1.3113021850585938e-06, + "mean_abs": 1.3113021850585938e-06, + "max_relative": 2.261303042646286e-09, + "max_ratio": 2.260913154651434e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 3.2393551663290054e-06, + "mean_abs": 8.716324432951617e-07, + "max_relative": 6.231520647418034e-05, + "max_ratio": 0.13971142560500446, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 1.2360706387326559e-05, + "mean_abs": 4.279959207912724e-06, + "max_relative": 9.148954419526426e-06, + "max_ratio": 0.05839613168929839, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 3.4044266020855085e-08, + "mean_abs": 1.522050843726693e-08, + "max_relative": 9.041439341445294e-06, + "max_ratio": 0.002920908268340238, + "bitwise_equal": false + } + }, + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 1.9073486328125e-06, + "mean_abs": 1.9073486328125e-06, + "max_relative": 3.288541182957585e-09, + "max_ratio": 3.287974289277385e-05, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 2.592615622631911e-06, + "mean_abs": 7.564083415398845e-07, + "max_relative": 6.414690706583804e-05, + "max_ratio": 0.09667148947492088, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 8.860800189969265e-06, + "mean_abs": 4.887425170679243e-06, + "max_relative": 2.479902596920097e-05, + "max_ratio": 0.19376154912813906, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 2.42176339086686e-08, + "mean_abs": 1.3151681929735789e-08, + "max_relative": 2.4608956849824416e-05, + "max_ratio": 0.002398163107222813, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 1.7881393432617188e-07, + "mean_abs": 1.7881393432617188e-07, + "max_relative": 3.084484305152266e-10, + "max_ratio": 3.0839523330436627e-06, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 3.625460117007151e-06, + "mean_abs": 9.327679536264011e-07, + "max_relative": 0.00012700374026739514, + "max_ratio": 0.1416401409026633, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 1.249435895012141e-05, + "mean_abs": 4.515817730359966e-06, + "max_relative": 4.141486254455477e-06, + "max_ratio": 0.0377498901677343, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 3.441237633045047e-08, + "mean_abs": 1.6181567711638645e-08, + "max_relative": 2.8541161180102658e-06, + "max_ratio": 0.0029123172518844605, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 1.6093254089355469e-06, + "mean_abs": 1.6093254089355469e-06, + "max_relative": 2.7752355523386235e-09, + "max_ratio": 2.7747570534358507e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 3.0667251564864273e-06, + "mean_abs": 8.911129659484873e-07, + "max_relative": 8.952571473061782e-05, + "max_ratio": 0.20739389932047447, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 5.729165823531446e-06, + "mean_abs": 2.286177272819372e-06, + "max_relative": 1.2881337258779671e-05, + "max_ratio": 0.08221891705346894, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 1.5779457844533606e-08, + "mean_abs": 7.561837022699167e-09, + "max_relative": 1.1631414054412233e-05, + "max_ratio": 0.001343865463753086, + "bitwise_equal": false + } + } + ] + }, + { + "run": 4, + "arm": "BASE", + "status": "completed", + "n_atoms": 64, + "first_ms": 125241.41405685805, + "wall_ms": { + "median": 12.372727505862713, + "p90": 12.433126498945057, + "min": 12.310835998505354, + "max": 12.634046142920852, + "samples": [ + 12.432294897735119, + 12.368594063445926, + 12.634046142920852, + 12.38698000088334, + 12.310835998505354, + 12.453936040401459, + 12.386198155581951, + 12.311727041378617, + 12.356341816484928, + 12.320392997935414, + 12.422116007655859, + 12.365347938612103, + 12.3799960128963, + 12.361051049083471, + 12.364396825432777, + 12.358275009319186, + 12.385726906359196, + 12.335462030023336, + 12.440610909834504, + 12.394814053550363, + 12.375356862321496, + 12.357903877273202, + 12.357603991404176, + 12.399453204125166, + 12.3388790525496, + 12.373644160106778, + 12.371810851618648, + 12.405694928020239, + 12.413860065862536, + 12.36395607702434 + ] + }, + "event_elapsed_ms": { + "median": 12.346944332122803, + "p90": 12.399241542816162, + "min": 12.284576416015625, + "max": 12.6080322265625, + "samples": [ + 12.397439956665039, + 12.34124755859375, + 12.6080322265625, + 12.361151695251465, + 12.284576416015625, + 12.428383827209473, + 12.360320091247559, + 12.28553581237793, + 12.330719947814941, + 12.293279647827148, + 12.396672248840332, + 12.339167594909668, + 12.353952407836914, + 12.334976196289062, + 12.338784217834473, + 12.333344459533691, + 12.3602876663208, + 12.309663772583008, + 12.41545581817627, + 12.369440078735352, + 12.349823951721191, + 12.331968307495117, + 12.331904411315918, + 12.373503684997559, + 12.313088417053223, + 12.347840309143066, + 12.346048355102539, + 12.378399848937988, + 12.388928413391113, + 12.338751792907715 + ] + }, + "memory": { + "before": { + "allocated": 5105152, + "reserved": 10485760 + }, + "first": { + "allocated": 498199552, + "reserved": 528482304 + }, + "complete": { + "allocated": 498199552, + "reserved": 528482304 + }, + "steady": { + "allocated": 397536256, + "reserved": 528482304 + } + }, + "finite": true, + "precision_pass": true, + "repeat_noise": [ + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 7.748603820800781e-07, + "mean_abs": 7.748603820800781e-07, + "max_relative": 1.3359698454168e-09, + "max_ratio": 1.3357395448627214e-05, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 2.940772304782513e-06, + "mean_abs": 7.987600347710011e-07, + "max_relative": 0.00025426214659476497, + "max_ratio": 0.187016616999559, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 5.58746404721866e-06, + "mean_abs": 2.557516237850561e-06, + "max_relative": 7.080051561957943e-06, + "max_ratio": 0.054409328451275864, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 1.5364273936446793e-08, + "mean_abs": 7.322776153119929e-09, + "max_relative": 5.974741480455591e-06, + "max_ratio": 0.0013217011109670166, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 1.7881393432617188e-07, + "mean_abs": 1.7881393432617188e-07, + "max_relative": 3.0844843130806355e-10, + "max_ratio": 3.0839523409692974e-06, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 3.659094718777567e-06, + "mean_abs": 8.730414914753792e-07, + "max_relative": 0.00012127513141225042, + "max_ratio": 0.11731000006168305, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 1.1607867948626449e-05, + "mean_abs": 4.89501878333767e-06, + "max_relative": 7.108283927054294e-06, + "max_ratio": 0.060331612191260715, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 3.197077351468902e-08, + "mean_abs": 1.6385335608436424e-08, + "max_relative": 5.410408520733576e-06, + "max_ratio": 0.002742447199493105, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 3.7550926208496094e-06, + "mean_abs": 3.7550926208496094e-06, + "max_relative": 6.475549584849906e-09, + "max_ratio": 6.474433087422955e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 2.713625150363441e-06, + "mean_abs": 8.337065295719684e-07, + "max_relative": 0.00014835832983871043, + "max_ratio": 0.1530218077636317, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 5.107650959179644e-06, + "mean_abs": 2.038622628652842e-06, + "max_relative": 1.3817301644838751e-05, + "max_ratio": 0.0881925858687249, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 1.263006546071456e-08, + "mean_abs": 4.915432523838299e-09, + "max_relative": 1.2490666401295765e-05, + "max_ratio": 0.001242760665778508, + "bitwise_equal": false + } + }, + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 4.291534423828125e-06, + "mean_abs": 4.291534423828125e-06, + "max_relative": 7.399217605385355e-09, + "max_ratio": 7.397942094624302e-05, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 2.9086142632195333e-06, + "mean_abs": 8.382738898287528e-07, + "max_relative": 0.00011656952971164183, + "max_ratio": 0.12754634258355133, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 1.044810936257079e-05, + "mean_abs": 3.728531659339149e-06, + "max_relative": 5.579032055700338e-06, + "max_ratio": 0.04359066883143348, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 2.8776528087498532e-08, + "mean_abs": 1.4077153425850076e-08, + "max_relative": 3.3095958804118824e-06, + "max_ratio": 0.0024775845462237517, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 2.3245811462402344e-06, + "mean_abs": 2.3245811462402344e-06, + "max_relative": 4.009829607004826e-09, + "max_ratio": 4.009138043260087e-05, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 3.1483239055773993e-06, + "mean_abs": 8.9117455955486e-07, + "max_relative": 0.00012753271065296226, + "max_ratio": 0.16032829591678938, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 1.1069163089238998e-05, + "mean_abs": 5.313540983234135e-06, + "max_relative": 5.6224254622519745e-06, + "max_ratio": 0.05124872711903977, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 3.0487054786948464e-08, + "mean_abs": 1.7210885175294895e-08, + "max_relative": 5.14832946140267e-06, + "max_ratio": 0.002580118273696127, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 3.0994415283203125e-06, + "mean_abs": 3.0994415283203125e-06, + "max_relative": 5.344898070034843e-09, + "max_ratio": 5.3439765166030743e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 3.2420113915687665e-06, + "mean_abs": 8.629926189999276e-07, + "max_relative": 0.00017566128984399952, + "max_ratio": 0.12341458882679383, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 3.949601765640409e-06, + "mean_abs": 1.608569554840184e-06, + "max_relative": 1.1897446782931626e-05, + "max_ratio": 0.07593909689657997, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 1.0878123707369625e-08, + "mean_abs": 4.428898853977402e-09, + "max_relative": 7.812247190641476e-06, + "max_ratio": 0.0009333140310546827, + "bitwise_equal": false + } + }, + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 2.384185791015625e-06, + "mean_abs": 2.384185791015625e-06, + "max_relative": 4.110676447436308e-09, + "max_ratio": 4.1099678303468346e-05, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 2.6217950406248747e-06, + "mean_abs": 8.002386016203964e-07, + "max_relative": 0.00030506254718772703, + "max_ratio": 0.17657691394181632, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 7.943367612561758e-06, + "mean_abs": 3.693105918646368e-06, + "max_relative": 1.78710255162443e-05, + "max_ratio": 0.13733664063960158, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 2.1877885586496504e-08, + "mean_abs": 1.0664017696725234e-08, + "max_relative": 1.6122339679001177e-05, + "max_ratio": 0.0018820300786676128, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 8.344650268554688e-07, + "mean_abs": 8.344650268554688e-07, + "max_relative": 1.4394260127709633e-09, + "max_ratio": 1.4391777591190054e-05, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 3.51564199263521e-06, + "mean_abs": 9.009632097739528e-07, + "max_relative": 0.0002376357398415713, + "max_ratio": 0.18188724101158707, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 1.0495915084063334e-05, + "mean_abs": 6.478767795420954e-06, + "max_relative": 1.8703953429239588e-05, + "max_ratio": 0.15874994250601276, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 2.4946369121467415e-08, + "mean_abs": 1.7127615396635733e-08, + "max_relative": 1.614055794210935e-05, + "max_ratio": 0.0024566673873793548, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 2.9206275939941406e-06, + "mean_abs": 2.9206275939941406e-06, + "max_relative": 5.036538565994372e-09, + "max_ratio": 5.035670179106743e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 3.5644034888093756e-06, + "mean_abs": 1.0046139619068288e-06, + "max_relative": 0.0001698529394024543, + "max_ratio": 0.2141681109971593, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 9.609568919266565e-06, + "mean_abs": 4.45278253055317e-06, + "max_relative": 9.731724596241e-06, + "max_ratio": 0.07990708651496747, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 2.6466992292251135e-08, + "mean_abs": 1.4571681848953643e-08, + "max_relative": 9.176450577635529e-06, + "max_ratio": 0.0022707974215662946, + "bitwise_equal": false + } + } + ] + }, + { + "run": 5, + "arm": "FIXED", + "status": "completed", + "n_atoms": 64, + "first_ms": 126628.89281916432, + "wall_ms": { + "median": 12.313776067458093, + "p90": 12.409749417565763, + "min": 12.251382926478982, + "max": 12.537193018943071, + "samples": [ + 12.376609025523067, + 12.308210134506226, + 12.365988921374083, + 12.413057964295149, + 12.32566311955452, + 12.251382926478982, + 12.308702105656266, + 12.278364039957523, + 12.409381801262498, + 12.381598819047213, + 12.353586032986641, + 12.31885002925992, + 12.277371948584914, + 12.36214186064899, + 12.295766966417432, + 12.282281881198287, + 12.299222871661186, + 12.270760023966432, + 12.360468972474337, + 12.2759398072958, + 12.270639883354306, + 12.288684025406837, + 12.282321928068995, + 12.425120919942856, + 12.34108186326921, + 12.537193018943071, + 12.325582792982459, + 12.25936901755631, + 12.345761992037296, + 12.252215063199401 + ] + }, + "event_elapsed_ms": { + "median": 12.282864093780518, + "p90": 12.3847074508667, + "min": 12.225983619689941, + "max": 12.512543678283691, + "samples": [ + 12.332991600036621, + 12.281696319580078, + 12.34115219116211, + 12.388192176818848, + 12.300288200378418, + 12.225983619689941, + 12.284031867980957, + 12.253952026367188, + 12.384320259094238, + 12.356672286987305, + 12.328448295593262, + 12.293631553649902, + 12.25222396850586, + 12.336928367614746, + 12.270400047302246, + 12.256959915161133, + 12.273632049560547, + 12.246015548706055, + 12.335200309753418, + 12.251744270324707, + 12.245792388916016, + 12.263551712036133, + 12.256928443908691, + 12.400896072387695, + 12.315520286560059, + 12.512543678283691, + 12.271391868591309, + 12.233663558959961, + 12.320608139038086, + 12.226079940795898 + ] + }, + "memory": { + "before": { + "allocated": 5105152, + "reserved": 10485760 + }, + "first": { + "allocated": 480156672, + "reserved": 507510784 + }, + "complete": { + "allocated": 480156672, + "reserved": 507510784 + }, + "steady": { + "allocated": 379493376, + "reserved": 507510784 + } + }, + "finite": true, + "precision_pass": true, + "repeat_noise": [ + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 1.2516975402832031e-06, + "mean_abs": 1.2516975402832031e-06, + "max_relative": 2.1581051466584974e-09, + "max_ratio": 2.1577331226824716e-05, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 3.6795701916503276e-06, + "mean_abs": 8.937403724081314e-07, + "max_relative": 0.0002218968775192406, + "max_ratio": 0.29024003055349096, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 1.1688049809777112e-05, + "mean_abs": 5.584106061187446e-06, + "max_relative": 1.2412927798536686e-05, + "max_ratio": 0.09698601625731429, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 3.219161304537921e-08, + "mean_abs": 1.8129739128451706e-08, + "max_relative": 1.131624168575636e-05, + "max_ratio": 0.0027623699492510738, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 4.708766937255859e-06, + "mean_abs": 4.708766937255859e-06, + "max_relative": 8.122475288463915e-09, + "max_ratio": 8.121074428594633e-05, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 3.374214090356986e-06, + "mean_abs": 8.022241451179543e-07, + "max_relative": 8.481239566849856e-05, + "max_ratio": 0.17497677053596025, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 9.541675158430962e-06, + "mean_abs": 5.3520039798243205e-06, + "max_relative": 1.4372883569365458e-05, + "max_ratio": 0.12198985678957508, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 2.6279997050043802e-08, + "mean_abs": 1.6062888706827882e-08, + "max_relative": 1.3990455049356052e-05, + "max_ratio": 0.002224075399145608, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 1.6093254089355469e-06, + "mean_abs": 1.6093254089355469e-06, + "max_relative": 2.7752355457777184e-09, + "max_ratio": 2.7747570468772078e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 3.5095089003789326e-06, + "mean_abs": 9.038578985716417e-07, + "max_relative": 0.00018319730371471984, + "max_ratio": 0.19588992001712088, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 9.017253526089064e-06, + "mean_abs": 3.0380436752531893e-06, + "max_relative": 1.4519989206795836e-05, + "max_ratio": 0.09267837987471444, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 2.483561765964648e-08, + "mean_abs": 9.836672715716656e-09, + "max_relative": 8.067845589296882e-06, + "max_ratio": 0.0021308303134986908, + "bitwise_equal": false + } + }, + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 3.337860107421875e-06, + "mean_abs": 3.337860107421875e-06, + "max_relative": 5.7549470577559926e-09, + "max_ratio": 5.753954993819924e-05, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 2.818763775280786e-06, + "mean_abs": 8.61009049439009e-07, + "max_relative": 0.00014399831601205298, + "max_ratio": 0.19595766968532993, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 5.840822273839308e-06, + "mean_abs": 3.4841950076130382e-06, + "max_relative": 6.683077658102929e-06, + "max_ratio": 0.051358706973837355, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 1.6086985733104742e-08, + "mean_abs": 1.0853180030597829e-08, + "max_relative": 5.532765030913541e-06, + "max_ratio": 0.001380428060579523, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 2.8014183044433594e-06, + "mean_abs": 2.8014183044433594e-06, + "max_relative": 4.83235871592157e-09, + "max_ratio": 4.8315252929613635e-05, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 2.8415859425479084e-06, + "mean_abs": 9.043560394161876e-07, + "max_relative": 5.2693441080580316e-05, + "max_ratio": 0.12687443233292295, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 1.1104528619299003e-05, + "mean_abs": 5.912194377683595e-06, + "max_relative": 1.4405505709407896e-05, + "max_ratio": 0.12226673722019572, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 3.0584459700944144e-08, + "mean_abs": 1.913106527814291e-08, + "max_relative": 1.4205513248947762e-05, + "max_ratio": 0.0026106089217927887, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 8.940696716308594e-07, + "mean_abs": 8.940696716308594e-07, + "max_relative": 1.5417975254320656e-09, + "max_ratio": 1.5415316927095598e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 2.911699425567349e-06, + "mean_abs": 8.534018255708145e-07, + "max_relative": 0.00012803805876278234, + "max_ratio": 0.18657539852383245, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 7.236126109866348e-06, + "mean_abs": 3.3979011244935877e-06, + "max_relative": 2.12731469551189e-05, + "max_ratio": 0.13578194111589456, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 1.9929977668198262e-08, + "mean_abs": 1.0384995751591353e-08, + "max_relative": 1.9028338427526605e-05, + "max_ratio": 0.0017099393759693316, + "bitwise_equal": false + } + }, + { + "0_energy": { + "passed": true, + "finite": true, + "max_abs": 5.960464477539063e-08, + "mean_abs": 5.960464477539063e-08, + "max_relative": 1.0276691174564272e-10, + "max_ratio": 1.0274919631821293e-06, + "bitwise_equal": false + }, + "0_forces": { + "passed": true, + "finite": true, + "max_abs": 2.744388893916039e-06, + "mean_abs": 8.448484555718486e-07, + "max_relative": 0.00012603935051434895, + "max_ratio": 0.11757530189942561, + "bitwise_equal": false + }, + "0_virial": { + "passed": true, + "finite": true, + "max_abs": 7.308003678652142e-06, + "mean_abs": 3.0443718373092863e-06, + "max_relative": 7.236894346690665e-06, + "max_ratio": 0.05654407760619928, + "bitwise_equal": false + }, + "0_stress": { + "passed": true, + "finite": true, + "max_abs": 2.012794524108852e-08, + "mean_abs": 1.0890898884065216e-08, + "max_relative": 4.341268855736482e-06, + "max_ratio": 0.0017397874496624037, + "bitwise_equal": false + }, + "1_energy": { + "passed": true, + "finite": true, + "max_abs": 5.781650543212891e-06, + "mean_abs": 5.781650543212891e-06, + "max_relative": 9.973165860518985e-09, + "max_ratio": 9.971445817388346e-05, + "bitwise_equal": false + }, + "1_forces": { + "passed": true, + "finite": true, + "max_abs": 3.748617604770743e-06, + "mean_abs": 8.949216583712764e-07, + "max_relative": 8.728442936403831e-05, + "max_ratio": 0.19662633077944616, + "bitwise_equal": false + }, + "1_virial": { + "passed": true, + "finite": true, + "max_abs": 1.8756828744415088e-05, + "mean_abs": 8.023873440269705e-06, + "max_relative": 5.816841497965407e-06, + "max_ratio": 0.05302082939684836, + "bitwise_equal": false + }, + "1_stress": { + "passed": true, + "finite": true, + "max_abs": 5.166067759340698e-08, + "mean_abs": 2.698633391440333e-08, + "max_relative": 5.7044920017537554e-06, + "max_ratio": 0.004372041668037314, + "bitwise_equal": false + }, + "2_energy": { + "passed": true, + "finite": true, + "max_abs": 1.2516975402832031e-06, + "mean_abs": 1.2516975402832031e-06, + "max_relative": 2.158516535604892e-09, + "max_ratio": 2.1581443697933838e-05, + "bitwise_equal": false + }, + "2_forces": { + "passed": true, + "finite": true, + "max_abs": 3.0522936711463444e-06, + "mean_abs": 8.918387139449091e-07, + "max_relative": 0.00018927185452382247, + "max_ratio": 0.13300152496608025, + "bitwise_equal": false + }, + "2_virial": { + "passed": true, + "finite": true, + "max_abs": 3.496542490211141e-06, + "mean_abs": 1.577094147923545e-06, + "max_relative": 1.244098685834877e-05, + "max_ratio": 0.07940815473083772, + "bitwise_equal": false + }, + "2_stress": { + "passed": true, + "finite": true, + "max_abs": 9.630292879120317e-09, + "mean_abs": 4.75344163040151e-09, + "max_relative": 5.728141736537804e-06, + "max_ratio": 0.0008201686919741789, + "bitwise_equal": false + } + } + ] + } + ], + "torch_reference": { + "gpu": 1, + "process_count": 1, + "self_repeats": 3, + "worst_self_ratio": 0.2115126973181738, + "caveat": "accuracy reference only; GPU1 timing not mixed into GPU0 performance table" + }, + "test_summary": { + "focused_cuda_passed": 60, + "training_and_higher_order": "dispatch guard tests, not full training validation", + "local_input_alpha_gradients": "24 edge-count/distribution cases, bitwise equal, finite, caller tensors unchanged" + }, + "limitations": [ + "Latest cold-process matrix covers Neo N64 only; no multi-model/PT2 acceptance claim.", + "Small-path residual reuse overlaps the earlier internal inplace optimization; percentages are not additive.", + "Earlier opaque two-cohort N64 path regressed 6.85-7.81%; it is not the reported small path.", + "No stable latency speedup is claimed below 3%; full model outputs are tolerance-equivalent, not bitwise guaranteed." + ] +} \ No newline at end of file diff --git a/doc/development/ecs-edge-cohort-benchmarks.md b/doc/development/ecs-edge-cohort-benchmarks.md new file mode 100644 index 0000000000..f36a81e842 --- /dev/null +++ b/doc/development/ecs-edge-cohort-benchmarks.md @@ -0,0 +1,205 @@ +# Experimental SO(2) edge-cohort inference backward + +This opt-in experiment targets first-order input and alpha gradients of a frozen +DPA4-Neo model. It is not a training optimization and does not change the default +inference path. Enable `DP_SO2_EDGE_COHORT_INFER=1` **before importing the model**. +Use `DP_TRITON_INFER=2`, with TF32 and AMP disabled. Other model components retain +their original precision; the checkpoint is not globally cast to FP32. + +## Scope and implementation + +The checked layout is `F=2`, `Cf=32`, `lmax=3`, `ROW=320`, three mixing layers +and two gated layers, contiguous FP32 activations, and `apply_alpha=True`. +Unsupported layouts retain the existing dispatcher. Weight gradients, higher +derivatives and extra saved-output gradients retain the existing training path. +The switch defaults to zero. + +The existing backward traverses a full edge set for each layer. The large-edge +experiment instead traverses the whole reverse layer chain of one cohort before +advancing to the next cohort. Scratch buffers scale with cohort size (8192), +while saved forward activations and the returned gradient still scale with the +full edge count. This is not a claim that all full-edge storage disappears. + +For `E <= 16384`, a single-cohort `torch.library.triton_op` exposes `wrap_triton` +launches to Inductor and uses the internally owned returned gradient as the +residual buffer. This avoids the opaque Python multi-cohort launch overhead on +small systems. It does **not** fuse the reverse chain into one mega-kernel. +16384 is a tested dispatch boundary, not a proven optimum for every workload. + +Only internally owned residual elements are overwritten. Caller tensors remain +read-only, and GEMM matrix input `gz` never aliases GEMM output: independent +column tiles may still be reading `gz`. Saved and output strides account for +full-graph extent even when a cohort has a partial tail. Alpha backward remains +separate to preserve the forward-output lifetime contract. The single-cohort +residual reuse overlaps the internal inplace optimization discussed in #6058; +their percentages must not be added or presented as independent improvements. + +The five GEMM schedule parameters, gate/point/recompute schedules, weights and +arithmetic are unchanged. Four native `wrap_triton` launch sites additionally +pass `saved_edges=0` / `output_edges=0` explicitly so optional Python defaults do +not become `None` in compiled native calls. Static and dynamic native tests +cover the disabled-switch path. + +## Measurement protocol + +The baseline is unmodified commit +`668b60cc2a9559f79abb9c33acd959833376344f`. The checkpoint is +`DPA4-Neo-OMat24-v20260627.pt`, SHA-256 +`8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d`. +It must be provided separately; it is not bundled in this PR. + +Environment: RTX 5090, driver 595.91.07, PyTorch 2.11.0+cu128, CUDA runtime 12.8, +Triton 3.6.0. The main table uses GPU 0 only. It runs the normal ASE API for +energy, forces, virial and stress of a 64-atom diamond cell (`nrep=2`, approximately +10114 edges), seed 0, position perturbations with standard deviation 0.02 Angstrom. +Timing includes neighbor construction and host work. CUDA Events bracket the +whole API call on the default stream, including host launch gaps: they are not +the sum of kernel durations. + +Three independent processes per arm run in the order BASE/ECS/ECS/BASE/BASE/ECS. +Each process uses new Inductor and Triton caches, eight warmup frames and thirty +measured frames. System/driver caches are not purged. First-call compilation +time is recorded separately and excluded from steady timings. P50 is the median +of the three process medians; P90 pools ninety samples per arm. A GPU 0 NVML +monitor checked for foreign compute processes every 250 ms; none was detected. +Clocks were recorded, not locked, and no global driver settings were changed. +The monitor covers compilation and idle time as well as execution; its clock +range is not a claim of constant clocks during timing. + +**Primary memory includes the first call and compilation.** Counters are not +reset between loading the model, first execution, warmup and the thirty timed +calls. Report the worst high-water mark across the three processes for both +allocated and reserved memory. A second replay resets only peak counters to +measure steady allocated memory; allocator caches are not emptied. Reserved +memory can therefore retain the earlier cold peak. These are full-model CUDA +allocator metrics, not SO(2)-exclusive storage or total driver/context memory. +A compilation scratch allocation still consumes real capacity and is not +subtracted from the primary metric. Sampled device memory is an auxiliary +measurement and can miss narrow peaks. + +Numeric results and all per-call timings are in +[the JSON evidence](ecs-edge-cohort-benchmark-results.json). + +## Results: cold-process Neo N64 + +MB below is decimal (`1 MB = 10^6 bytes`). First and complete-window peaks +were identical in all six processes. Each arm's three allocated peak readings +were also identical. Memory columns report the worst process, not its average. + +| Full-model metric | Unmodified baseline | Opt-in candidate | Change | +| --- | ---: | ---: | ---: | +| **First/complete allocated peak, MB** | **498.199552** | **480.156672** | **-3.6216%** | +| First/complete reserved peak, MB | 528.482304 | 507.510784 | -3.9683% | +| Steady allocated peak, MB, secondary | 397.536256 | 379.493376 | -4.5387% | +| Steady reserved peak, MB, cache retained | 528.482304 | 507.510784 | -3.9683% | +| Wall P50, ms, median of process medians | 12.157611 | 12.313776 | +1.2845% latency | +| Wall P90, ms, pooled 90 samples | 12.414686 | 12.432651 | +0.1447% latency | +| Wall min / max, ms | 11.702988 / 12.855804 | 12.185729 / 12.588670 | distribution, not a speedup | +| CUDA Event median, ms, pooled | 12.128464 | 12.314896 | whole API, not kernel sum | +| First call including JIT, seconds, range | 124.931-125.718 | 124.219-126.629 | excluded from steady P50 | + +Baseline process P50s: 12.157611 / 11.771478 / 12.372728 ms. +Candidate process P50s: 12.398105 / 12.254008 / 12.313776 ms. +The latency difference is within the chosen 3% noise band; there is **no claimed +stable speedup**. The result is a reproducible memory reduction with no repeat +of the original approximately 7.8% small-system regression, not proof of zero +time cost. First-call compilation latency itself is approximately two minutes +in this fresh-cache protocol and is not hidden. + +| Accuracy comparison, three frames x energy/forces/virial/stress | Pairs | Worst error/tolerance ratio | Result | +| --- | ---: | ---: | --- | +| Baseline self, independent processes | 3 | 0.282621 | pass | +| Candidate self, independent processes | 3 | 0.184105 | pass | +| All baseline-to-candidate process pairs | 9 | 0.256570 | pass | +| Six processes versus fresh pure-PyTorch output | 6 | 0.352841 | pass | + +Within-process worst ratios are 0.256139 (baseline), 0.354324 (candidate), and +0.211513 (pure PyTorch). These characterize observed noise, not permission to +relax the absolute/relative acceptance thresholds. All compared arrays are +finite. During the full GPU 0 process windows, the highest sampled temperature +was 46 C; clock samples ranged from idle 172 MHz to 2902 MHz. No throttling +cause is inferred from those whole-window statistics. + +## Correctness and limitations + +Use `abs(actual-reference) <= 1e-5 + 1e-4*abs(reference)` elementwise, without +relaxing thresholds on failure. Relative error uses +`max(abs(reference), 1e-8)` in the denominator. The evidence includes max/mean +absolute error, max relative error, finite checks and the maximum error/tolerance +ratio for each frame and physical output. + +The cold matrix is checked against a fresh pure-PyTorch reference with Triton +disabled, and also checks baseline-to-baseline, candidate-to-candidate and all +nine baseline-to-candidate process pairs. The pure-PyTorch reference runs on +GPU 1 in one process with three self-repeats; this is not a three-process Torch +noise matrix, and its timings are not mixed with GPU 0 performance. +Full-model floating-point reductions are not promised to be bitwise identical. + +The focused CUDA test file has 60 passing tests, including zero/tail edges, +legal near-zero alpha, caller-input immutability, native static/dynamic compile, +and dispatch across 16384/16385 edges. Local experimental checks of input/alpha +gradients cover 24 edge-count/distribution cases with bitwise equality. Training +and higher-order tests check dispatch guards, not numerical correctness of a +complete training run. + +Earlier opaque two-cohort N64 runs regressed by 6.85-7.81% despite reducing +memory. The compiled single-cohort branch addresses that small-system penalty; +it must not inherit the earlier 9.46% cold-peak reduction claim. Differences +below 3% are treated as noise, not a demonstrated speedup. Earlier diagnostic +workers produced different baseline timings; their numbers are not mixed into +this same-entry-point comparison, and the cross-day difference is not uniquely +attributed to a hardware cause. + +The latest cold-process matrix is Neo N64 only. Earlier larger-system or other +model runs with precision failures are not reclassified as passing. This draft +does not claim multi-model acceptance, standalone `.pt2`/AOTInductor/C++ deployment, +LAMMPS performance, new NCU measurements, or full training validation. The +large-edge runtime launcher remains experimental. + +## Reproduce + +Install a CUDA-enabled DeePMD build and its runtime dependencies, plus `ase`, +`pytest` and Triton. Use the same environment and checkpoint for both checkouts. +Create a clean baseline worktree at the commit above, and a worktree containing +this PR. Set the following paths to absolute local paths: + +```bash +PY=/path/to/environment/bin/python +PR_ROOT=/path/to/pr-checkout +BASE_ROOT=/path/to/baseline-checkout +MODEL=/path/to/DPA4-Neo-OMat24-v20260627.pt +RESULTS=/path/to/new-results +BENCH=$PR_ROOT/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort.py + +# Each --out must be new. Default caches are inside that output directory. +$PY "$BENCH" --gpu 0 --mode torch --source-root "$BASE_ROOT" \ + --model "$MODEL" --out "$RESULTS/torch" +$PY "$BENCH" --gpu 0 --mode base --source-root "$BASE_ROOT" \ + --model "$MODEL" --out "$RESULTS/base-0" \ + --reference "$RESULTS/torch/outputs.npz" +$PY "$BENCH" --gpu 0 --mode ecs --source-root "$PR_ROOT" \ + --model "$MODEL" --out "$RESULTS/ecs-0" \ + --reference "$RESULTS/torch/outputs.npz" +``` + +Run three processes per arm in the order specified above, with unique output +directories; do not choose the fastest process. GPU 0 must be idle at launch. +The benchmark refuses a nonempty explicit `--cache-dir` unless +`--allow-warm-cache` is given; warm-cache results are a different experiment. +`--nrep 4` tests 512 atoms and `--nrep 8` tests 4096, but the current N64 result +does not establish their acceptance. A failed precision check exits nonzero. + +The CLI writes `result.json`, `manifest.json`, `outputs.npz`, first-call memory +and compiler caches. It records global memory including validation, in addition +to the primary normal-inference window and separate steady replay, and records +source hashes. The public CLI has also been run end-to-end on Torch/base/ECS +with fresh caches; its GPU 1 timings are kept separate from the main matrix. + +For generated-input CUDA tests, use a correctly installed PR checkout: + +```bash +DP_TRITON_INFER=2 DP_TF32_INFER=0 DP_AMP_INFER=0 \ + $PY -m pytest source/tests/pt_expt/kernels/test_so2_edge_cohort.py -q +``` + +No weights or generated compiler caches are tracked in the repository. diff --git a/source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_common.py b/source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_common.py new file mode 100644 index 0000000000..d0303669b4 --- /dev/null +++ b/source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_common.py @@ -0,0 +1,131 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +"""Isolated-process setup and serialization for the SO(2) benchmark.""" + +import hashlib +import json +import os +from pathlib import Path +import site +import subprocess +import sys + +LAB = Path(__file__).resolve().parent +ROOT = Path(__file__).resolve().parents[4] + + +def setup(gpu, out, level="2"): + out.mkdir(parents=True, exist_ok=False) + busy = subprocess.check_output( + [ + "nvidia-smi", + "-i", + str(gpu), + "--query-compute-apps=pid", + "--format=csv,noheader", + ], + text=True, + ).strip() + if busy: + raise RuntimeError(f"GPU {gpu} has compute processes: {busy}") + for key in list(os.environ): + if key.startswith("DP_"): + del os.environ[key] + os.environ.update( + CUDA_VISIBLE_DEVICES=str(gpu), + DP_COMPILE_INFER="1", + DP_COMPILE="0", + DP_TRITON_INFER=level, + DP_CUDA_INFER="0", + DP_TF32_INFER="0", + DP_AMP_INFER="0", + OMP_NUM_THREADS="1", + DP_INTRA_OP_PARALLELISM_THREADS="1", + DP_INTER_OP_PARALLELISM_THREADS="1", + PYTORCH_ALLOC_CONF=os.getenv("LAB_ALLOC_CONF", "expandable_segments:True"), + TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD="1", + TORCHINDUCTOR_COMPILE_THREADS="1", + TORCHINDUCTOR_CACHE_DIR=str(out.resolve() / "inductor"), + TRITON_CACHE_DIR=str(out.resolve() / "triton"), + ) + sys.path.insert(0, str(ROOT)) + sys.meta_path[:] = [ + f + for f in sys.meta_path + if not type(f).__module__.startswith("_editable_skbc_deepmd_kit") + ] + import deepmd + + for installed in site.getsitepackages(): + p = Path(installed) / "deepmd" + if (p / "lib").is_dir(): + deepmd.__path__.append(str(p)) + assert Path(deepmd.__file__).resolve().parent.parent == ROOT + import torch + + torch.set_num_threads(1) + torch.set_float32_matmul_precision("highest") + torch.backends.cuda.matmul.allow_tf32 = False + torch.backends.cudnn.allow_tf32 = False + + +def write(path, obj): + Path(path).write_text( + json.dumps(obj, indent=2, ensure_ascii=False, allow_nan=False) + ) + + +def sha(path): + return hashlib.sha256(Path(path).read_bytes()).hexdigest() + + +def environment(): + import torch + import triton + + return { + "python": sys.version, + "torch": torch.__version__, + "triton": triton.__version__, + "cuda": torch.version.cuda, + "gpu": subprocess.check_output( + [ + "nvidia-smi", + "--query-gpu=index,name,uuid,driver_version,clocks.sm,clocks.mem,temperature.gpu,power.draw", + "--format=csv", + ], + text=True, + ), + "revision": subprocess.check_output( + ["git", "rev-parse", "HEAD"], cwd=ROOT, text=True + ).strip(), + "flags": { + k: v + for k, v in os.environ.items() + if k.startswith( + ( + "DP_", + "PBS_", + "COHORT_", + "TORCHINDUCTOR", + "TRITON_CACHE", + "CUDA_VISIBLE", + "PYTORCH_ALLOC", + ) + ) + }, + "harness_hashes": { + p.name: sha(p) for p in LAB.glob("*so2_edge_cohort*benchmark*.py") + }, + } + + +def stats(values): + import numpy as np + + return { + "median": float(np.median(values)), + "p90": float(np.percentile(values, 90)), + "min": float(min(values)), + "max": float(max(values)), + "samples": values, + } diff --git a/source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_impl.py b/source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_impl.py new file mode 100644 index 0000000000..ad207e309a --- /dev/null +++ b/source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_impl.py @@ -0,0 +1,207 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +# ruff: noqa: T201 -- manual benchmark CLI output +"""Measurement body executed in an isolated module namespace by the CLI.""" + +import argparse +from pathlib import Path +import time +import traceback + +from _so2_edge_cohort_benchmark_common import environment, setup, sha, stats, write + +p = argparse.ArgumentParser() +p.add_argument("--out", type=Path, required=True) +p.add_argument("--gpu", default="0") +p.add_argument("--variant", choices=("BASE", "TORCH"), default="BASE") +p.add_argument("--nrep", type=int, default=5) +p.add_argument( + "--model", + type=Path, + required=True, +) +p.add_argument("--reference", type=Path) +p.add_argument("--warmup", type=int, default=8) +p.add_argument("--samples", type=int, default=30) +p.add_argument("--system", choices=("diamond", "water"), default="diamond") +a = p.parse_args() +setup(a.gpu, a.out, "0" if a.variant == "TORCH" else "2") + +import numpy as np +import torch +from ase.build import bulk +from deepmd.calculator import DP +from deepmd.pt_expt.kernels.triton.sezm import so2_value_path as sv + +assert a.warmup >= 3 and a.samples >= 10 +manifest = environment() +manifest.update(model_sha256=sha(a.model), args={k: str(v) for k, v in vars(a).items()}) +manifest["neo_stack_fp32_configs"] = sv.stack_fp32_configs(32, 3) +write(a.out / "manifest.json", manifest) + +if a.system == "diamond": + base = bulk("C", "diamond", a=3.567, cubic=True).repeat((a.nrep,) * 3) +else: + from ase.build import molecule + + base = molecule("H2O") + base.set_cell([4.0, 4.0, 4.0]) + base.center() + base.pbc = True + base = base.repeat((a.nrep,) * 3) +rng = np.random.default_rng(0) +frames = [ + base.positions + 0.02 * rng.standard_normal(base.positions.shape) + for _ in range(max(3, a.warmup + a.samples)) +] +calc = DP(model=str(a.model)) +inner = calc.dp.get_model() +assert not inner.training, "Inference must not enable model AMP through training mode" +write(a.out / "model_definition.json", calc.dp.get_model_def_script()) + + +def evaluate(pos): + calc.reset() + atoms = base.copy() + atoms.positions = pos + atoms.calc = calc + forces = atoms.get_forces().copy() + return { + "energy": np.asarray(atoms.get_potential_energy()), + "forces": forces, + "virial": np.asarray(calc.results["virial"]).copy(), + "stress": atoms.get_stress().copy(), + } + + +def compare(got, ref): + result = {} + for key, value in got.items(): + expected = ref[key] + assert value.shape == expected.shape + finite = bool(np.isfinite(value).all() and np.isfinite(expected).all()) + if finite: + d = np.abs(value - expected) + ratio = d / (1e-5 + 1e-4 * np.abs(expected)) + result[key] = { + "passed": bool((ratio <= 1).all()), + "finite": True, + "max_abs": float(d.max()), + "mean_abs": float(d.mean()), + "max_relative": float((d / np.maximum(np.abs(expected), 1e-8)).max()), + "max_ratio": float(ratio.max()), + "bitwise_equal": bool(np.array_equal(value, expected)), + } + else: + result[key] = {"passed": False, "finite": False} + return result + + +result = {"variant": a.variant, "n_atoms": len(base), "status": "running"} +try: + torch.cuda.synchronize() + before = { + "allocated": torch.cuda.memory_allocated(), + "reserved": torch.cuda.memory_reserved(), + } + start = time.perf_counter() + evaluate(frames[0]) + torch.cuda.synchronize() + first_ms = 1000 * (time.perf_counter() - start) + first = { + "allocated": torch.cuda.max_memory_allocated(), + "reserved": torch.cuda.max_memory_reserved(), + } + print("first", first_ms, first, flush=True) + write(a.out / "first.json", {"first_ms": first_ms, "memory": first}) + for pos in frames[1 : a.warmup]: + evaluate(pos) + wall, gpu = [], [] + for pos in frames[a.warmup : a.warmup + a.samples]: + torch.cuda.synchronize() + s, e = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + start = time.perf_counter() + s.record() + evaluate(pos) + e.record() + torch.cuda.synchronize() + wall.append(1000 * (time.perf_counter() - start)) + gpu.append(s.elapsed_time(e)) + complete = { + "allocated": torch.cuda.max_memory_allocated(), + "reserved": torch.cuda.max_memory_reserved(), + } + torch.cuda.reset_peak_memory_stats() + for pos in frames[a.warmup : a.warmup + a.samples]: + evaluate(pos) + torch.cuda.synchronize() + steady = { + "allocated": torch.cuda.max_memory_allocated(), + "reserved": torch.cuda.max_memory_reserved(), + } + arrays = { + f"{i}_{k}": v + for i, pos in enumerate(frames[:3]) + for k, v in evaluate(pos).items() + } + np.savez_compressed(a.out / "outputs.npz", **arrays) + accuracy = {} + if a.reference: + with np.load(a.reference) as ref: + accuracy = compare(arrays, ref) + repeats = [] + for _ in range(3): + repeated = { + f"{i}_{k}": v + for i, pos in enumerate(frames[:3]) + for k, v in evaluate(pos).items() + } + repeats.append(compare(repeated, arrays)) + from torch._inductor.codecache import PyCodeCache + + wrappers = [ + str(m.__file__) + for m in PyCodeCache.modules + if "def call(" in Path(m.__file__).read_text() + ] + assert wrappers, "No compiled wrapper; eager must not be reported as compiled" + result.update( + first_ms=first_ms, + wall_ms=stats(wall), + event_elapsed_ms=stats(gpu), + event_scope="entire API call on default stream; includes host gaps, not kernel-sum", + throughput_atoms_per_s=len(base) / (np.median(wall) / 1000), + memory={ + "before": before, + "first": first, + "complete": complete, + "steady": steady, + }, + accuracy=accuracy, + precision_pass=all(v["passed"] for v in accuracy.values()) + if accuracy + else None, + finite=all(bool(np.isfinite(v).all()) for v in arrays.values()), + repeat_noise=repeats, + wrappers=wrappers, + gpu_end=environment()["gpu"], + status="completed", + ) +except Exception: + result["status"] = "failed" + result["exception"] = traceback.format_exc() + print(result["exception"], flush=True) +finally: + write(a.out / "result.json", result) + print( + { + k: v + for k, v in result.items() + if k not in ("repeat_noise", "accuracy", "wrappers") + }, + flush=True, + ) +if result["status"] != "completed": + raise SystemExit(1) diff --git a/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort.py b/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort.py new file mode 100644 index 0000000000..90b579489d --- /dev/null +++ b/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort.py @@ -0,0 +1,131 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +# ruff: noqa: T201 -- manual benchmark CLI output +"""Reproduce full-model first-call, global and steady SO(2) memory results. + +This manual CUDA benchmark is not collected by pytest. Checkpoint files and +generated compiler caches are intentionally not included in the repository. +""" + +import argparse +import os +from pathlib import Path +import runpy +import sys + +import _so2_edge_cohort_benchmark_common as common + +parser = argparse.ArgumentParser(description=__doc__) +parser.add_argument("--model", required=True, type=Path) +parser.add_argument("--out", required=True, type=Path) +parser.add_argument( + "--source-root", type=Path, default=Path(__file__).resolve().parents[4] +) +parser.add_argument("--mode", choices=("base", "ecs", "torch"), default="base") +parser.add_argument("--gpu", default="0") +parser.add_argument("--nrep", type=int, default=2) +parser.add_argument("--warmup", type=int, default=8) +parser.add_argument("--samples", type=int, default=30) +parser.add_argument("--reference", type=Path) +parser.add_argument("--cache-dir", type=Path) +parser.add_argument("--allow-warm-cache", action="store_true") +args = parser.parse_args() +common.ROOT = args.source_root.resolve() +original_setup = common.setup + + +def setup(gpu, out, level="2"): + """Select code and precision before importing the model implementation.""" + original_setup(gpu, out, level) + os.environ["DP_SO2_EDGE_COHORT_INFER"] = "1" if args.mode == "ecs" else "0" + if args.cache_dir is not None: + cache = args.cache_dir.resolve() + if cache.exists() and any(cache.iterdir()) and not args.allow_warm_cache: + raise ValueError( + "nonempty cache: pass --allow-warm-cache or use a new directory" + ) + os.environ["TORCHINDUCTOR_CACHE_DIR"] = str(cache / "inductor") + os.environ["TRITON_CACHE_DIR"] = str(cache / "triton") + + +common.setup = setup +implementation = Path(__file__).with_name("_so2_edge_cohort_benchmark_impl.py") +sys.argv = [ + str(implementation), + "--model", + str(args.model), + "--out", + str(args.out), + "--gpu", + args.gpu, + "--nrep", + str(args.nrep), + "--warmup", + str(args.warmup), + "--samples", + str(args.samples), + "--variant", + "TORCH" if args.mode == "torch" else "BASE", +] +if args.reference is not None: + sys.argv += ["--reference", str(args.reference)] +namespace = runpy.run_path(str(implementation), run_name="__main__") +import torch + +result = namespace["result"] +result["variant"] = args.mode +memory = result["memory"] +# The implementation resets counters only for its separate steady replay. +# Preserve the preceding high-water mark, including model load and first JIT. +memory["after_validation"] = { + "allocated": torch.cuda.max_memory_allocated(), + "reserved": torch.cuda.max_memory_reserved(), +} +memory["global"] = { + key: max( + memory[phase][key] + for phase in ("first", "complete", "steady", "after_validation") + ) + for key in ("allocated", "reserved") +} +memory["global_first_observed_phase"] = next( + phase + for phase in ("first", "complete", "steady", "after_validation") + if memory[phase]["allocated"] == memory["global"]["allocated"] +) +result["protocol"] = { + "seed": 0, + "coordinate_std_angstrom": 0.02, + "cache": "warm_allowed" + if args.allow_warm_cache + else "new_inductor_and_triton_cache", + "primary_memory": "global high-water mark including model load and first JIT; never substitute steady", + "tf32": False, + "amp": False, + "weight_gradients": False, + "cold_scope": "new process and application compiler caches; driver/system caches are not purged", +} +result["source_hashes"] = { + str(p.relative_to(common.ROOT)): common.sha(p) + for p in [ + common.ROOT / "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py", + common.ROOT / "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py", + ] + if p.exists() +} +assert torch.get_float32_matmul_precision() == "highest" +assert not torch.backends.cuda.matmul.allow_tf32 +assert not torch.backends.cudnn.allow_tf32 +common.write(args.out / "result.json", result) +if args.reference is not None and not result["precision_pass"]: + raise SystemExit("accuracy check failed; thresholds were not relaxed") +if not all(v["passed"] for repeat in result["repeat_noise"] for v in repeat.values()): + raise SystemExit("within-process reproducibility check failed") +print( + { + "mode": args.mode, + "p50_ms": result["wall_ms"]["median"], + "first_peak": memory["first"], + "global_peak": memory["global"], + "steady_peak": memory["steady"], + } +) diff --git a/source/tests/pt_expt/kernels/test_so2_edge_cohort.py b/source/tests/pt_expt/kernels/test_so2_edge_cohort.py new file mode 100644 index 0000000000..087ab83624 --- /dev/null +++ b/source/tests/pt_expt/kernels/test_so2_edge_cohort.py @@ -0,0 +1,201 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +"""Generated-input checks for the opt-in frozen Neo edge-cohort prototype.""" + +from __future__ import annotations + +from types import SimpleNamespace + +import pytest +import torch + +pytest.importorskip("triton") + +from deepmd.pt_expt.kernels.triton.sezm import so2_edge_cohort as ecs +from deepmd.pt_expt.kernels.triton.sezm import so2_value_path as sv + +pytestmark = pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA required") + + +def operands(edges: int, mode: str = "random") -> tuple: + """Generate well-conditioned operands without a downloaded checkpoint.""" + torch.manual_seed(719) + u = torch.randn(2, edges, 320, device="cuda") * 0.1 + if mode == "zero": + u.zero_() + alpha = torch.rand(edges, 2, device="cuda") * 0.8 + 0.1 + if mode == "tiny": + alpha.fill_(1e-5) + w0 = torch.randn(3, 2, 128, 128, device="cuda") * 0.01 + w1 = torch.randn(3, 2, 192, 192, device="cuda") * 0.01 + gw = torch.randn(2, 2, 32, 96, device="cuda") * 0.01 + out, z, uf = sv._mixing_stack_impl(u, alpha, w0, w1, gw, 3, 32, True) + go = torch.randn_like(out) * 0.1 + return ( + go, + out, + z, + uf, + alpha, + w0.transpose(2, 3).contiguous(), + w1.transpose(2, 3).contiguous(), + gw, + gw.transpose(2, 3).contiguous(), + 3, + 32, + True, + ) + + +@pytest.mark.parametrize("edges", [0, 1, 37, 129, 1025, 8193]) +@pytest.mark.parametrize("cap", [64, 8192]) +@pytest.mark.parametrize("mode", ["random", "zero", "tiny"]) +def test_cohort_matches_native(edges: int, cap: int, mode: str) -> None: + """Cover tail cohorts, two focus strides, legal tiny alpha and no mutation.""" + args = operands(edges, mode) + copies = [x.clone() for x in args[:9]] + expected_u, expected_a = sv._mixing_stack_bwd_impl(*args) + go, out, z, _, alpha, w0t, w1t, gw, gwt, *_ = args + actual_u = ecs.cohort_input_backward_impl(go, z, alpha, w0t, w1t, gw, gwt, cap) + actual_a = ecs._cohort_alpha_backward(go, out, alpha) + for actual, expected in ((actual_u, expected_u), (actual_a, expected_a)): + assert torch.isfinite(actual).all() + torch.testing.assert_close(actual, expected, rtol=0, atol=0) + for before, after in zip(copies, args[:9], strict=True): + assert torch.equal(before, after) + + +def test_compiled_dynamic_cohort() -> None: + """The opaque runtime edge loop supports online dynamic graph execution.""" + compiled = torch.compile(ecs.cohort_backward, fullgraph=True, dynamic=True) + for edges in (37, 129): + args = operands(edges) + actual = compiled(*args) + expected = sv._mixing_stack_bwd_impl(*args) + for a, b in zip(actual, expected, strict=True): + torch.testing.assert_close(a, b, atol=0, rtol=0) + + +@pytest.mark.parametrize("dynamic", [False, True]) +def test_compiled_native_backward(dynamic: bool) -> None: + """Optional strides must preserve the default native compilation path.""" + compiled = torch.compile(sv._mixing_stack_bwd_op, fullgraph=True, dynamic=dynamic) + for edges in (37, 129): + args = operands(edges) + expected = sv._mixing_stack_bwd_impl(*args) + actual = compiled(*args) + for a, b in zip(actual, expected, strict=True): + torch.testing.assert_close(a, b, atol=0, rtol=0) + + +@pytest.mark.parametrize("edges", [0, 37, 8193, 16384]) +@pytest.mark.parametrize("mode", ["random", "zero", "tiny"]) +def test_single_cohort_owned_output(edges: int, mode: str) -> None: + """Small-cohort reuse changes neither gradients nor caller-owned storage.""" + args = operands(edges, mode) + copies = [t.clone() for t in args[:9]] + go, out, z, _, alpha, w0t, w1t, gw, gwt, *_ = args + expected_u, expected_a = sv._mixing_stack_bwd_impl(*args) + actual_u = ecs._single_cohort_input_backward( + go, z, alpha, w0t, w1t, gw, gwt, ecs.COHORT_EDGES + ) + actual_a = ecs._cohort_alpha_backward(go, out, alpha) + for a, b in ((actual_u, expected_u), (actual_a, expected_a)): + assert torch.isfinite(a).all() + torch.testing.assert_close(a, b, atol=0, rtol=0) + for before, after in zip(copies, args[:9], strict=True): + assert torch.equal(before, after) + + +def test_compiled_cohort_bucket_boundary() -> None: + """A dynamic compiled graph handles both sides of the small-E boundary.""" + compiled = torch.compile(ecs.cohort_backward, fullgraph=True, dynamic=True) + for edges in (16384, 16385): + args = operands(edges) + expected = sv._mixing_stack_bwd_impl(*args) + actual = compiled(*args) + for a, b in zip(actual, expected, strict=True): + torch.testing.assert_close(a, b, atol=0, rtol=0) + + +@pytest.mark.parametrize( + "lmax,cf,apply", [(2, 32, True), (3, 64, True), (3, 32, False)] +) +def test_unsupported_layout(lmax: int, cf: int, apply: bool) -> None: + """Untested layouts must not enter the experimental implementation.""" + args = operands(1) + assert not ecs.supports_edge_cohort(args[0], args[2], lmax, cf, apply) + assert not ecs.supports_edge_cohort(args[0].cpu(), args[2].cpu(), 3, 32, True) + + +@pytest.mark.parametrize("reason", ["weights", "saved_z", "saved_u", "create_graph"]) +def test_training_dispatch_preserved(monkeypatch, reason: str) -> None: + """Weight/state/higher-order requests bypass ECS even when opted in.""" + args = operands(1) + go, out, z, uf, alpha, w0t, w1t, gw, *_ = args + u = torch.zeros_like(uf) + w0 = w0t.transpose(2, 3).contiguous() + w1 = w1t.transpose(2, 3).contiguous() + ctx = SimpleNamespace( + saved_tensors=(u, alpha, out, z, uf, w0, w1, gw), + needs_input_grad=( + True, + True, + reason == "weights", + False, + False, + False, + False, + False, + ), + lmax=3, + focus_dim=32, + apply_alpha=True, + ) + calls = [] + + def training(*unused): + calls.append(True) + return torch.zeros_like(u), torch.zeros_like(alpha), w0, w1, gw + + def forbidden(*unused): + raise AssertionError("ECS entered a training/higher-order request") + + monkeypatch.setattr(sv, "_EDGE_COHORT_INFER", True) + monkeypatch.setattr(sv, "_mixing_stack_train_bwd_op", training) + monkeypatch.setattr(ecs, "cohort_backward", forbidden) + with torch.set_grad_enabled(reason == "create_graph"): + sv._mixing_stack_backward( + ctx, + go, + torch.zeros_like(z) if reason == "saved_z" else None, + torch.zeros_like(uf) if reason == "saved_u" else None, + ) + assert calls == [True] + + +def test_frozen_dispatch(monkeypatch) -> None: + """Enabling the switch actually changes the frozen inference dispatch.""" + args = operands(37) + go, out, z, uf, alpha, w0t, w1t, gw, *_ = args + ctx = SimpleNamespace( + saved_tensors=( + uf, + alpha, + out, + z, + uf, + w0t.transpose(2, 3).contiguous(), + w1t.transpose(2, 3).contiguous(), + gw, + ), + needs_input_grad=(True, True, False, False, False, False, False, False), + lmax=3, + focus_dim=32, + apply_alpha=True, + ) + monkeypatch.setattr(sv, "_EDGE_COHORT_INFER", True) + expected = sv._mixing_stack_bwd_impl(*args) + with torch.no_grad(): + actual = sv._mixing_stack_backward(ctx, go, None, None) + for a, b in zip(actual[:2], expected, strict=True): + torch.testing.assert_close(a, b, atol=0, rtol=0) From 9e2e4c5de1b90cf2d6bc8b2706bc103a06778dae Mon Sep 17 00:00:00 2001 From: Macqueen Ma-hnu Date: Mon, 19 Oct 2026 15:30:57 +0800 Subject: [PATCH 2/7] test(pt): add counterbalanced ECS latency validation --- .../ecs-edge-cohort-benchmark-results.json | 4 +- doc/development/ecs-edge-cohort-benchmarks.md | 12 +- .../ecs-edge-cohort-controlled-raw.json.gz | Bin 0 -> 1311322 bytes .../ecs-edge-cohort-controlled-results.json | 4593 +++++++++++++++++ .../ecs-edge-cohort-controlled-timing.md | 235 + .../_so2_edge_cohort_benchmark_impl.py | 2 + .../_so2_edge_cohort_controlled_worker.py | 245 + .../kernels/analyze_so2_edge_cohort_clocks.py | 76 + .../kernels/analyze_so2_edge_cohort_paired.py | 229 + .../analyze_so2_edge_cohort_same_context.py | 104 + .../kernels/analyze_so2_edge_cohort_serial.py | 112 + .../benchmark_so2_edge_cohort_paired.py | 228 + .../benchmark_so2_edge_cohort_same_context.py | 326 ++ .../benchmark_so2_edge_cohort_serial.py | 191 + 14 files changed, 6352 insertions(+), 5 deletions(-) create mode 100644 doc/development/ecs-edge-cohort-controlled-raw.json.gz create mode 100644 doc/development/ecs-edge-cohort-controlled-results.json create mode 100644 doc/development/ecs-edge-cohort-controlled-timing.md create mode 100644 source/tests/pt_expt/kernels/_so2_edge_cohort_controlled_worker.py create mode 100644 source/tests/pt_expt/kernels/analyze_so2_edge_cohort_clocks.py create mode 100644 source/tests/pt_expt/kernels/analyze_so2_edge_cohort_paired.py create mode 100644 source/tests/pt_expt/kernels/analyze_so2_edge_cohort_same_context.py create mode 100644 source/tests/pt_expt/kernels/analyze_so2_edge_cohort_serial.py create mode 100644 source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_paired.py create mode 100644 source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_same_context.py create mode 100644 source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_serial.py diff --git a/doc/development/ecs-edge-cohort-benchmark-results.json b/doc/development/ecs-edge-cohort-benchmark-results.json index 7a1225794f..c56875fa35 100644 --- a/doc/development/ecs-edge-cohort-benchmark-results.json +++ b/doc/development/ecs-edge-cohort-benchmark-results.json @@ -5197,6 +5197,6 @@ "Latest cold-process matrix covers Neo N64 only; no multi-model/PT2 acceptance claim.", "Small-path residual reuse overlaps the earlier internal inplace optimization; percentages are not additive.", "Earlier opaque two-cohort N64 path regressed 6.85-7.81%; it is not the reported small path.", - "No stable latency speedup is claimed below 3%; full model outputs are tolerance-equivalent, not bitwise guaranteed." + "Cold-process percentage differences alone are not significance tests; the fixed-3%-noise interpretation is retired by the controlled timing follow-up. Full model outputs are tolerance-equivalent, not bitwise guaranteed." ] -} \ No newline at end of file +} diff --git a/doc/development/ecs-edge-cohort-benchmarks.md b/doc/development/ecs-edge-cohort-benchmarks.md index f36a81e842..52a47a0d1e 100644 --- a/doc/development/ecs-edge-cohort-benchmarks.md +++ b/doc/development/ecs-edge-cohort-benchmarks.md @@ -1,5 +1,11 @@ # Experimental SO(2) edge-cohort inference backward +**Update:** the cold-process numbers below remain historical measurements, but +their earlier fixed-3%-noise interpretation is retired. See the +[controlled timing follow-up](ecs-edge-cohort-controlled-timing.md) for aligned +autotune choices, counterbalanced same-context normal-API measurements, +process-level uncertainty and negative experiments. + This opt-in experiment targets first-order input and alpha gradients of a frozen DPA4-Neo model. It is not a training optimization and does not change the default inference path. Enable `DP_SO2_EDGE_COHORT_INFER=1` **before importing the model**. @@ -100,8 +106,8 @@ were also identical. Memory columns report the worst process, not its average. Baseline process P50s: 12.157611 / 11.771478 / 12.372728 ms. Candidate process P50s: 12.398105 / 12.254008 / 12.313776 ms. -The latency difference is within the chosen 3% noise band; there is **no claimed -stable speedup**. The result is a reproducible memory reduction with no repeat +The single-batch latency difference alone is not a significance test; there is +**no claimed stable speedup**. The result is a reproducible memory reduction with no repeat of the original approximately 7.8% small-system regression, not proof of zero time cost. First-call compilation latency itself is approximately two minutes in this fresh-cache protocol and is not hidden. @@ -145,7 +151,7 @@ complete training run. Earlier opaque two-cohort N64 runs regressed by 6.85-7.81% despite reducing memory. The compiled single-cohort branch addresses that small-system penalty; it must not inherit the earlier 9.46% cold-peak reduction claim. Differences -below 3% are treated as noise, not a demonstrated speedup. Earlier diagnostic +are now evaluated with process-level uncertainty, not a fixed 3% cutoff. Earlier diagnostic workers produced different baseline timings; their numbers are not mixed into this same-entry-point comparison, and the cross-day difference is not uniquely attributed to a hardware cause. diff --git a/doc/development/ecs-edge-cohort-controlled-raw.json.gz b/doc/development/ecs-edge-cohort-controlled-raw.json.gz new file mode 100644 index 0000000000000000000000000000000000000000..5b5065bbaaa1ce4d71ff8d353974c23dd0419c31 GIT binary patch literal 1311322 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

XZ z6D}Bv8zoM36DaB_vfQ5sQiW7e`1PoOIf)W9fQ-HW=a*M*dz`TVU}_)cO`x5riV|+E z*wKuwX^IWxQzkX@#UM0ASB|DTl_2GD`&&jTG?(=zaBDC8U}vddm<}sA(LH~YH0WTF zN?CRwd||a$qm=An}A^sfY|h-m$Ac5M>m(Fm;rwV9e*b z``D4>{PEL5*J~;u?=}*La;naq$mh0UnwzO&C=FvKEN;gr_6ydKr31Phxv!4@K=3AT zDH>aShVN?>u=6TjNj?HzAoTRV`tYEJlnpu*^U>N2)QlIlg~N7cOJt>M@0j}zAWI(4 zn38mU*?M8q4*s{OpYJp@-BXg<=_J zv48zwS6ClMCJp8O^UFK8|1AzeBz&87$gu~hPmEGS(hdH5ZB#cESezH+;7>0d(kGVj zUxx(ce+Ux9UFzaqu1`4M1`w(_n7}tJxYyE#NCSN^N6dFR#%Ss`(qSF_N0*xr8*y%W zAQ7NHGr>>vh+<0x6*n$aePHXtsHJ!-B120^Mj1?U>cv+bYZRIg`Yt@9VYL7dB?x#; z;qD%4nO@qmWAOg@W%d>~vrq}QL&g;&houS0b9Q`%{I0y6DWEgJ#Ms*La+oWEHB8N@ z%kvIEG|EiJ>T5y>PZUD{n>~u=YAwrdZ4k|^Ow(aW)nJB+sSO)x2#v9F(OctzJJ}cn zZ;&44b11wO#JdxadzkIM?p>5XL|M>o2#h=_qVyIDLxo_1;5jRZtjBeNBRJ2|A-kQy z+J)Dqw+iz$ZY$Lly(YTtG#7+P&oCN7>+Q*}w3*=<2`hxO)CeoK;;*#V^3&JlIG z^D>8+MC?b#XBP1sZtZm;#Dqx4hRe0ic66x~h!M&hCk000wWI#_5L3zXNOdlomu@AO zG~5F9bkeDdrI#^~n^Ko}Z{G|C2_>3R{r-R0#aM~)=ExFyRtx5s(DpZ;_zg&0yEAS4 zv|-Ax-Z2G!!$Y7>$2VL9E7SI&UuJ=#L_0BMf7miv6fjM%TjpYgR~v0=k^eJHNz|-p zF&tn4y9a<%xsRs?!UKo>*G%gB+XP(We)sZHkeY%$Jbk8pIq;mY zhclTa4+v{+*<0gjo3YdSFo zR}ic*w`1vO*HQl^t}Ja#$x{kHi!)?Aq&ZDmM_ED zdfCC$V%An7(BuCgQ)fN4O+v+|)6HZ8{$bN%^n(UMrM&(xQ<`{4l^byh#Tsl5V!4T7 z#|IrJS`9xreay@Anzrew#LgARcz*oq{reOlfV?*!SuzBhTXw+!z6ixgq{XxgizXOS zp`w5%E1Xw3$p3ux4u}LHsIA7lO-t7I*xCmVa!itZdxmBGOUJk6srjm z7;9ZvDKyLHZM4>VAPVAuyEVp4o>*C1EKmp> zB#7z!cNXYL(!93pQhi%7kdw;f1O$=}G4ZGtZgxdb3^EFs=Eh6g3*WN1UBlcP?H2*Q z;~-a{QbMST*#Tmdtux9N>Rj47ppd2HHaaKob$}-^=s0>VWxpsi%A&+s6idL`ZwX>j zTL)aBTlorbK+}W&)tXV#4`rb?*aJlaO%vXrxQBA05EwP0VB;4h83mzs`bMiWu=WQh z{{TuBMjUniU%g@!0rU^i_0JD0#g2xFjK+7UU{Y1C%%bx4ihZeEzQ$r$*RWEE1~~rE zw$2OwXnfSCQv& z(v_Hb5Z)Xa@xMW3no@~x6A5G7L{#d|F$k(m9Z)zFHfLEbGGG8(BgoI_bV zqd5D%_j?u&__^lxSf)@nwoshg;-TnJ25a3ed?ZtR_;%(qzr@61NzR)QVOrQP;TlE2 zoleglYAjZHICfo1<)$X{jFalXpKxoH$t_Mb+LYGsTPN08OzlN& zO&v~k6uoYG{cA7gt%zyHg)tM_X0w+Xtnk)5c`yfof4y{Y$1f9`C-#2kw8NxgE)Vi( z&7uPa_IVlhVQU>|CN9t0?nc51i#)O2odjCg!drKyCi_BYz&#Q4c|_GYu(KM{{D{9r zN+nl=CWrGmlTr&wXNuMpP=O3e2%~7^&tD?ma~bA2X5gJblouW`#7R^k>^&)TKOA6p z666(VKfFX4qdpD%;mcKMH*m6u1+goBTL+#Iv_yr6Fo7p~=kkOI2gJIGNM2$lRq23} z&4HIa<~nemY4bFvef`X`zkorlmzhpqoG~}@ND*`(6gU+lz@y#8ti!D!ZSpmqf~eytX(h#y-^7Ki^; z@!@^x=`i&0wyxqty?`k37<1;6W*R*+nq}*3z_`j=Zi!1V@lOI z!Q5c=4hV)fiUIpesgo69%NYIqrLSwS+uqlS=X53ue1~Xb84!ta{BAG7_dEB(bo`$^ zkg0X*{bYtB*NJa{kp}%+QK{kLUxk`Ze`gv*mu!7WB#M@r05GH1 zTeoZ~s#fWt^Y!Fo!6qYpV~3DLTmz}@jO>dixil09c3T2I$+<<|bfl;*t4hJ(E&rd!|7a0J&5O|#eI zm4AvKgw?yr!^2+v zY6tD11^V>T-xk=e0|{oRw(-(uGDdBmnVGX=ejo89d%&K7iZ}W!I4aj|rFjr9tPTsj z7#v=Tqhg389CU1=;rjKPc0;^~P=qYbO9XH?oPL*SAb>b=U|>TrY~-g1Thk|`MeuGy z=7_qV2BOUOW`^AIS~A-+-2#>l2`}vsYH&~DfNBS01WTK(iIvbX%ph`Z*h2Xv{WhhV zat4XotEo>_mB!j!!IOqLB=ipT@z>pngla+CL@^A3pYmpz{$xjK3!}&53(X{YR}7-z z_W~Vuy1aDfQxfFpIne6{V9I6Aw(-+pB_X{VgFu60-RyRnt`NuwSw(hj9y7EeYD5s) zW`Nrx3D(!B!j>=_t{A;XDpc6!^+*`Z%%m`R?W+k_VR1 z+b03u-9D(epin$^b6?=P6>^8%WK-rD{146q@qEKc#UIuq!c7ErlH{3`np{hVRFKY* z{|*n*&Lyc?n{RkfmER79X8rP1WO+_^1@jt#R8e!oj)+n%ua5yfeC?% z!#Mu~RkU0dffJmBD_~eD`~8dT*dvrIon(Qm7})e0yL34v=v6pu6N~zKQYd2)0>-nl zYAWx)3k+;;$VmjpxmCFg|}M#W7iW3I_s@0HILrJdPZM z@vI%|Ng`zI1_pO7eAx-%W&dGxm1Hm6GW7EA6NAb>L<|xa4xKq~?I$ouSCI93dIV7T3on z%&Hi3uhc4nh-P5I1nywc!RRHPcK%CxDNvTPc{dP;)?qnSV*?>jG6ZD867Pg!DdCK} z#lstV2}J_$`EVUsvQhY@fGu%e;gpepj)t)W4Hvco_0&D~A&Ued_b>u1liUbHjkPAW z0E9+&W1cpnz+1Z%=2M6_=7}WC@|C{RI4$)Jm|H8mWNVh|R35=m5UzKKChH!^^fHa^k@sSnXTD|P8>t&klb*Tk{7HxTY9 zV9_L(vkcs{>GI>|;Ye~}_&w(2+B6V*hkcVdMn~v+nT)z7RRP8!}+ zlGxwAVOIKIB8tz>Ai6wIpc@}6gWNcV%t zhL=uTLva?o2svfc%m|1iK7)S*1gOXok6j7jA%;L+yjaN5_cG2d_7zBXomr1AmkpdE zc+&5uc~@D9m{iZxs}U%79}1lIRl(t9W@)EOhTN~9zJ5W(aX$c8=+&U=?`L=ukmQ{J z5M)y#(r>PKuKCyo5%G|2_&hU7mg$a2&znG3ex4@KL2#pvNa)G3qV8hjV}hWYYFj;< zDvE&niL7HAKXs%<3R%XFlQcrs5C_RAL3v#HDwyCny)>c+W;&t5|63EW@?TBFII2ZJkMW-`Ca(C=s^pKN6WoXle_>ZqaD+;~vp;^B#mGc2RQa@IJFdQ%jzm)cy zo4GNt`^EFS9l0qa%epG-N>~-H4n4ld=)Z!VQS~J6Py8GtJ+hb}WLlFAjS+TEig@Rr zl57-B?UGr&)|f${q`Wwpug4|)CqjU<9jLVzhtH>AvsO?WB($dyDT>aIvv491{H!x- zBX=EiO$J#TJ@`)IHDWlleifsFhH5>!f}ngr{|!`NfrWt%LMxm-Wq;BOs2VN%QTs!d zCbPRr7UwW*JVuOodh(d=B0vdsq1Ec^Z!zq=$swCZ)LG~tf%S7*ZHu%;a#**-oaR81 zS}Ys8z>t$O`s6zApMws};TIovaSjaP<8)>o)X{W`nkY{mq9Qz?EU*$D884Fq6#LH0 z5u(T83`igd1T&(HVO+7Aam zcx4rrAqSxBpR`Y(Nrs{%LO)__1}{m*18aInWd@2!sJkN8D@PphqnP@|p?8U{&3VU? z90hCF;B?1)TV&@!a?BG{@niIeSVi6Y`v{o6ABC_6qoA4PF?DF2cq5o~=P}m8Q=SpC zgq#zA^wATc=%iyC3g7+V@eXh?4&Z=SoB$`X%xd+b0ydY4KrJ>FFiYdT@6X&+dY2NbWB&EPx*7R@q0qFEn3r%w8x%g-<~-DF*=b3rB)O03N+`(ne4n zu21{wPI7P!GVDx-i%WaSM$% zA)jg07FT3-Yo7HjtxHF+6FQOn?s8KJpfBMH{a}GidA)90`XO@vEw7ZSoaF~TQ*$`n z1?Ly-!YqMO`}jqn&mUr%T#>;D^aCzU#0^v_1Z(JyZNr+%0cFbkFte? zh~okF1v2@Ld0_&OscA>$#RJG-kxdltPb{&7LL$9%ruX;dixdyK2g(NWfQ7>oHYvC^ zHlVEEra;7Mq2k2H0vi!zPJC3*X;ON$Fe8zgvlFPG5ShM1b$*L6n;cIMW}OjHa!?7G z+O#2V+pXakSFpDfkp7ogAjnPYQNZBDBG3vhcr3#}?$JmW<)?JVz-BezS7j2%U#cSX z1YCs{HzO6<{}K3wbQ>K#up(t-);}@Ev1tJ>Acr;DW#Ik^H7M3wfeNAHuvT1v2_a{! zI;_e6V+pbJ&Z2(DWP(6LeDi9fjK}=T7Debo+%b|H5%6$XhvmqKXh`rep{X+2WPKYB zw#U>?ni^D<$O)#;xSpCud}mg>SFpcqOr&>NDcmVi9pJ3GS>Ir=TNuKoraSFOQNLoJ^j4l{7(aFva zZ*p{_WMPy${-7Cca+UTm9yQC?FZw;8>lb*-v(uhfvfr`=rij4q07WN`5RAN?Tk#}I zmff!h@xnjE-V~&4cN>95%Tu2IM2k_L>Uc%8GoF@#-JB(kXY|_XX!)ns>()q6E{`r; zfwf?4pg{V0X^i|})t_bs-V=4!kAdyoe6fUGyw`W%s6nTo-bfZ^$+HJ^5~}|YItc465Dsj3?Trp9tt-?KrN(uI zYq%=tJC0^_RvE`};0X^WOBy8tiBMJv$T&tte_M`;ZcuQua7wO4A4IRDp&_HWBn)Q4 z5oYKPwfSbc+9Q^M2Gqb^%P}mLxvxvNw=Njj2(u&Si`cYFeI7iVCbyEN#9BKe;(-Mm zi6|bQmYl=JAeXJbgg29OBjkrcqFb>p5hQ_*%~3pwkCv6!yR!$M~Q>o4fW(STC0dSzfU57rt}7RBz7MnawdG0h0Uv8*C4u6pz`wWKNXo{BUz zYl_!RS&IPmbJWR$a}F#p7#lrQzbc#+OI9o;q)J77$wC$VEde6QTnN}CK_C|@9tOhK zqZ#Sy=udn0XdF|$^Oem;&>lf^W$iPTI3kxQyi?K5V*Clbc_6N`#tqs(X4-!8X@6mi zOJqeCef>%NttROwy;PW!)@L$JXsZ3zhnW8-(SZV-kXQca=PSC^rYxC+u;bAGt6v`U z5^-snn*P-h;*fpOefq3`)>aHHXDSfAw%0q+z5j^qL1yg6erVJfYO@zUI9>(3Xm7Cmy96va~~p4r%ccw@PuhF5=NMZ#v&AnsH|ub zj{GRre`=|*t#RG2XW)tB8v-CbWLq((CV{lWF5BFh;0!Ywn$L2Tb*1_39oX?u>S+WO zYXgm7;PfSe;WS{NL5^zLE5VOKWv#Q2vv7MnZhu4vZP$l3q)bie%jOG4!7)8hvuO1~ zk;|cWTxZh#k)|6Q1Qx9w))&oU^c-sgMZFmp6szPa^N;WcF%a}pRz5eKmMJtdf)P>xSv-X#gz#|C@+3!t5X#l%Mx)%136bEcG5;NB;)hD>_>(QfFbhm%gc^Az@&1i zOl^Vcg?^{Sx|x`O!Gs}w)6XcrGvpLCwmr2~v6JP4Bm1SwOA5Xq;Ti#fKYCV+l?GitaP_mC+do|fpAyD6Nr8y0Se0D(i*h7vc?6;S@fK$8Ra*6=KC`+ zbyPzQ0(19>5{t69%fk(8olIb$cxSkgPg5j3(}STABl67kiQ_}Cu5ph_^n#!zQH(-G zHvQ!5sooP;l%~*_>V2qhSJz3anJxfyD+#49+_Nn&L#4}QvbpA4Qfa^<4ljm+N*P_< zp4U-Y1EXCB|KL=2%_JFuf?^2|58eRL)32xzJMBWIeED+MgMnw=c}+8t-G&Sz7ustS zXMY`zskA%rw-;v&ZlNM_bDbZR5CSO($uix%ddG6Fi06k!_&Z${qC)bTY`-RVOplw# zQmA#w%K?6RJBcK~$ljnabweJE)qTHUpmEjQiy%AsuU1Jj9;5vft!nMiC$sAN%WNM> z9ueUkuWD6zAHVYK{ucyxNjn@9%-Lt%mG_CAE*3M`-Pwx5mP27@@e8CftfT^3_~4+) z*<=$>(0z<4qCBIxo5ktyZuz8#?5FgO38u>jq@wfT6_ru^Eoq%FkVN$);=H144t5DN zSQho8AM7_?UJewe|9}Z$E&n;of8YKfe;)e%z}GNgg!64p1mI3<`n}mPQ95v#P%cF8%e+fB-NKf}!wviZB<{Kt{H6FY6(rI^0)U@6He z=*C1BBm-}*cq&tJCx-3|({8EE*JM}~`Gv&IhGy!K1!NNsCxKV#wG1X;gRz2 zj;^+ddC~l5M<;A*mF$ckjBt=LZU{6y!@$eA_T zWUuw$XYIaJU?px+e3A^LA? zH$}nMIF^gDEm~ev)_-Da)>haZX^zJ1B?iqhT<95g(mGQFXhUScc~r?Y2VnQ4 z$;;u+Vu^(AI5C>AOb1JYP8gHYYv=+HH1j!L=xUIUHNT^*e#!g3SqlO7onFIF*bpv^ zERjtz)laTJ+Lig`VhVZm!8a<0hwP%a;ueJ#hJ){y#zf)=d^ULiFQli{j z&nDWyGEkPJCwc6b@On01&YOf>w_0y z0*8#SrIXCXC+9JveSM#pW=7O?^e4Rb>rvhgJxsfauuI2PtLfaO53@LfoS}=b*y?c7 z-_+@dQ;;9OLOzfg44MA3C2L7s(W+BlH1uEzU?;s?hBpD0uo%+n2`N8SNe&+L@NUTP zt6Rg~#5bGyewd=F=Q-~08ZNFMUr_z2zt9u^f18N4e+U~y4g(jiP}aViL988&JJ!bc zp?q9BeGwl7ykvTv?)o0~Fg@jU{8m0Hi;dv6xfizYzrVYvfG@YFvjyN7EvP!acL*oC z#K;7IqJZnh!dC8$^kl<*TfkX`QD5{aXsA|o4O;f(f^T!FQE@rX3o`~J^Yw}z(1S9> zi2E}R`e&6eU~3FGda&zFb)@OJ{;?hnh^{Sm?d{A)s#6^^8ciki&6BjZ{@2t*HqL2l z>7xTxFvdr>p=%ce0puR=EnA1gb+@PZ=raK&lkk}%%ndj=eyHo|NnnyH%nmN|J87*h$(xATLZ#8;L5MU9-6raf9Mq-Y)*rfxShKyKDhVQDng;zU!5$PvP2RWrUDuCez z9m!R>mTuzEtq$VgVRaN8u`ukF*2sUo7jb7F5uI6??H?Q6Bug( zrYMdpe~=Y#$8puKTY6gwY!*2WvGuM-eDQKISmh`meN6~+B(j|j5nUi8EacFg zpwXY4n{aYzto zG$0SVAEz7RGz2TJ(6@K0Xta%1#S3>?yvyp55m~i-+}mp1Td&FB_~W72#r@*ss~8Le z|5<%ry6>h;d!~8y;JZ;Ot~2Mp)p25xrYAjL@aNP@uJd%iqUx114cKXwca{*}VwMx? zdK6NPiWh1}b?)N#OA$bRnuX9P-O`q)S;44o2m$eT`_3@vAC1k4s~t1QNrqcb&sv^# z=6!t7b&G`qks!-mBO=7$1r&$HqUc3lM*p`OA}Zkt)x z6~rKM#u@u`Job5H;+-zp&A^MWgeH?!tWSh2-Mm0v>ZFLl(>Si9Tanx^p`W!Fm16-! zAW#uzxsr~BRFD?D|x6` zJ*hB_L=D8@*YWa|U=c-H*=7zhY|8FiP0GfG3#*OJuTeZ*Qb{tctTM*@#wd~t84V#~ zOEC6^iV3zjUMEgs(eJvjY&R7mJ_eG^$$Q87E%c46ref}gG1Ryfe4Z39obmi`72%=L zm3Z7GV**0==I?j06%k*r$XaV+*IIO=hA7F3(aHQjU(>lMO#$1i-ij7?mkLz?4Qc1n zqs8c)SMMN8165$hLct#MD14(l>598^PBmvLsoN%oWjQGzF@Ua{*W zNgmxYRG<)1N9!AyX;1ta+XNWA@}FPcxP9+I7Om&9g=u(7|8n7&G$U9!SY7c5Bbq^A zRTvfH8H;;(p=(C{&+y={5NV(<#Ql*LaKGizJDoTj?QdofN?j%eJDK6E6qtP3)W|(& zoB3KP64KUN3J5hifBrxuc)$hk?QBeqsPpx8*Yg)C#RDZ`1|o5!I$aaABn8UZ`w4PK z+%-maKbhDvT1=!7$OcP^To0KkW zRx_Av+q7(_KyX~HKxK!qnKs!+8tE@!7$HD#CtYrW)m!80zD3}6wd1@;5s{CCx#P4{ z&X_s-TyjdFest-$-*LJfTRT&Q^+7p`o=cjLvN6YfW{N{mR&BR_;(4TVg`LV-A@#k< z9$7lO{(Qp)2}7*G{C4k*8JsJ|lTTWBCmxv$4n2pT9s4*^`4rZ7QZfum25 zQLXdj{Sc$+FBATQ3d`_-uXk?Wd%9nN>UJQ2+}q`$BUL2_qgHsrRe7IK4sh(tCTv2^ z%Uikk?~{YtKST~<#$0Ihf)yMe8S_OQgnG+c`m%nA&r5$54#}GxL{=LQ^xy#TbKGAz zG){zu#o5_7{)$?^)ydpV)@JZbAsr-271#nUzhdelW~E8sQw&R(SY4b7(}Bxzs48lM z)MVN^3nm3YJ;4i8`QiAtXZL&y`8|g()E$Q9b#eWMU82|+nV_tv>xvbsC~N9ouVD^( zx72gk)fhWF=mBOASx^`$Lmh`-`V!&4HUC?U>@EPb4lM`%g|3oGTy!?|{G;K7jN@R% zwf-_H8@U))BseBl-y?Zh_AgxC#V1%ain!zCGm8tatQwG!z)RvYU=vm}{56dc>FSjs zx=Eg3q)xMnEJp({DO`ZyrsCZ6se=V^hyfx%km~PY8CNo+r zBmVjDVnBGrhy(lB{e1?v>`n|qW7lNphrKm7M`%_MqM8-Yz*KWs0AVnz;zpuIq?5_W ze|mlgh8W!|k)L)I4W)54g*4facgZ}4_s5m8UXt0RgZ*nIB*RHI%;udkPY$U>?di=K zLk$nSkdaM$YlBc0w{ZltUyB9O2;}7&hWkjt3_|*lWARZGeFBeZParXGr{(@Ru!d@XTJC2XG13VPTb-gu%7e~uEYUC9G!q*=RXjd$e5rk9pz|qni^TS zXWDf*L`^EG^=uvY7=GCv@JH7Px9S&YFUO-wa=^X*az2Um>rk>*KsN~g^tZkq+4;1;<$K72Wp}?LhSp&wv&}(6u_}KAoDucO>K10h)8{*`EG}^i+1|KMguw_R~f31 z;f^TzlV;*6aNr=LAi0hQwopYZ86J81yaj=lqoKDx#S@FzZfF9N6FSGa-=|5W6&V-; z(X0Pkld=B-AH*9=iqTMT$XVKy+r4%P%@^(ul{Bx4kToTrZczQdq{zsr9GPF>LCgja zk%;ZFeF;J&gMb>vQKLLlmj*=B{ZKmITJ#vI&aNp zu%krP&!O^(x}l)JtpNBe#$-672v)?98;CPCumSfqW46?_72ZEK7WQ z9naM|OOh#$q&TLLoVjWAkjNY*kIt58uIPvFjgPJfCsuMLqxU{3VNeC#xP~`q5dZ;} z7$yuM9;E0*z0l}B?mwEM_zx+y@2IHOe}@_mRenH#SgT<2PT1f2OO@J}u@zIMAg*LF zObRrUvOfZIJgR(T;1+QvNwkR1+69Q(4mT)pf&|%WiTetadBQfnx zCEYvJ{aGi(Sxe}nK^D9xVmv~W?*PEx3q_S?I8le975uh}(PbQL|9iW>wS&vCag8HA zr3Dhql=KIkDF_3i*0$?Dbh>I%@K0M&M@W1L2BPKq8f?$`v~QHoO@i(jAMt7fSZ_y` zaf`m?-7TCNFdeULI1By@mRY@i239iwr(K+0%?H|)JDkKMnJ$kA_b9m;u&y`;s#4`8 zYYwAk)TIE>W)l(%g#6&bdGY#Pbg`;PYVIKYXe|6js`+WEYgU-vVhxzcwjOLr8Ld11 zq>o1el9(AUwKsAjQXxk0-{#K{GP0H_4B7)!{3S=@>&g4&nd4ta*PlclbF}*aJ%l@S zV=^N&L-gL)pml0EN;!2D(^%=o2{DPZ4caS+Hx8Pd3?_jK1WwpZO{Gk(zw(&#@i;W4 zH9zWP8cvj^?Q)9st)8jBCF6b-3xPms)UAb2wkysugEKEZuNJ3=6IO*@>vg@b-T|^S%Y&b3QaUc&^hRwDB z`auB%9y>0)dMCK@i@RjR2(YwJD{agyesox9L)Y+!O+GaXUF4Cw4@P z0xAopk`4)!yqv&ThdQrX2XGZ<-|G1qy!^q+ciG3!c%CTeX~cFSXAn$B4t)=IPmqPd z_&;t1El4JhNOy`8*~ot2aSkjJI|wxvAhzaJUcqW~RV-3z5)4osR;LNj$`PHBD%+u= z65tUnKAmrMtGU61_p&ylB6KEO)8gaK!IEOIF_`_ULK;ua#R{q;^UF`M-Ygz8wvc(h zTR|UFgU3&SK`2L(`VU=D%j$4W09Hc=5b4EE#^8=;I$NYp=HHDttXT$vF@uFu*vk74o_98O z$g6upGY{jU&zk$;0Wu_|(8|x|D~k0Pf}QrrC8dJn_a&P{ewoyO(PK6( zk&sKIOiJS)^mPh zeie5|7mHi>uQ!4EKLiXaN_J;~fNAks*3hJAOTT&L-d&)^U8bMU3VoI}I4Cp<(eGn! z`3442>4@V?KfqAVA~x?h`IxsxH)@@&6NUX2y zv&dxamdDU9SYG@kLQfGn!DB9Qg!sI0o9V3Jb22x3vQ-jm&ssB3K1CmhwNFZ(DEknb zNa(#@SD%+}Fpw2OwuR7_B0*`Q$GV0qm8eZ7g)a;#2{VM3KlBx%Mlq>|2_6F>p<%rA z-KKGxt_ZCO4~k9$s}4E>zK^@^NTrpQ(2FBt_xLYSdfyh}5ga>N->q>Tl7J)ev5MyN zdECe)TyUbawF8*JEscn3Z8LTclWsetn{qK1W$^lp&Lw|g_uk~f?@rKq$k*f6>dC(RneNF<98BnoGT7NJ`9AaZnYtIU zE6PXg z{)B}!bwJl^s6KvifMwu&oXXcd!ulp=dq?{k#K3}I1y@P+Uxxm(gsq)l1U^qmB@9-0z&B97~a;P=_vH0 znqDK;J8A}RqyzID4Czv=h?P8#*SNri2@E`M9fAhT-GParZGTH^H_eKN@-vEjp;1-g z8%Lps>Lq?Iiw}dA*YiVwHc;Sh8a~MsF4c7E7RG9W=_WBdnT|$gF5meBf&h)1=$H=~ zRo!N*(PaU=0qV%h)UBjLWV}%Ta%ko3r?z`|rUnAN8*WP4&&~IPw&C|}XBP^08&Mog zE3Zo>Y@o+FXIrqV*)V@PJ=BHRuMV~Z6Fv6Wb;Zrr$1IN?qMBn)diE`@4`p!Bu6Ve8m}C zojaj>J7}lGGa=6p5n_dIc}$)K=c2J+{vNA=(-NF>pmSfeRbszT+weW!hbL$Rco8Bz z;8`;yO;96mLx?`t4B~cK`pXgG{({3vf-J#?kKOzxNUq73YLviWm;|yxe;Q)}S{&np z@+|(}U=U!eo}##TwAo1wvTTa2eQZXE$r3DNGzA_o7a|+#YnQP28amN81UZRL0Uz{wphpg$+A@%54y)z-(h3Zb7w>f631;)g(bxpo|6 z$)Yqa$0Xf{)>YANY!}MHm#+VG+vtulB0oxFb7vo9bc)CZY~deQnaSQdO%U)BZ*M2$ ziy)3yukUAKy#gwj>OYC-h`-64EaN22eLrM@`;<|p9pkxfR9zo!t>_MHK@l?HnCM6t z<9^QH2ppRcuM=4_kaADxsF*O976ghR99RHFK)S!z7^UZw63x3q6?Wq z7HoXJIlKPi0PybZ0U?nZ`aD{cpO~iWb!tE~gUlq`BOvP1Q^2)w` zEO+6H)=l#u4zW2sUn&e^SitykpXu~l#tds`05Ivz4fc)WrHkRwU($L=%f<2X;CPx6 zAt}F{9FOF?XuM>s3^9r~AsCLTCngn51hh9h`B=$)OJm6lL*1~5Z^*Z}*3GjjnYnU9sIDQXmOhn(@9D1B+ z!(wIu`H5l=U4Gm_KrP7E?(Vo1JaY+M(VdL5!gfaKPeE4yZWbd`z`;`=0rMicL=e-P z9rTu;zKS5oZQ!~iX8p$$9e*_a_2-EE^#i+nXX^*JcLc;;vd_W(>(u!{4m0TbCm876YqtaacJOq>z$VH!qsHs+{yP{j~h!vOk~tW`G{pt8Wiyy zq$jsLSvq3$QzXv#^6&&gxNf$LOtM000+3F%QMH$YEd*`B}) zjzVxjgi4QrDoBO3AJk(MB!LzCAHG%V+(o1&KG~FoCS8^^PS+DZ4mn`sv+TnqVS{eO zvEPdvFW*XuC7BJI8R5MtQUCgIZ2Uv)Akb$?{H9e6z1cx*@lx}OX!7cJXXL@WEa^=G zsq$@rRK=|PeYoSA(XlCd$D-h=obB=GP0zvBjk6^sBiHSK2J1eYP!Bt5W#Uc_s zNRwF(XTcM>L}Oi18IDxoF#~qSLUVgotCYU315V72(4z5%E3h*Ton#Qvi&pDDMnL5K z@yG|@mAMsRS8R0tg+o^_%TWIQFrHnGGLjM=1v`fVMCLI0gRg#NY$s5J2UzPpSNxfc~V`_+*wg?8jy}9cgk(r0L1#IF%x1s z-i-V(yyqSpzZl85HBh4oDP?n~#6vAV-X8+)(AK`j1F(=!@|K5Dgk#-rtqV7jIGlcB zuYRKp{T$zPl&H)p*Nzl>50iMt%a>BV-I1ml!n^JewC~Hlt2=o8Wa z7agPz4A6*B?WBbf-V8OyuaTf+iL|S1uKfFM?z)@FjT6@5l&K@@E9)Jo&Y>@5>l*Pl zewf=iEUfpVmGT&@SOjQM*C3ZM5F|mRKLtfcG%S?;GX&HLe0?_MA+?i3NgwPw#6rak zwY}tv%64UG|SZgscYFI$)NP|snV z=$K3nh<~s`s<@uqHJSxPAl3dz@7WfMgTj&xN3?mzQz+h5=V2Q4-7RFeoihp~Blih1 zPKvzug@9y`>F-d1{rf$j@elEW=;yIHpamK49uQ=GP2Uqm#d~eTS&qgWIoKPWC_1UY z({w_9bho((Q?}zXqhI9@BpLE?Vn-{`OE5iCJGX~w#R|meJW|a$Agua<^17HRUA5aY zs&~e60~!ZK8YD){Lumlvgsx#KrI%PlfxaKxII*p0j-kUEx+odzAV)O-Tm?%CCjPZl z#M_VMU??`R7_$Qu8U>qrny%8BCS$T=P_zc$lI%$5W@k?Vy1>VljoL3oa1gaSQ>!Z~ZPoE>J_H{9SQ4Qp{_T z^>tW$1ny3uS*@6S%9kbBoVR;AEK)lvy{AYr#NfVuJ!xgrVqQ!>`2SZu9fb-QKS;kc zCt@vNb;B@!g<^yHqszO3r^sg;KL;yAgqC$!Quo( zU5JlNR;}nbqT&YJnz}Dy%C;!!Pg)Skk=9o$<%DQ74l%e|#BYv42jg=t z@`*J6s1mEcIYMEjgubp|)-(3spTqe72b4tnkiAs9raggK9gG^T}up zU?B*BjLF6i&N4bwPsCkh!>Mf?rZ^;EE?_-nA`^CIVJtOv-$_z;*B8AT2Ef4L`{G4c zb`OG*c=z4BLG+zo<4Qq6;1=CS*N(1`7kwwi#^TD8dXn$l5ToS9nQX`dvRNcU*V8eT zsz@_V-+X48psyWmSQ+Y~aO9`!zmE(W{}3{$$-6}+0R8s&Fih=em=$zl-or4E9Z+}g z_8NsLak(pU7!2)qe_MJl6uejo?lZhZ>p(3YCBphF9HF@{W}!2QyJaK`X|+m&GKJ~9 zqH&0Sj|Rc|lj%cPWrUWMg}%35QeBZ>ClPfOIxOk8&E3PqxozmO!A&0fN+lDt*|b#wIYeF$=8Gh zj+)i~I&y`Zum|f{*DWf0NJMkil?*MPs_3EsXfQCstII&n+z`39y2v(ee_zxw$X@I< z(|LwPhJ=wgM9Twp%U7Q47-K1?oGH~iM<#-iacYFIG~m0SlyRj*>3PA$qX~)N*@YSM zu%d}$bghX*SqoLA?H2QpL7SYK1+L0AO@F-$`*~F32Yk=dIsga`d7L^l^xo^S=|_a6bS=}n6uf6KOzph84AirpP*jW()ZUI zhzPCqRX6Lee8gz1&q2GUiog5fCf*>6H33Q=QDRE!5*wO*;d7;^w@mPZA@VVSDoF_` z)hs4eDGzOxF4e07#ut`#2gt3r0Ata5nGN7=iZCrQI@eR>DwJ>n1>GBSMgI<9g@H!+ ztiHaF9Wr8uzH{UP0gv1%I+x`EqSE?rl@RWkz=+aena~aTWcij5A>Yp1$%=3rr*`}8H)a+~Lj*jM7gMAVMQy9<4qnFJ>7hBlA4}-g zuEg>|(pD}{-SqP_RCXl@VN?lmUw>NH1TZ0miTU)be+r-Hq=KJTBVzkGc-T<2o&2=V zmtjAX;;#hb;hZfQZC-}~gmsw_9pRAESRl-gpitYx6VfA(=ir#jvd98F(dQB2PH{RX zJSN&oe{FwlDgGX#XO=y`#EaYZz=C(=PyYaEh5hSYavy;FNhwze6p3 z%h`&`rx@(b$66H-J3({rjyNW!YSqJ{i!VhNiEc(YG<`B+Ussaq6;s#z2YsN~J)bXSd`xl0M{JUQT?Ra7esk2a>>8iDzQh_^v?Q%D5h?txzOp|Ug4h(lz@+dQU}C!-Sq}#8pLwSf49-hIWlnsKj{Um5z-0G&2wB=@0UkF&@4J-3SV;>Ko%l>=A-o%EE3xC*|_0- z_kb&(^ia}+iq6#@Bn>_FFnLbGt>(WI#n13aJ87nV-%pXt@M2X=O1O!aT~qK-``EWS zC0ipK(gk}Fe)H1Au+%?2FjK=U*%{rVlCTS@+6&Nw(vG;Mw0Bf7aT?as~pnJRnz2N}R{CpIn->>{7g)CWay6 zz%YO9l>vHwA~}9-@s};c>z_c*d{YfYBvOX&+_mY)-Z|v(nE0+oKdor;fe8;cqL`*4 z#g}Z|fv>OVPSdKs#zwi9E)=o390a-Q?wJRC>#KZ$BBoe@FPh>w17CM)6hboVQvcJ zMU;>7@F9r-sf~sp%J8Vd)QmU3$A7$^VlALI1f{V1PIfv00DR(P2J?qj8Dz`usowUH3iKm1703_&l?K5HAcLv5_W(J zpBxQM^=$B>eaL7v;T!*J^Ct<)$L31U?iH^?*9*uEDVO!#{OL&kaJy;seHMzZjr?n+ zc(ON7dnD1pyi>`K8%!#1CfJw75{N%(w%t#bry}kZy!W`sP&Y7#oOX`i$YPWE$D#co zkZ^={*$`-$yDv2jYM4m0xB|T=B^D#M`#7H)Zu#91^51GZaA(y7Eg$>}IXGLk-}5y@E9eYRTkgwr3iJ?nip(BfA!{@0yz~ z7%vh_vz`TS;>w-_JC)ofAdrET;ho5-cp}=Na*O^cf>yCCtNwYi%kXt5%kRm&$4`~1 z))7v|I4`rN1w4AMMBk6!&OHTu18_EZkx>=I+u5B;&nzClIw-IZYNE(|Ij`bYW3!+@ zwTB*!Vy=#7b54yy)n26-K&<`JZ3jq<9@S z) z$-fG?cXSw12NLhdSnY4}2TKuj*rI9l%jnt^f=sA(|49i_#vX=dUX5q~!THACPEu-f zh#=@4qIe=Sqw8TLXn)D4W!^Gjb59^fVmP@{>Fkay+qIHEI>o((vT3TV&Hv3DNfTZTW4#*VsG{%X#E5EOc z6w&U;Z?!*9+fL~GhzDd;N1-#Td1NgH-{QiDi)J2=7A%Sxy5cd#f!AIYIX~Q;Xc&GO z8WPX!D4tf-;g230#-&SPN+=KG;K(uH#`AOA5y2Zt8l0B+#Q^CK}Ak2bK&3OUNNino7*!7%W)%Oyf))zT4@M zSaA}&S~}U3>PW3Z4|+%F5>d+1rI&(c;@~Yo%1sOEh=s^p zZm1quo{U`JW2;nfjn$@vDlm|(5-k8YajnCGb3$-skVY?USh&TiicFz8-ILZMu+suN z$^n^5FrP5{kMQW@-Q86I#82MEwW<8o4#pvnQYmP@uQG@UT#jzRd#Sj1XP}#By@JnD zLE;&K1Gl_MUrR++3+AneK_QdW8$JUrb~rrS*Av;!!6NeK-Oj-zjkQQ1^228(&93y9 zz5=~DOyviU(iJU@#_mLI(DNk@;o-3~Nk*?1r-;-#*uVMp`)+mYR_$`To0DXCrXe@7 z&noz^x~B{O`FV}@(MySdDDs-=FUX!S%pSnqWG4>EO!DI*B?0~->q2x5uwMAzMqGr+ zKyeIahmB+WiB7R-#Dq6r)*k-iSepn0sQ&3&o)Gj~IeJgUK+&Z|P|h|-zpcW(KaREa z>~uto2^xDbH6Pjz(64;XRJRaZP1z~MNfMpr_`9?B%YCpF-lfei6VaxK<@KJWa;Q&o z<|yj>2q&=^q5u_EDwZo`>gd3`C8m()FP-V#TS5N822vi>Hp0fWq%1q^s4z10VUX0N*Mha1B9&rR6Q%c z1&JU3%od_Tty`-X$cFwTr86l2*1UVOAHQZJB5+%+-C?bU(bHL!sW zxI%FvBopoya{R<7PMI@^-8c-qLFNH%$>x<7mUI^&;tth4^ike;0P!uK90Hp4qlRvw z@3@x^QZ=YH3}P-#g)dt?w8!W{D<(^7J79k~5^3vH%F{H#=N33LBIZK5KPp7S+hh>Y%2l3D9Jt@*q?soHq z27)_`Rw=eJ%n|qI)g0C$(bDpZ#byrmkQ|k1JPC3}>D@7J1yo+9c#NHGn1e|HfLf|# z>w_nfiCdF3H(2k>JJ{#?oYvi_}{JB?dqs@NZ$j z1N@CJk?O>w5Ee&N9R!aWA`aVtMB85N(Se4GAsbM5Nbu1&Q#RefOkV#KD;R6o6?Px= z`N~4eTnB^>P)Gt(}B~#9K6YlW`OipH<%9pQ+Wpcy-K9*wOkv98WXQM zIZZMGJGP(c(f`~!Cxk}jCs6+L$F^*OO>fkfmnh-py;b^pmc;>+1ekKrC*Qwm3!|ZD zL%coaFP-`4j=MVCZ`iHdU~b2RfHM;~SenOC07vX?q#j&K+MuGidgu;m=XxCG+tG6b z9{}N@Smh`7e)|+z&m4BiFoLQz+B7jsUt1s(Vr^6AN1>>HOOBXy-9W@ZZ^kGKNES)s zC!DO`!W?FW22aNbGGE$S=VHz$9EOKo`4h}UR14e5cnP)feO7E%B=MPBzzpearK4;| zvon=w5ncN%xa54&&_1dy&!pe_-MD{>awqO+#()%~LRH3+)!h6571ygR#o6ZI9^$Yj z>S2LG;(k^aIjNzVO2-l>p6pAahRY11=4)>C5hh!FLRnvpvgJNuV)Sm_SaI5`!p*m5 zoc4=#PcX1cXv}or19}1AJBA??;x()4lfFv7lgY6_aMlYXR+7x|E*`aYtpG-bEIj>> zjlljJ7?56$oRn{Szh#Z+TgeOsS^D;NFy98K!xCKHFrdCciX50RFaL;xR@hBbCpPxo z&mRcKB4bU=-5>!S#K3kVT*}p+VK~hs^;x6wpyJlX^0^|TwTxFGqv$VS z(RmO-)D43d?%n1Zj#j1Pk9mGwoOavNg2)hY6k{%f-$i1CP3+8w0uq%nggT}C zi6cY@cU>+z5q7m!X=O9V`e+~A_~DnRM;Fv{?U^NP@AC7F5n-tz~d zz_Rt!IHG1GRF|d^>%{!G<_|2~Rn6yp=zXmeB#6+N6~Fs~1vEAvJR~^JN})LcTcTF< z?*d3GyODlT1b+TNSVq^ieXKP^8q+HjJvUxjv@vU;VC33=NqdZwHL%vb?MHP2lwyvL zR0K`CaAiCkAi8Kb`r6@2=a*1Tq(F?Pv;$qXQ<8N@OVWuEisuHXQx27@?SF)J~7fvpV9X6$g4;M?bP4XmNBUh1>@Qla%cNxWm~N0BN>X@YwHv zVtJI|QmOMfy*OF+hS0ih$qB${qUli49Yr^^Kr%V%INE8pSpxC$$q&nT>~YOh$8ynF zEqW*M*GF0ibrSdz4>n1A9CGPhj*v*o$-U83SmP}N%lx!s{j|mrB1uz9U5`*2-#ia5 z1vz9jik6;Uw@{ktsMZWyf^xU#rv8`E`;pgYZua+Uvp+j1a-@hBJO3i3{w_)s*18RJd44`I)SDlkG-;!eAaY;-{o&XAhbTazS260u-}X-ap^#(YfSa7}k5k=5 zk&h~Dl=eQ=VK%x&GLhZmYx=d;G zN~8nimgx3;|MFcABi&tJg0@LaK5r&IOm8p}K15aZp?W@m(^XOQDJ6Z(u#)Z}jRn(S zA*v82Cf0TEJFt*WH9Jf8VFgYf&m^i5W6m?GqqU{>uwW4wzZoHy$r5M`v4kZ{or$I= zUsSOluF~+XBM6ugn2ExCi1cuU-+ZlB2%lE{y=sKZ9Cwm`c)_xJD|mNs&+|e>oKm7l zyI2~sw;c38WNWPBYI6E4fz}#KX2;gzj|DJ;+C7f9Q{PZgWpQfc2Cyv9&5u42h>FiNZKF!3};OVpCN+Rd(s z*=BJC6yfXr3NXWkfSms~E+9g6h~J1fJu^kuzG_%?=t92-Q>bIF+38opMaTaQ8-N~{^2_9mgEU1C5?umO;)eQYjVpT z{-PJDk^}ioT6uG(?*TFZ-TG<>hHXX8(9;EN1ajF;&W z`%PN1mluZ(WuUQ@J(E{26Y=wX8{_$TyFwQ{B~@l%U_U^D$Bnkd(g=ZvCWvf0TTa$g zpIVWP_M3vnL2uPB|D3!MoWZR5y)S9_SVBCdhqXD?Z#&Gs&&MYOj+}Y<6~}AeB;*=d zT`WhOq6kYMzM|A4O^1;PRj-lEm%>XC#uh(YMPn0&`}t%NVv6m`HM0i-9|*3v^%lp8 z8Sph)dkQW~+^HH7T$8?H(I}@y5*}Wh2Ven+Nla;>VU)lZVJC@sfV!`6ZSI3KASv+z z<5;YcBH#&yh{DZnK;~be3vOZh+9v4lBE4t^X78s_RbmJxBraK-K7IVZTj6hmP8jIC zm>KjFsTmpUy=@a+oU0-O&O0lt-^dtlOA)>&VdMkK5$8~AbVdZWcZps96joYghJS%x zpe0@BkXzjW<=aa#ZT|p9;P%>^e{mv<0Zh?JJHdR_gd%?2Z)ZA%4ezdBkV~L&x~?Ny zA{449iUzKq=qs$s;wV$|aIP|{#jG1+qO{GbXZTIuVX>WZpUxbNWnPhy`7a@nB%NnMz?zB&{(nin44{IuAN=w3r+qWSk;R znX9lMS_Bm}HbmNP>CiXf?~y1&wP?m4q9-8YNeps3H5~4wvT=@a_00F4r znRV=N-&(jCMjxJ@(94l;eGVIhZjB?TL@&qY;u5$}d^+t>_|HTkg=5F_H2!;fTThc3 zMHd(`D|H)xiK#dyUQbu!^wrZe+z5xJDwsh;E7_F|ZbAMTlV_ ziD#?O#{l*0k|j&%ffF``w}{t+XCD8xQ(-FX4zhfDIvy|Sk*OexoemNz(5R0CTO;P2 zBd!FM#jR#`ZigOsqpch?tlHp{4tTEl&jnu<|!U2Cqx=!Yli8Wn8{UA~2ho z5{qDakI(agl7SD*j55v?YCXh?*E)!PWL1~o)XCnj4tGd&Y;&lo6Eb@v`D67zzdZhd z>#1r2MyQe|H+)|X95EUjtb8}(oO<##7!On3t(P;Nze{*bTH`&MMM@x=#G5ja`_C_L z=6-4bB@~5f9b6R{BiQA`z>luHM=hLl{;mAMF3V{IXqYGB1gTZu|*mcdm)%VionpyNcM3E|KA2@2L- zx-d-GYV=Dv@)oifRrSLpSJe)|i;*mpVU$Hw&CHg-02)bpwx-_x1al6X*$~-Ea z9!FK|kOEW6AvDuX*t_7#=%AUE^V47;AA=Hb;{f7Lyc0^z?m?W@c06r8ZyMJ|Ksr4O z%nfR!V;PWyVi?bk9rQpEQ6iQ0{_JFXiOJ^skhz@4coxMY()uFeM-(4YEx-*sy9VwW z&Va%|#hXThmhSe+w8bPivA;Z_^MG=1)ovbIen0pj!pK7T3Yi)86<2&K)-Qj<9a#BD zpE&5`;r!Sd4O1GP4?rMgJ9I8&5xk|b~FWKwE}i3IW+y& z&I}}|8LWdD3-#~%%$AaUeC3FmLzh{>mBybS+R?G7)!80UJ3dtgHz5)x`+#pmTwk{C zl`~7DzKduNM8iqS^C)XNUH%KF0stM$l$!?j=pDO-aqCGpa@~x@#M^Xp0=0u;GMopy zX8Rn8aF+rJT|JOJOs5q&vxRZWMn@yOzEgPkc)8}ajky+&Ql9V&vO`ZYbt(SQDwxzB z8eK}VsZbRom;j=SmSiLPZ)vOnQ;pj}2RSURpMQmq=hE`6p z-@w1G;m4qN4VovT-;E#Ca!KupTf|ruqMp``ze9{lMk*b7D9hDR?szYN2~xR-oEZ%{ zvxS))S_ib}YRa&Rp{!A6^%Hi&VcxU^hq^QYnt0g1^g?tGgAGgtuPAJwJ{fj&|J7=;trmv6M8M zqrfuDhN^-aJ%@+mf<^TFh(+;Uk>IsEE%ADx;J^-byTS1FjW;|8!N}gRZCqr3$x^;v z?Ql)Wzu=*=zF}f0Byl&Yz zf$TI-XnAj{PWX}Vs(~k+o=^e7V5;Ry#mYrZjZY77W@^iIHyS?xjhLAtq ztwbllL?)p#=1(1ceWl-5qu9JVALPbq6OmPVHPucS!}ZhGZwemJ#TbvdT6ZGPt%;f_ z9*3#S!vrt*c8Ve3JnijQShxG7-YHQuxYweinUu;RjAN)5ldz50OGj&eO5Bjs6QQjw zR;XtYUNJCpf+j6$R9Dl^7Zy&iMRJ+M8F5_!RIFOKq8HYQ!a)#Vz6|}@i<3AEzG*9@ zf)24|I&G0d0f@NHTjrw(9v{Ba)9a@3!1~1LHKu87LO4<9?IuP+*_4Qrj-?v41NKfj zb+gK?GuYw^57P6A6%R@S)E{Qs55^71wxxV6GhhS*0*-XgeX`nwYW4H?1c!kL zq{4B*X058=_v@7sSw#QY11EdOnH%(%ANp20*+(i@*8#rK35?B=hK=l#FCWxTI&%g~ z%yxyRFbZ(RH_>o#1S-xW$kO$=i{Jw_7-6sctE4M68B>`I#m!;*p`Lzo=MS2c!dR2- z)`Dfum(-d%nv*>N@#Boo#o|92BLR$n(HK!w<;{X#KP}v;bkHXAYwSr84~ocYlPY7) zsRYvS5ME^-CAspx?tPi#_YpRNOySJ7@QY*&U7Q^~7NE;5&#(~zMM=oz+8r@_0|+~M zVK1q^s3abS^eU!`#G$fe)&KnRRPTiYC1ZbOzBieyV6&Xz>MwfiUu4y^!VvG;>{pEUfRNaq-hp-{in(r(V3t&g=JK7)J~K{5Z=J3*f% z(0{=K0<*6kD#*bX+ zYJ70OoqGjA5_Aiq4@fR=r#+h!{W0{*@z19r{T~yvVtjJB)!G0%8Z84x#qyZicTUqv zS%36-?9#-_L?4<^@c;aB;db8wlP?b0wXMe?hHf*>?REX*@WV`s@fDUgLt=QimAeNF zIEt>q(TxJ%o;WsiW_q~FPhzZgc_fxr85g8FWU9JBg-=Q<3r?cpbf-6(mCfMx4Q8}U z5NxM?eLXU}IYhxi$EBEd1b-KMH&mJvxr9zwp*p?T|4Ua52<-@*hV+UB?GnwJ(D2bV zM2xiVf3$)C>n05?vqNL63gWf8UIz!X>gTMq5U1-7Jd9EoVRdq^<`P;++WRd-@1Vr+ z$fsiT&z@-DF)G8vqXrFA^P1X&*oXU!bVv~Vj-Qk+49rtGWC!KiqSmoCfQMG`k~s&v zy1{&cnWICrd5$73Wst0q)&5}R zx@K@${tI)cc+t)d8jfUyCRpmcS3-vd`8|%q`}?Bpm-N>2w5q`5Tdu-zy$jueU9@5o zy@MaZ{XQ%f#jB5e_mrTh1 zZg2zCM{Y||{kDWL+-g*%bk%-zxVhfMk2BSGOzm26FfB}aBLDg2-`+b;kyYs~f!_K4 zJ=%k45n}wkLw>@B#f|4E?u<*!_BR9gD*~7Zlg2`VX}~?mqSipif*oC&!dT|QI9;MG zJ~gtVoEe9(4myd_n(yS;UtYOYMpb$z7l)fzH*HZ{CVt{-vL^WfGn00Gq@ScCz@n5K{LnNksiIj}?%78Dlt zIfCg?Wb$S@5k0%UIkrp|nt4j=sUi+5D~&wcw9}|Qm@zp(g}KS4=77g#8uik688)e@ ze8lom7-QNN$HPy%vKWz-l{Zqj;l)#3%uN6?OQ4ZDAzygki4t<;IKHomZ8k)}$g03j zuDgR?=CAb+IZrfVx03ZW2!leL)xFrv!(#?h&C3R@5XaXbj0^~PT9nTD7e9Pw0#al3SL^q`(VA%{Ls-8=({-sU3pbF9gXOb_J~z;o=>WfBkumA zX8#GtY|3v-UC5m?X@g5LpXq5=69{?geb7ksu4$vJ1vj{tBt@|d?Sdzp(#xy-3Rmg8 z6L+$@+9^huiPtR*z!ypcfY5EpQgRgo7l>*R_x)Tharp{wjkRv z3sPHiOfhz#BXUfk8#gEhJX>^zW3A<-2KaWwO}G=a^X{~h|Fu!re?tX=Q;D*x-)~pE z=B8b*MEN3pu-Q-fu3CMQJ|;+W)&q2vKf>X;S&XIt&zSZ@R})74ZJUxb?YB$_AeEr?w!4`_aL?2gdniBfTeaQZ+P69ocMECEh|*FJ^njG}?U4@*Iz z>F1be`i6|_Nbva2FBc)Qb{PfS66D_#*Qvim1wKt-!i>DuoMB2R zev~ZtKEuioUN;IAF29|Ebjq;z(<-;3xd;l>CFF|PDTe2X&YR*r{uY{@jOh2su?Yai zvArJ5zlMU*kE6Ypq%eJlqN+8wm9{S#G&4!H%OnVSR*7|QK*jBt_a7s$NvC6T7cFU) z#GjGgb^K1uZEN{(s}IR-fRFdX<06~^!uCTpp(0`dx<~@H*p=8R3g|N_`04FI(+)G~ zm01NE9kbzPsoYLf&eZ#o-E2Mo*L4VGFz^2T1f*9rHs~zB96(XZRZsAmSTWvV%^~LW zzD_3j1w!I~&{&?xZ&flpusF`FJ4QHrDP8Y!xI57%t7JKhVP?d9_%mokFoEB+DtjX) zPN@7OgF7q5kIdC7(kSPTwUj=Ar1ZWW@=UT^&{%xB#NW>_2Ivt&ppuMjLb;+%(#lsmqBC>n+xfuYj;Ve zZZL%6_=g0^KPR^^2|&&I>su_`_Wv<=ZcB3Hz>)o-F?SFp`mi`nL2n;jND`C~|U@+u+od^h~!C$FB zP+F)<<~tU?Yfc2QZ@qor9Il)l5b~F-(D7Yn77g2R4(`L==dTFaV`7?5zuT;3I@^>; z_X8NBu@BsY1v=_)RDgQqK4l)x6gv$MQBYpcmoDMArb9v-eO-+b zQezQDP=jP$yf|WG_gpV6{YC3IWy+Xcqdgli5h6i9YPU0-zFg9%)2r%{VY3|hhKf(E z;u%|YTRDVvTG}I^xBSs1l$S5g*x=qQ4xzb9?1j<~MxlAjGs_Z37s*oDOPb;A@e4#A z#!?Kvt#rJU-ND-zhHGlpA>|%pirasQIXe2le4D0RkbMzv8SQK_y)QBxZ~&LMf*nC7 zf9wM@%QSgxvuahMz`AGpJXGdp&q=&I29F%n({6 zulA}eHDt+m{I1MWaAhI)9BsQ69tg~2teI9jwtNh{uMx9N#rDMH=wMDz1v`E<_j9hs z1buTD_0TRUxoSO}#WL&-w<0#4CoekvNYkg1UgN|E&5$xug}w#w3?YkDu8w=)5I@L2 z`t2kvNqR!u{A5P=!U83NHOaFhW$jrlKC~9kYLQW7p@Nu-NBS&;SQ6fmM6@n-NuFfV z&tDPAJ55C31019gMggT!U`!s8a=tGG+Zy z>UwFvK4}6S7DneZZgc&u{$i7c-Y;NNMTJ1Gp0UPvNz`}oN)v!NjIT#mEW^RvI-=-W z(2$1B@BGUSuMgLo>YN8SUSuFO{_K16VSQxOzXczIN|G!d$XaLS<}<+Ygg%C z^gx_5sGArkeIvf2Ld@d%_vERhy8MVzPG)5m<(Sl(tC}+kR&VVJsMy*+Km0=hCj8B!{HIM+%I~j*g~VWVB8HknP|}H#Sge_tWuQi_aRql(vgni z7?uKJZqBIHLDLYHX(-NQ@g7?e?_x4N1}}f3Ndo)M%vTCMWQ5hY8UcDPDU_{%E#g=Z zV{;&%v@8hLsqu<^-mVbAbBKZ-S^R^V=`$fIRvs5c+E;MR#lCeS=0PE{1p6eaxV4O@ z!3*`pRfaEA?MNq%^A2=Jvhy9k&`QeA(0$sx8yR*|D;Rp_nx-^o-=h&ItS4Nq)pL|v2rtL zK*?}Y9hL4vjtmckp==Wj=yjivcb*oM(Nr70P;0ZN#ZSBD_PWiN;V5P3Ib%xV7Wf3t zRVDT}6%a4B($lilAdedxqf)${{Ef@tkh-Hp%Bl#u)&Ctp5%DPGQT)CS1d@F^RO0Ca zq23&tkmwZt>KGR`j=InA@0CJg-=WlR0qMW46l5_FRz3S`@I|wMPhY(Eb1sT#Z?kc$ zW|BM@{>GpGQXC2>E(N)Dt8(k{bXKt4kkL{SbmjJ=esMm+Sa(Q4Oh2d-$Sif390p?U z=ba(|friXQxc%%0w8yZIG>rbx8Nbi_elq$eh*f#ZbuW|0=td=i-JDTep1k{fXfT{- z9NKRD2Z4h;^t(s!al`gA+8H}j>qRU{MRHFx-jgWGXl(s5IPV7#`7OC#VWxO~b2qw> z<^(j+*NBq`jOq{)++`ti)x>X`5kr=?p7q?0ez$Q(;CVnReY!9z4)Zfk(jYtlKhaXe zHUYkU6(%WK=l9U9FB&xmi-2+2TmIa{FF<`Nl>VIZnfd=a&XUXYTPvCNgIYDJTLU4IBjwHzAk|>z(1f6l*u4jmc+V=Wsl{;y(F{ z$qxP>_NmWH63|-+fy{z~Fhe651L-KRkg|6(pC2Lx#Y}a{B446zUu$rx^;e zwEhfyZ8_8jDo%hHm&awStV0$7rh+-^Cx(qCi2^oZ zIme?=nbQal@1lm_PJYV)iEBwn7(B9@4D0o$W32gVsH{I8^!?Qep#zLu>g~jJrF$^T zcVybCBgiQwg2UNX;E-r20DW{MLt$!y>G-mP5lc{^`pSOH6s3pmA02;`Q60z)AfFzv zriuxc5GlTa9YC6~fsR;vOD$zo-a<_87P5g#d$VpC z%_=K}U5~U?yP(3>Z+u*l4Reyh?|ulwGKji%MRtnQ1Z>AS%D!!ua$AH7i@%Kkq~NEthkVyIp7H! zl5|FOr>trcfToR5HWWy?C4kuTLA(MM8WPck$hj&5=~hl!yl_;NU5K#pgp_pQ#hCtB zx21KAl*a0OIdV6y>r0P@K@jPZ@4;eg;wbDQaQySb^S+0FqQZ5hbw$-gZ$A;UY!0@L zKBOg26T*QBpg~`iQYiK2dipcyWgys~rUQC5Dewl&+X}J_5 ziQ?cn)Lm+U(nO<^{5b{dNIutXAY3b4H6%zRvbt0|hej4M3zkn~Qg&rdd5~kV`}~LW zyo(3CDjqVG_B2RtL{&D2+(SIsMVw-5mj0uwS(}2uWhVXI?+eY6Z1HfyF#y}g%W|YE#DFbODH`k+}3-V zFpHb{Gq-fIw`4{RP4uE36XXS;S?e##2tWT z_EcPGKpW#<0$j10LCK=s$p|27?iCQ|}e z3?lF?h-O~dk%QuGdkdm9sc32~yqiFB5jbh|yJ}D)oHsWR83N*ow~n=Ipit12+1rlW zmkRni^Pi7@NYnP9F5C{Rkv2{!vD9pR5vl=Y-eLbv#U&%TN(cD^=vPNYH$K3v(1^P< z8H~Yt6Lj)Eo^cu@U=g;I+i$AEE4~nM_|#$eaa$4bZLkxggFPAf?JRSrBC1nBDjZ3c zF^$Pzz1cu=4_Y(o=E(dbPzLW^NY^azXCZgTp<5U9#sf5&ryX%N5V$xfrjqwR#pG-BOpma_&^ zLR%^IC8{EpTeik4Vpc-Nfwp#I6RZ;XKJY~B1f(vVq8=Ly3XSq0A#th^rw$vc%=T|5 zVfBC63#z9U`a@`-A!RXpa2HbkENwh{C~MclTS|Fp9s6diaX!6hC&tn?IjM8Nnu>_} zhWkKnUL>NB_G%l|yAW1{d1->1|A&}CsD+HUV^#$`h-f*Mh27jhw?Iz@6+=W*5fawa zu<1FbD0mRWnPI>4k&6rm-o`7~u>6hn?m~EpT~r4fL@=z9yJxjN_`n228hYKU!6d6# z`F?#wHkD{YY;sce?2#P}7yzrVhW2VIx)gcginC07=Y$#w%uA<{xj#Ct2!59w%zLvU zsp^^zZ6H>W&&2i~b^kyH3=y$xme0DH3<)}8qf9S*|D`S-ebq5(|LRL$k08Y>X3w}u zyO(H|D&kxTbH=;{Lj4QB&Ih1{pz;^-J z_Oh%{ci6B^5bp3}%jyLdAzI!;?RTzfv7ZK^C(jjZhCP<=`v(%XjnK5y4WxPoycUHd zdl04}003U7Ki;nW57H#)Oo=1KV_+izg^q+aN`KhfV9(Pjd3PGgDlZXe1wXAJI4A6R zy*cqO4pw7=UubLmrV64BlvI9i0L!yfD8ZC%LQV5$r2s@j(1qjUy-@Ie!5krkaekWO z<-?{Yaf01hjhlp4F$Y^u_ILiTQUI7W_H(ADDyw^WaXx#O-}Gv);7=|SppECmKE%jV za#Wz`y53u!+RN<#+8?;fQakgJaqCP&z_GXIspyr=rSLw84i4kkczDz#K(}3yxCI84 z1RLz7aEhsgg2JAFt$aE-L#P>K@27JyE=kK)9i;w=xgn&aU5}fL_7i=B>S&5}O%Vi4 z@}ohR#NVpKjK6~@x;jf0T!jNHx~#mE1ZO0pm@iD94-~r#k+kaPvpymDsbq)Nmhmp^>na{pcZS*xDB+x7ccHmXxKZ2+6dk?$Ea_QB6sJD zGJOA779pwBQ!J7~#5H>J%;6ji1hx+wjF*xODoG#{<8gKlno1 z$?Ngl-09oBSY(W*~j`H=WN&4 zl^trcOc~n0n>~0H<_>d?UJw~~bdzcP+5bgW%AkkbtUn=0HL(t;RND6fQ!vTgmq|Sk z;3lnvbljQ+u(~oygR6T3w8Jk=%3(Lfyo&qX9LlXe1m;W{PGLO-sLy+W{nR{r=GhnX zvf&BcO$+y;$$43lQe|)s@izD^zif*U}=ByJ7Abd&S7Kpk-&Stj`orhd0^Jr#U1WQdt>&4zwUuukIq{fnr! zCgvqe2DY{kQh@?2VC4g@)09(<%?FL6<37MmR#-L;fWpnQl`O$LypvMDbQ-#=HzLSL zYhfW~B(#x9SeJR<7K$TpB?z2hLpJ${)GvmIWjX>7h;Ks6fzUDfj&*DP)?aOQ&(l{E z7^0sjHBcS|XirC*61G6Z*X?0GKwyq+%sAruT3yv-*KVL(U&E6H;fQ zK!LNjN?}Y>A);koiKgSki;C{VBR8J07s|lL>t*v2Rsph1vL*j~1(-VNSet3h#cpJe z)$4;F<0BNh_L}w4ffC-rAM*!|6M2*~Js*{d>@%XCq`Hm4mdIzkkZxD?q(ej$DYRb`oyuq9)Z}&4O&nSnU zDBGsZoSD{m(nT+g@Km1}2P!i+=a%f|lIqz_B}h^DBo;beEl17Yiu}6*Iqt?z-t)qP zK^t=F=D5N;gR3dDsCZh(8ci6Fqu=Jdt~tO?`##qT5VQE4(H0u zRe>xOr#`F~BV-HOs6}%;&~WYH+&jl>3atmO!l-HXlSIkO@YrnFj8Fqr{dFWIjD9(F z7$@~{onl%J%BFAfg1ykU)~XAUj3vIXIq7jX3y+(ay&2iDN6?(l!1T8#{~U=N^?Nm; znn}&j#-05}&<|$lxC)Q%5Ft>^a+cVkrH%#i_ZyO&d+Jm?T~Zel8g;})2x-&%R3onz zDS)Do5UhT!>(yED3IauyzAn7|W_bFF>Zx{uXjhS(bRx38buFz-*yX-DQ6NZUG=eMU zr;)UkAQs2`9EPq=i{e3N6`pdNQGr zoF#*2&coNLm4yM{6n=!U;NGsG*Yk_q?t#i{Q^g{Ej>w87p_ ze{d94#$Nf29R%;nl7gc&$$HEWx>AW;97A690$i@`UNL zA;&jQ@^0$M`5KQ=>SHh51JYmeC6Q+xUV~!}A9z8~@07nw{`8@Be^0=`*`B~YomQSS zATqkvqtMS(ZrVxCH1Rubx(NYE$eF89`uXV;T-J9_`wFuwZ@p}<`^Eg9N1YA1{@2D{ z|9b@xAk2o7ssQ@OZ(H$jOo6by%stB(ZdSOx= zMhtiqm_pCxfO44AaCiiI9Kb@_U+Q~z(Dpsrsw^l*mF&XGFr@cq#BI62-eB<`MJ_2U)GP0^=ClE#mGt#iFXg3ZKG6CC)t=i)%?9 zIU2xKN1>)UW{W2NfIZWiIYS~v@SgG}?tbj&%~PSdz6JyO!cjHGPVjCK!_v!*-md73 zXfe9ASE$Ey@I$>G4d+{-v2D?|3Zya+Z@gYx?IY1f-U z_!FAu8mdf*z$vU1y0NdprCjW_>X3;Mu5Dt(F=?a{TV=LjRy5E*dS&c|iFnZZk1+#e=ql)r1i8^-uq% z0)pwVBhc6_UnLNIO&+m4Eb@u90(U=UMGhbG%K}E0R_P9R_*g5lSOEl)+kHY#H?Aq- zm;yh_@^SaAKZ|Dr&LPw3hu_A#f*gqEZ#C)}MIQa^Y27Ow{wd%43D(5@TQn`s#>$ac zAuKCWm>A$DQFk_{?@Tt4H*RFe$gp8YCcpa$yp#(BtvN+~@x z(C3}g&%t#EbZ(&v)(Nhc%bYys_ZX%VF7wy$<61(F1|4 zBv~VjToFoKq(GR{;2NgA97xvdXLDZ1i8r`~Cpn`F>ueHF+=@h<#Mvig!<~nMe&>BM zYe`6C1O$yI249~K``(pU1<*a!6w5z37I@{vMGNRF^T58t6GNnjU+ z9s)I8dd#;Ek8xcSDQ#hyMU(oc8=Vyhz<}xuwU{E4zae*gJZ&VaF%_Ryq;*cpQ?|3; z(GdU7Mqhu51;nC~Q03l~+wajAF;N)cIZMA~(4=rP7|Jp)zT;6jGprK}+vNAN9o8#) zfKB|qxYcCW@Oo71cp30Rfq+F^PCx{BDBkm8W(@FRh{c%_H*D~0Wln;Ejc&lng^6_% zXt=eo^gb9!uUEXs*2~}E)Nx&s^##;NVm?MlCLd=cP?uU#>CQ)=O$ZdPT|Ej+hSUJ; zEPAE~%J~?ZXb^sJWwBx)SBj=flb=ie(wK{XT+D!7s86p0SHzRznNs=#DmXJp+3ZCh zG_eG#fKC}HFh7zIC_x_YT%5EkQxS&RcQl`F&RT=97P6fKKiQk=G+UNX(_4t26pkYW zA)?IS+eF)?D}f6e0a9e6QL&&yDZb4`s7$`NM21{T0&_`IY4blLF{sG{laxnyj6J0Y zF+`J~Gl6}kHGb=6fmT8EZgpxFNFT-6Wp(9F$T%J{VGr<008>cT9j@JIZLj#R;;aQ& z7Kc3$MvI`=-9mm|P6qkc7bgy;EV&J#!9z*s^n59u&I~_fV1@VQ3|{-KBKk6dhIfW& zMS|rGcp%1QO3i5xS>1g>r13La;4&r!(-(lr%4iJW8fb3AQ>(?PU5O8*{ ze1E})anwectupmn!}wx5D>Tu9{!d8?(z9xW6N+RI%5a;^HT;Q8O#Qr$$uFG)F^9-R z(t{b~1;ueNpTN&s&hnc!(;0U$thlN$<35P9gM%VfK0~A!vhPK>K>AgxDw-sG`27j3 zLZ78T9jcu8^<^lhO>*kn+S(E3Z< z!oFfY;Wr%fdJ}D%^|2-g-h8e%ILdh@o8V0Zi3D(`sUZuVPRIU<#`&{n$)`MG$Y;V{djqHvkQd^ zi0*P*Z}BlNV;I7;T_v?Au*``C)<6Dv9Cx0a#*zXizRy=uOv4^Z0X&`?opgkQfJPe-NQR0+t{CA$|^v zo21acD9nWp&1iQ*fr&j+`OVGeCeCbY^Th#`qU(c;WBpU4qRkSLv@Uy7mYUz`MT2>@ z(A#l@U|9u$Gp$>Ot<>SHf(LT0@YFeE%O$qpDim+^n;?R zM9InE>sD|>od1>1u9Sgxu=xqHfEFbyGS`Am2skXa-3n?X&`UQ&3}~EJ0UcJ1t&#P< zPH~k@yk)eeO!cHo#86o(Hzl1>Z=mwy(OG47NSZeAvtml#ve~MYPX2+ z2vIu*i~i#N_NQ3flqI$KWT(1B=DMS*HGjE0$7^&(>UXK0erc$$D&6- zXv%0WTn>aURw738(UrKn!mEd3X?}9CxtK?BSupSMy#WW78yIp zNui~hDM($O0Ix27B(s1cBO0p3Bnxwb7fV)>ocO85ZmAU*PoBT^DM?q$@})VBx?3R3 ztZ>KZ2Tj@J5!KX)p{LOVdlPM82y(g@49FNyoweT8ODT33`&%rD)JpArvj>pQER2R} z=oDf%`)WJ-b9vV8@+K<%l!u3EvlAO*_H-{_J)ZkfB7<*60NEey2mSj}=zp&Yq7TVX zvT;e?Lop2&3!_OIBd^sBd8PUfG&tX`co5^LIDjF1(q21a2x7LtM8(9Op~f{SF|WwW zpe2=n9VSO@^Ba*oR>GUw>6~5?EQ=u$8I`PCi0N;?P&)ZcO=f3wPcE^+ctf!?hetAJ zO=J<+-I12X0i3BUZmf`Av$-&QnZaP-)#v46fh*B+Wy`}f%-ZONB#m5X|1;lbK9n)C zOV}|T56VGQ^JsqvU^FB&YN{5m9sT(Av>ypV-`U0V&P`Jt7@kpm zAq2+7Hk3U%!xxN)OFMj=@)WnEK3=r<86VM{NJ{yMe%hDEVFMMW(l%J%;*;_iDUb$< zYcdDCam7=OKl8*&L zM|*%JxkvskNsfxtE;UD4_4Og%w-vPOP|8SDIpn8Mtnl$ds)pAGoL?7_$94)n?7HaK zRQ-rdQB-D&bPr7zFrtb+*}U-6&|~=F6;P8rF^j72KASchG3vKy%`sbr*Lcfy5G{Ue z|GD#!ghfRyLrQ@Z6(kOc|w@*rM0xmh>a6ChbJU%UGmRwCpt_v_RyjD!eWT={5*c6pG}I4almJkvY5 z#SFaMp%pK6$GKMLJR^4@_B~n$(3WqO->%lMrIVzNz^Xssnk>%s$MMzJ?`<+b9 z<{>41ODFK~9)5j*BY=-0p0~L@C#eCHsoPe_s)HEd1vBirVM?ezX=6WhGO>e#(vLbn zLOjV0j(T~2K_#ugU^w;Q`g-_h-YID7HP*U)=Tnmw(Dc_%YKo^K{*QV;V3Ou#ILz>QF|Y51jdk8Oei`@t1$VapZ^wD5-1s#=3$W zs3o}FzO7S4s}yVN-KP-nh!T$|m-9PPVerZ+B&9Ss62gmC41rinw_wJh=%frIeh4J& zX~2`^%AX%vIRO^rxz23yF!CcRa6rtV>!Xs>zc&n`=J0@64dHeC?#z)OX_IrrF<$g* z*Ah#TC*x!a4JhAu9@0A?ayG>40SpHI-VGh}yO!nsAy$PAB(Wk}We-Dy9c+ zJ57}_K7LTB51Gjv!^1IU5R8qQVLG3qH-+YsSQ)$)TI*TxL0{se(x4ox4p#~vizsd} z5kQ_wBgw`<6zk-duAdEQG3W4(lf$LyddVxo2oikSnSDuakV;a|caKVdjnS{K^#oAd zQjcOUb^Zc2y;boswTZrdM*zKcFMvyiwP4ERP$wexKR>){k+_Y51QYc*V8?Cw2dEW{ zOoBhh+@ydLQFiGt3=-J$(_7Ji*Z;>0-;~{9(a3usrlul^nBjT%8u1aB^sEtuuJcW6 z4hZe%;GFRnC$a;~`}q3->A%=XpPm8(5j;=z;nFq2Yg%m7b|DBky~>W_6jfmc2#ae^ zts{MPd$XkB&_ljyXY=96eh4i_Dt;S?fLekEb-}TWHnONn_xfw|@Dq#5{texY4+Yta z9-aL>FtWz!zc|cOVWE5j%l#pHt>>qJg0MG&W5zr6oWhO;Ky-|Z>C?NH*! z1IH`MM|_E{xCp$*TjCVXr;GGebYoT^(YIj2q)IRzPW6BSNnqS1!lC@-kA6tE&=SFb zd`1Q>7Z!!Ud| zCaS0-K)kZ?$I%79M8>M90Jk6?mS|sTqB#!RJP?Fx6y{7d z=1}D7@dB-)y!fz9%mHg;3}w_^=Yf|U*#a>F^59s32mJkNrK{9GIL+G*QTml#Zj8NYgZ0tWjT=G3?>suj=(%q8ob(UgI z$3h$;LNq*}i^q}q0a!v^F%THU36!bv+_99=K4s=rcOzx@>@d)RAz-@>>@uYa+GfV^ zQ6_N`gsgxg)L0fYU2_Lb-BzNm8;H|}W2Av~O~*XAsZl+CJb=3!HPoO<%v2$0~ z`%AMMp;;jV+Smbr#zUaX;R-*YlR(uS zxg9Ope!-kU%1?4zf85y2ZBSvekH+%}^#N$gRlVylIir@*uG-w9q{2am6+1NEZE)1{ zrH&m!m(Eur72-A4IP&u>gC@j`EZqL!az6hAmU-qeMrIJBV6n^5l`*T>E78a0-rtYq zDFHe6<)e(@4S4!)$N&&RhKMSrV_$vv`Xeo*d7j<`fp@%pk75hQ28WPWNZL9E0z-kB z=0asCxQ;BtgAnNA1wj74?bfHO2OeNP2L3L06U*{p?|eReyB|k$A8YIx6RMNDJ|qX# z>K@^~b~elRTR|LSD~H^X+8M=)ojFj{N@pJHi-{~ry##wa@Y?R5cqRH!~STj!%4j%qeJg`13Q>H#EKG^YxG%dXDVOV>2XGw&k9`4-av~ZP8O!1Xj2h{+F8->7Ht&Sttc$acWk%D46L~+!rpHN%B#>p zweTG2*HP+1bhVDm(=q3j{uY_acDW;i?Xnex=atjoTBvoXHCA1LNlI|6hku;d1W*u| zp2XF<=*zU=8|geH88d)EM-{yvncYy!g8a!J7l%U7gcD?GkIo#$kiw@qwPY*g3DC#_ zpEUoVrrLB=rr&3nCzSzEw#gm3$CV@~iR(h~!9hGlu-c8A3zhgS2$D68?DlyrNDdYu zC6{DE6r|=mC;5(tB1;`3LM5N*Y=-)c2ZI8FE-&OEvY8vMV93Gt zBa!gsl_v=62dO+gEM(-Z9AVcw7LSU~_fZ$McW!$0vd9$>7ymj2e|kv8iJ=j=fnT?7 zeRKJll5~UeLO!q9=ujog?>sd@v$YwyY-t$cheM@Bw@m#gzezKKCbnJ;cQp~IsepNU zO)8nwmjR?SC>d4t>;^$MQpI19YwJO18ubo=(gOLyLahMowUqvKL{R=SVjv>P33x(_ zq7~^WgqZfhm7_nJ-*YhXAOT4c&-4y|7TXW&6)w8Z9yfCon$;W`q9a@JC9q5v_h>KK zm)Mo>n2X^-Unga9qPxizoovV?k95#+7{H@rCkQhnc!`@zamO?)_PMD=jdN6Tu5OX@ z9r}Vf@#w;EM6&q~(-;bY-|RY3f)I;J3lZCEAQTGe;$Uemha{}Ku9pa|zniq!v}s5v zXE{ocs!FJXuZTyKfd;)YV4=-#C5nDRpZqp|y$#`gKweOYFpW1SX_F(OqXwoB#RJW$ zBFk~ekq9MA3J__zp6MeU-a+tu_%`60^tJP*;sm#w+DK%U`?&2mTQX>(z=&xMupDV| zuP`%f^ftxzV*nT>={n1brNW5XSr-y&WO5&37myUZ%U1O(+D}%=&@NGAf^SIT2-t&B zUd*pc*`jc7VyY$9FXt;p-fo2_sr^rL^7hVgu%Y^5*p&WV=`g~^uGC9iQe;yVcFT8H%!rHx@-CoWfN~nN)@J zYFDOFDF~LWgcq@~ojc681+!~e&^wX#c3v^&5s{Lj^i|#)qv?nEq%g24f5v>`GiYDb z`3Qx7fMnk4rzk9YnguI6Cm*34L=hpf>qZ@D5drp;UK2!BJa@2K6z6jWtQ6#uX#-|Y zR*vgDoRxcE{t;f;R$tNY%x_zeK;x6s*^PYq?0mY$l}<;4j@`A1oOdXP=scm5&ij0X zrp_iJ1r*=*$5Jb6Iv4cEwyirBNd5D}ySYny?h39V7We~%qV7d|bIRS03}(8QnUtP6 zg{=yx1dA_&f)VB+W+UK>0lmZtKVeem)Pm#34RM0m3mv6}G_DQDGti)vd2F+S@_fJqeD&EXtkwXvfn2SQXKH$)Q17K9TVi_NZNPi?018rHg)f+vg4 z9Q3we1MbV;NHCGWhZ>8RtNYUW)8ifv0Xc|D8)gx9fi>jVx0g(|2D;{OpyQ4)e*#0O z2nI`JIo~RKARe`gt5ReSnnA=bR4i)z#EqtDPyQkiXraVLw1X5$iM=uI1YAu>54nc% z?~z8qDUOvmj2gLW084PLKDd`GtR77>{z~pnu@QCUlo)GsF>*(0*0_yr##ae zvIx4J=3XZR@rGl1iN8$pR`*Wob z@do1QIYmRnoLTYgia9goOvKF`U_8xDvgpPf8yy8^;h}#!-h+zbX|{CM!dXX*AXTeqyzt$ zG>LXnX%*4V*+q25FjZ1agOnrMs{P7TW|{p{JCcwDfAVGUhpzGO-^g9K-=2;Pj*tzL zIOy@7esLQRtD;PO3mdV>p&jJR_H8-SjOG&Qr`vz^@dNwRfSQ(jh-5X!p2*e^V4*mS zgYnSDU5E`+OTYcg;1eJD=UeA>~l zaK{Oe2?r5Kh;`y11Q1gzTl|ZRNha@WXMsI-!d1EBV;t5u;;^F!ygvU7sXNRora6F6 zhdX*xB_Ss^Cs`09L7CnHnv*F)SuhE=<5thvshL!^KvQ83R7bQQ`1zG7sg|@4pJ; z_^we^sWTPfd}JOx)L<&eEj(m;RKIv0?RUTBLPXJj*vq%3H7Hrm942czx@vZ%_L%xOaVNTGy; zC&ExEd?~8mlg6&VPtt#i>BZqzdttwEvk;C`t-!g_Ezsqh2awccN+FCVd6Q;{4+$eQ z=T52>N~t}1W#mz-6wcTe;|FCzky2>Hd8W&n&Kdmi&5?02)f&6Z6~oraqVj~vCiDrt z?i7;1_-j5%HDf3Jhk`gh7MHLE3p3hi3_4#hED&s5(X^35(U1hO8lfuApiNNnNDYkk z5!1=FMedGVw|oLY<~}UsUp#9p%8Cwqiqduqo09SlEDH?>UKlz^^qu~G7pVLpG!T_= zC6a(G=nZ})KSG^gnn7}*ll0_j41Qv%fTxue1gp4ntg4hV3(3$GDOKx%>oR9v3 zgcUvfX|SOQA_oB#y$4Q}sN6Wfn`nVk3j9vV;nD1hPZfTY90EtSibThZ$;?6ZqImtI zU-fxG_ep~`6K$Al7;u_&{rI4hOb5K8l{`DUC^92<)giPDSC_w7(jm(=C*R{K%B5T-j-cz|0ci0V7)8z{iKWmG{ZzBoj_J+iaB&`zgm)1P4JM zR}7;9wb2vCBbj9T0csUzH7WqY8FIEqc%WOaNR$vj8PU*H{3TRFL8Kj`d1r*8@h{@w zPV`GSTHgLa>P--_W4hUvs5B|adaJ*cLl=chE2sTUQ^mJLr*CI%j(5+vDx#kG?kumx zf)+^H`e0frABzPR1++f5&TiS8@e+ zm_VFp_W=rIR^6?o{UKx&1ub1fj$v`Y>PQRi6|!I-@3hvP5u}+e#;Dw_BNSLLu^8i5 z%@v{>CDdVgM?0)noc4%xAyKS1%b^t$Z7gdrK1E94T;iS!Vryhy4r#?MP8Io* z{q(&&3YT%2sK9%S35z;0xcwF6&z=GqaYZ@UzSyuqlh7c2`cwF4pV;|mj?#2sh3rx) zet$H!rVTA+x}Km4b(V<)dR1rGLKs}AP>m&77EHXU@!64M(fz?j7kYBeE>d=%4kO1s zj&84hjr361U5@(tJGbYj{?odO7pIkn$TI{&fMro#mFRBqXMkbNL@ndn1~t2ZH0dW6c}-JhmVR*w!FR)=OV zzxl$bE!I9xi}nNx0PRwvHnJ^YguzB6L^V76n*R<*G5N@+bX?ST@(Xoa9I%EeI z<8x$4J;hyUCTcV+NL4X%N@zaD8+X{|!HrB>CiQIgiVMYeog;TcxHfbGoS*jU3hsU= zwTG^#Ug^(E67TO+vR^L_dmv_E?Ma$QId@~jp3wu@E`erZFsSLV4j0ihx@D^gy>s{M}AX&-+??fAT zGL(S}8%Qvk9&qUPchozKCPpU2)IH8f5*M$k+xD)DVEBXqsvY(vp8q8W~hHd5v2nGGO0Hf?tCHB+i-S8`~A$6`=zK#Mp!`*uqJ|h$0znbJ;m&o>ZbBc5S%J6kuS3j%ZKz z8h#sSaF-nIplbK~1=%mSnw2z!0-FH;l3cH+z`148YVwg7lbQrl9Vg~IQKg7uWN>s; zk8aHHQZ?B}o_SFgB?w9uvmkwH`dlF!j|u#E4++mgMJ{hadEl89A)y(_<@&mz0$>fK zJNw)zR``To{~6abqLfBK*j~IeW<~rsnPpc%lxF?art1pDT5oJK`$;OJ8&052e#ppy zF`@8`$0y0rxAWOTmZ>AwW=MHVIdEr6{5Im-;I{xJSRX;SCYuN^B#MfVC#HF<(T_h1 z_3H^=_sE)ee7^EbJCj+!ZVdICOLElAou@X6qK`Liul-$glgHrB)bWf3Ep6n1N^c({ zI(3t*y#6HRKE|W>-x`XQf0L6z^F*OHu=U;%@#t7^MiUM79*V6;J!9fVWBURll8kaw z9N#;->N70t>wn!v3mSrLABv_U&Tz2ilBw;^H5p@As&`1^KIMoI2!x>;SW)$OvQE@M zx(qDUoS<{`9uR`C9j!BebtjovcS6?jiA6h+<2(ugDlT`*6Rlb1gCU=}%Alc-f+pHdQ_yw81ImVD7|_X;rZ3UPL_#ggp}8 zONi94d{kN9)Lb^_9{v&`Iuy~_@ueN1HNWXHfQQuhG{VTFmxSha{~x*1R>^CIi~#pvS4v!V?1bu zB)5_A4kc#P-sw6L%L^~Wuo27ivRSBlG-`1VDocRw*0x;fak z%UDA7wo#yR(vR5ulejv~*VmAFaXgD;7gKQL*2PzZCFVyN`ws&ZJGB%q-( z3so;_07772k?U0JD0_5TakMLd7>5`}k;TWDdOBcPVj42EPN)|OAdXnq z7o|7|6DIG0NK;OFlH$M#pMspBHo8tcDKjrN%bl`5EcGR$xUTQxP@Sxd(HZKUUznhB%xB7I38hw(-QU9~JndTx<0G0F7p=Yhb2xqS+6$8@(OCoqz z58{!OTNq?TJEza~=6+bwClVZXAmu zTLRWDvK;?1+fe?jiZ_i)f=D$A+ ztA7d(1iRr9Wk!yT*D$Qg^i2jqd-s5lC$hw_2EXCZpr9DRK+4bGXJNc+@?6Y_wEG_Y zK2-joYh*tRoJ7IA0&6eGGhMDHBCbfjHsYDEP5MkV@IgYmGwg=my6G5-AR+;}qG^ai zTD)CeQX_fRazjr>-%6fy4ph zUYX+2m|~}5u+maKDXxTqv9l(pZ*>89RE{|#gP&sH)Ndd6>Gu=fF*&`((Jqs~0MjHo zPM`O0({^Z=$Z;Nh^3R(YIVWIviSG`JB!ugWFT)}lA3}*I@ZxCMZQ#>|`UkBD$E5hu zm7N7h@@1k*7Xd`%y35UqDikJmi;%BqcE+noE>|)O1KCU0q4#o^gJuR>8Uo(9W%8e3 zDE4JeT`Eny7fzrTLS=Swg2No4fL4M)=H4Na*#cGuAbz*IXOpG)!OLU77MhzQL%^!0CYuIFSBCqCv! zsKt3qO=%*0i1`?j?f4fPaN(jX$J&0+2Exxw7f$Sx*D$OC_0;5H8yJz9;AV=KjSb6c^iE@-Ozp-(&Wo*Pn_NV9VG&c4$?O_(icJKk z1a8I8os+M3Z_{?rrvpmPVKe`{mD|$Y&~u@AG&Wn9o++r;bXX)E7@8~;C6Nw{%7LAB z9L050Z;Tf_JHmw2?ZjyleVE%84V^X=6^j#ohzfoBil_V4^u~Z0%Av?;Xq0eTp2)OY zNKw4762rwv5(^z4EuT>-&W0-m^)gzp=0sfuaMkGkflG}Ad{u!!~d)=H* zKq^?4qvnxjAto62DV@6fUiBT@!Th40wE7m?C4O`5u3h>Vl&(uzhB?SpaV|I{- z($F|)kKitI+GDyp$b*a~ah0c2ESX_W5vcsi3w?uH9ZC6)B?xFrRO?XHr;S7~NXV&~F4xFs}R2wzW|ow;SBW8Ti&Ll_${ z9y#m6MwIAjcH(*i^|`}4=MeUy*vL#zOsuq7%?1VsdVz(x+wU_|IZ+T^LE__E7Yz*@ z3oVJU->C4jFp^F2O5-arl2iW5cs%#J(2n-I^MfDxuk0~ zqxoALY{g9_1dZlo{LzK^hFA3|Z!V&=*7lFjJhZC9JlTS00j8J`-;ugI zex2grnA(j004M`V?y^;FdLn^$@>%$ zCJ`DePS9o3+|9~;3&>^0<&E7Hq7&kp+btHb&6*EKO-#=ZT?$lO>#05-sr`u17hFfD z(?J4KM%AAg5LgTj^n9Od+)=!Foe(V?R@C##|kVYJYDH>fX|9BMDcl@*`0E3%1(@Q2M6N8c1uQwj8?iP?Wc#zGmBB@ zI?=0W-_BPtt%VlrjM&?FAeo@ov;%biIvA+_899*12xw0$_}tetjO)RjWp0hDv=NbFQqU_QbvRWp86&_gN#iskI%^$+W@8 zlL{VYt>B1DFXyg{@FO>qqZ6e1$pm6wv0x#%lL;W7(g>kW7da={07^i$zht9KAJL_* zVPt*cNJ{0LqU(quRv9X5`@h-&+aQ`FoWSjK_DUKq5FZZA1H~ViTnB!?^~emA9cDlk z!x$?^G+Nt9?5jFLa5VhUcYGyYfUpnH%S2n5&h&%G3D#t&=drXR^;{R8;nWp&d^spCrJ@CdN*^_eS$CBoC!Zrn5sqUrsXwp(7Q0Jj<%h{1glM*(OR}(GSzDu+uF9xl zH`+f)AMcX&W?i)3@)5xaFmR>?`7%(5o5|3K0KDt%45Q)IR2S)dd6o)_mkYi9rGToB zr2@;i;v}b!*t8QcjXc)b2-M4L3r z_@riOen;4Vk=vg*Ziv)k#-5FfXPDtFfxvOXpb-k&tRB5Jpb7%46cBGn43fpcNz+8? zA4X1Jnc8b5q!13Is^?xQDeY*L?@IK8SHSM-Q2@lWnY)5A=Beb1$NT>_ZGF9*ZHyHW(bl?>3u%D?>Bpzp*va$wn%^ zDOdloaoE2A1R-KX8G+Rxy|EuW^>{3Z+H49M;Uah@k7in`{%new#}gZl5#bx>RjX zb2l^U#0kYGre;OJV?5jdbt8lsr!Ry56cJLL{|8E3e$Ey_d8FB8oxB6cf_f1%3qFlI zM60Cs($c1z9lBh8(S>>1*%=sRRjYCC?GE%K9tMk2niOQ%G67FM#MtD*CrLLbAx zsV3fMVGM(11iVhRsmr}jFt@znILVz3l4WwC*&enc1mv)bAri&3k_c2BrUh$J%%XTh zfDEty8GUcSYUq-RkefmCXNO@S%Z@}O`vOBQj*sx-09KSHcV0ogW{9@F5faxcnqpj1 zY#F5~k@BA(o=9hY51rXAJvHAS&n@t+JmMJ1lE+`bCP_!T+)vSglyOwgZk=(;LOuj0 zvN=V81c|KYEi~oGtPq7G8i__bYZ1}Y3Iy?pOfD2@L(GriXonq+ZqPwWR9HjlPM(

j5Y-v$a;6E(AlY~k}+EC|FD0$ekyPyHZZcs44t`2cWnT7LnJCk#-S$q$0=Sf35& z!4l6M$xqPd500#^zzBRHuh?zv8+~IUer25zI;_0$hkr&xut&Z~36w6m$< zbu#HWE|YX9o>CBakVT>G$|voFUM~gyE9t$9=6b(#*WY05W=`tYCvp#sQO#4s?3UuU z$8$?Ah^6zjkH<@8&#pKeu|b>VUJHdm`gmKZ3DfO5oHdiV+^d`+1A{WFKE$S1e%&!c z^5QZDy-wB$y*I!B4G^_e&-B+|;T?S&=C!BhZGL#M;k<)>1nQKT(k0=5%Ik#mGovD1r=IwTn)! z!2%IJkLTY+=qiScjK%>7frN}oiaxr#jYO{zX? z>h3hjn*hMBAAU#gGIlUd+jTl}Ah4iR6CMT>5Qt^-LCreJ@P35BFf_ki%H?VYlFKSk z5lyiB8_rQl4=!kMJmC8_BvGZNlv4g#Pv9<0S`%SQXaVs-uv#%!2stE+exm0`UYE6p z9Oegp^*a(g`1j$FfwPS8SI|+{?m9>72?R5TP->FX!J%^5ed*h*aav4Mp-kN{oLeK# zq>za?NFj47=woe=|9D#W6--1+;Lx7cd{ib;Kt57@(Dmq{v!!ORtWe!Ao)R;Z&>3-$ zDbC|Yv+uF|Yw#3F3wrr@;!q*Qk(Th7!Jjx*ftRFG@uPx^q=lwzU(KdM5t+m`sk|(4 z**{)W!03!VVBa429F1K_%XQ5b64F^4%B~-LeFQ}_Up++IQ{j*T; z=v9PoS#zt;>A4U=O@Q-g^C%m+ppLa6im*zA=MUBoeTiTf1ewIQqb0$ZU7U*P&Oen( zdwMf$2WyE&ot0lKV4ejobnsnng@qxmcZeB;J|<7}Qlbo67ZzLib;x(L@~)A*um583 zh4Zx>%uR$pbIdPE{mJ@^fKQ63E?)LguYxEn3TZ)99j!FHfNfJa9Ol9{#Y%DV)oFoW zGV7j@Q6Bum7VwY+#Orob1&1bSY9O*i9RH|S$R3H*ifC49darhy8QXBK5-(Qu`~5?z zNGHzm3R-r|;foXz>t_$;v7l!{Yspg|tvc-ZNah&5yB&Lp6F5IPdzuDgUdA07B|1+Qt_CAo z2ij%^^_+#y4Wj}?llGuB0qmz8Lw2~~oQh~IoN$tl_jIo?7_?1(2uL|CxpoT@mj8Yu zsQn>E5b<3!VySRb{ep_dKN)n`H~)1eLBj_x)|Wm|BC;AWg952P&UPq5V)>!4%lbr;>3r@3|~d=|FZp(MnlBh1C?%()*quQLH< zj;Gd)A4KECn1DjWxtxd?@Na#*NlS14=>*_2NiWUa4F3fYfc z;ZtF1q?3o08#B@RlpL;W)MurO4jwI6 zfSF=R2EphzC(Suef-OYdoHn5;3<9915Zb3Zl4yBuaL{0H^nUyGz5AK7fF%zq37Yoo zTfG4o$T;1|BJgeCyCZicUZBCDw#Y|Ve@l#p37`(f)|S4B(d-gLVx})_d8|^`4keuZ zMblurU;l|-fTF}dPE7cXF>*eV9N^09TfIHIYU^PHEY2FhpoVO@;+S?TPjr=v(l2^O zY)S%GT-AXVU866~_R^==o835Dy}a*(hESfKN5v+LSDPX^Klbkb=YLr(Lsl8(y5M%+L77^Z{rLdpN{O4Kaat&M}$FUngb!ib=+e;(xun z_&9BK$BWP-1~mGhgj1*fZj%hvaAm7#Z(G*ys46v#`hF|-8=~}$@(P&c0J&Y}{V}n# z9~Yno=|rn?dZ4&FH&FGUSm>r$e-9ZQpy_d|-RB$juc#g4Ll6lhpBrBo9uN$d95=H! z!*vvZD%KxA8kNdKwlyCn5JUZmviE^Fe!OroA|L^X0k7F=Xa}2C6f5j81CfXKG8z5| z>=xN9_zZs^6V(0?Ca5&&IAYe)>4^RuSZyR$ zq_QLrVft8G&-&jvY#a)v2!M>bl;IOg7CJW4;&U_!AiWo!OM2hYo>ZFPRW?C7guxmp zame&cM}Q+NQml7-!JYj6L`#U(BWf@9`H5`AdP=4zNO$FkG6^4iF*6a*@z;OG_S!|H zJ&Q8V(yQet1PT`!mz)R9uPG-ifE1rrLTiVxqx0ZS9&3uU|ag z%(SLxEOpxQ1~Y(*UGHNN(?<|W=RR`}j?nAxG}F1%e7%%Svp(4G${-rY2z77Gk6z*+ z&K(JDAk+%-KGlEUF>35T^>d91%^xP>E2E`v^@Do->SuoN;^Fz(u;Y zeJ%V4s#vf31gxs*jDuftVI#M0oMYDszXC!=0y|!iQ^S1^;m86LLYnmtl2J$k1lr3e z%WtM2v=zshcqnuDc9weVzwjWbD30zKs3@<&{lfd9hayAtj?}du4EI#AnrN2;XoPY= z7oEef10a-Nk2{e8TFm+{peO0!EF;TSQ1)=pUK6bf3*~U=j#vRZC(@_YsZ5Ie5|?*9 zMUW?p*QTkY=MtQu=)H3&f#_w=IL0`{3wQ2MtWc(dchN~XR3m^t`vXJ^78!lM9{Z?DHKR_qFFGCo3_hpT$#Y3yPur@2U$8TO%J1MVFjv6vXJ4GM z3*1Wz%P|>_SqWqFzcmm07px#CW2ko#-K@9sS=HclkjI73uH0{v7(!66m&$y4=pQsX z>r{Y5PT$%=oT%lCq_ue4S)Pk3&-=I-H*yb8uklh}e``>Dr&w@2aBS!*BXweZ>? zr^4Hg{kQ#Mu$8M~))1B0ELCnbAIQ4t#^S6Y%Na?37_V!xz5B6EciQE{#=Ej|UR&hUe&`+yepc7~@k z-Xv!eEpK-gY;zb!G|QqDjuTIm6l0VWWQ{I@u#wO-OTGzS(UuvK3-EH1w;PWGo*u+l z?L?a}07S^Qw#Z>?2zd)!tzr&m(Nm>?v9us z%ZT$OHFa#v!D|?X;UCX{;yABQng+uHMSDFaBK}XR=k}muc+rb|4M#uy`D=GwKS_&# zGG@5)E!+8kyWp=+#dMjE7xS^9)C^J$r!zVz$Kga)6YZ4mMy#~id%!j>oXU@Sh2n*) zJ(Y4FcVKFsS*Ub<yBnJjAQS4!-+U{eeRw{GmYE@VPwLBUU~7t`p90PLv@ z5P4L(@=rp?P;AIrmB?nxp0H-6_l8&U2Ghzivi`~NwEqwYLN*2pd^x~9fowXEyhdRZ zc9*acJ&ISdXE-c8d`T3FRA?G5C8KeeeKSR~GzV!!V#OT~FADPkU%MZY`0F{`QMxa6 zQq1}EM{suS2?x#d!8t<7Rh3|Ho%bHv$y$mYhPb9=*h(HcxWqj~XbijH6%Br?`YRC^ zNtmiR{9Oc+xtD^<0ejq>D_@Z zQb}QQj;j3c&%o|K#Rg)WgeQ(I=1WjUL5sqp0^8*c2P)W86}H)dq@CqVt_JkFurt5m zK6v{j<{ftV(RyJ1lzVp?AbTt$A^;>ISB9iZTazhvH1*MYTmsVM;JZ(dR&38`R&Tc% zfllC~xh%d$ns*URPiG>e*6b7V7nnQ_;e{Bf7GdNQVOouz8j*Bd_KSiG zIq|A+LhqW3BqCg~Sk$MQ#}_$raUkOWN+SxtdyE|!aIab!gV6Npd_9UZbd)?FBc-p8 zbliG^#nE7$Ocq?Q3THTEAjD1R$r&L>(g|Mbq4A|VK}gT!f?rj=*-FYWmocteI-8Jy zQJJA&2nCY{HEMunThP9|mAf6EDZsI}Rlg@06Ulm~5G#bDcgVk=ICuUwBt!Geb%7Y2 zjQ2{x=6mgBSB%w%3p5o5$@lxB0vZhJs&LwfmA_-e*vqJ*PZNfG7{6sXLl5%<9Po4yl;9sRzCWb=dcc?g^Xk)fM)$5vS=jCK_JFZ3di zKVqAD5JtBXp|3-|=Mu6UYJ-km*Kz$vEpm$p4Sr?p8`5z(moBxX}Y0m?4b29?}7#Au5>uWVCUHI+VrB zl5lCq5KlN}bRG0)JzvkHmGxek)=%F34}C#Y%Sz2S()-V+I+n1E?C;5&<)RGPYcBU; z7<27}z>^Ax$qP+*c?gu0by}t$-CI}cR}1by9MKUCD){UO^fe=IJDb;9&984}h@5Xl zHe|=+5hTRS|HWU#NK;N#oBw+2=l(-{psc~DxC^=5Z{EkM=rEKbrcCL5o}(8)waw`$ zzZH&b-Rt@b6#Q+l|M6cp>7{A1z_c}vPgP+!h&q~kkvHTLpu_b(gOYU$M@F5l=~FKK zR4zWVm}veeGIVVMY+=!aU_Q%j?XE9q?;)=#d+r=UU1|q99N1nD>9`=pM~F~PIvu+t zlWd#pyVfXdLc{vx3p`7g<7T=UvuY=P5Zq?)&6&r~O`M5te__o;*QP#4kWp#I$rGJHijLYPF`u%6a`y~^cm7gk73bNtc#@ntvV8KPz2urU%`%Oxh1*7E$*SI} z&u)sqrs};Nb6Ds_kd}!WCVGn#8HwuPu-LXD<;ul)BtB|Wr;%X-hwFVMhF}#+2=yg} zi$W?pGNyP}iljzjK)d@5YXYj!;X`SJa&6z)?K3P*yet85bvQ6Tpc!7uzij{kaC%Ok z&w7D+3;5@Ty1YRe%y}3d?zYKUFC??211~^&{+65i^}p^nnimdYdiD#Ae!0HW!R{&z z%-dvy2^}RAM;Es!AQ5I|$vqLQm3A6Eu%j3T2+G5Zyf7Nbvdy&qN}-2Y(eT)%%jsZE z?j(jR^E%ujj6igs54r}Qn5lcDbCUVwdZ%SCS-sI=I$x2YaWkOG+{~B>FR0u z3n}Wkh*V*#GiQcbUNfT4+q0#)ls@n>&$f9fDOZAi>&(C7o#}lIQn-^tN`HV2X|}}i z@I}6s*NPTzKTdwlI`IXk$Xq2Nh3wYQ8pl!qo-%aH{b$uY{4&t!<4~ADYjosv>*lst zNj2=GI(f!^WTvpRZl!tjfjJBl8P=WwgAJDk#7@+cibdB@SWU z#dw+MokJTe$>q%G+oI2sIE{c|)K9%{@FOKCO=7y4(~0h!M~P~vu3fs&KlE+Z_l{eE zBYk~i4m^RZhQW@+P(j;KN>Ih#?8(Kpx3xOpbpu=(0+_E4#zrS96_&lHnfuu4hW9ef z`o$)WKov|FCo?Z%a^McM<4#-49DJG1A)5DML2s8$G6x)rMm23IIw-fHOQqrj;8=X$ z&Lig-E8}!LGaRI|QZcz$Ml-?Q9<*S*&CNXkL#tZ+{IPFSDnPyW#ZJE#05}2O#qe6!68Ys+*?7>vDQ%^q%InE zX}_I<0sCW}F0|9%rzVkzZ*lbB{)whG;CfZcX79XoKs3|V0W9jNuS*4524;a<=NT0^ zlxEPi$AiP*7By>mG^(;5<*>ZOWQt**f7IFIm|$+T4E19$i__wBb759YN)MZ>@( z=}v!1v_uy*J2E~1ZT}%ptaUTDv|S?i+hL}bQEIOo(2vJrpJ|e*!zgSZ;0zzuep5UqRdfL7 zycZG)TMbJpmf2qgxnjL$p&e7<@p1bY+YyIp2~{g{E@ovZUY`F|LdAAAhDZJKXuU#V zHJxj+0jEQlTwkrqlp8z~v|t<;XyO_xH1(_6qyG9a;vTEmcHONF^glKc`xkhi3aSLw z8gje-_INbB2zVCF|I`>*2xMVx}z@M2q)5PR!^z5j|ZNCE^9cevwa zX`oFhneI4ZFzaJ1Ay9OP-WeRo;f75mE+9dv{M0n632g$862sFcLbXdG1zRetaiRmQ z%f42vds|sP9@sthftUeO@(N})|02$DPI%F5A3|sYI!irLHJI_q?Aj56gnSH5n{0MY zQ506}YAYE3!!Dz$ zfO`;|-RW=`t@m&^Vx%jR86BY4YxBFI7@|lTt~>JRwOFjZ0Hh@o3MqunVo|bnF-jSI z77OttIRWiRiBAtHi#at3(FYdmGa{}*I{roO0J;@adw@qnhJq0Emd^i}a=yoBb`+$O z5ad$=k)MGOX0!N0`a?yArkeRkoF-^wlk<6ahc`(Psx{64EQ3s5uhdYBBE<8m%nb0; zAParoEirkV``4F%@N&_O?6ySGj76|UhDNAZnM*@DK3ArKNW3-`uN&mahzcTz;e&Ma z3KGXh#{GG}_OE9TebbY=V#wazoKE+A1kx}5L1a?fl}q89U$SYFnORs)xYZ7#OUUKBLjCqewEkF4ry> zeUshxmb&Nr^BVF7ZZunH5S_U7%8wo=8gBh3T1TbHb#4%zPfqEWOpIY*hRVi8zSN_R{?0WL@s}Cqxe7^`p^CMo7@NiU zRG447eSdu**8hwwh`~$BjA1K;kGH@P?iEd-yZ7>if6svt#x3UIx5$xLM~;I$!{6p% zF!E@*@c%iuc;Jm%HKiMnne0grKUX{(1X*AqxaC@O4|J{GYmp-eA|7JA00do9f`nEC zBnmx*7E^Fm3QoEpR<3yAseKuJFa{6g&V;N_n+VcMv#C%I#~?r={qw^&b(>+o0tiB5 z27M`uZDJ&ggAZUH*~6{~1fg8$I;x}kiw=`)r<6R|O@4q~Y*Tz>%R!SeTN9$2fEshG zB8clcgnU#I6bk@wq8~z6;!+w|OmaB?F<5|wbcZmniztvUAUrV>Ojz#FJ<~LEu;h9? z;GWbHp8*{^znm6(w2sz`inn&49B*fhQNEYp8z#JS<|)jY52=S;|02OH46--u?j|bl zj4ddWiNT4QhEB*`vv{jX!m)pTcw%?RBcrfO=W@e7*48Eu&A1{64APUJ1ua<-if|RT z82zFY{W*PmI5K!o+|9>Rn5P+6cRWRq9+o*!vv^Gcc@d1#DCTk-vBXwCwtQIaf6Gz z%-T*>s6gHdVazTj)p5 zSD-m|D`32*5K!-yWA|*;lSXDgd?0f%d7iomu!pkPB*o#FdZJOAq%oYO&ifI4_4j-Y zLV!#z9J8YhT%-u<`m6ElKOWfKwP$oNU*$Lz0l|n2^`_U$s`=0}s%?r!CXDzxQ4>fG zwa%Y(IizW45LnwU=TsmZ;2B;v7?RCPHw-M7^&cqJ`P;qXTkjXEB= zENk-pZfxtSk&y(~;hP^`o?L2wJF!4ekWbl^0@G~>O;U=Is5PQ73e>*Q5Z`sh=RXu& zXJjNK2Jgjxvc)2AUa!6h$9xwsEyx-}rL4XK)M!*M;Vq3Q2JyX|hY1D|u>ka|=$}sd z8nj=6OQB&bFZ30_RZd)@PF0Nc)o|+$W9_z3Paj2yh&COoiW8sWhY~KbA!+JYMf$KX zTl+}TR6YVmUN5ZA98BVL2zqSbhISs?THTmA5+l^@1QsTio;By0Xxgkwt14=+1(u*I zwd*1v%}D#TRdMFxzLc0T0~|%L&N!*YR|Y#ws1Tr~IR7GsMCFC()DuLwuIQ)~MiSqL zb1ddO5JS;&Vu!<{K~}thC)A*Vn+Ck#d*rBuM}(rolu7^m@EAwx(0w(LS4><1dMaM~UUb^f$dTmx%Xs zGmP570s{cx6j1DYDgxaKiS0b#dn#2er{j4=hhCXX3{$eT0inVp9`UygAiUtofsAie z^!lEiAT-pmZ$9*`Cd6owPW_5YB_fIwfaGW2AgbT3>0(!V(h<)UO#r~hryyBnPTrwz z!v)FbzZA@kjzai}x)hfQWzJ-B61|or<|8)LP=j<);iwSKoC*atTiIq153`=hxs*US z)XiOS2IaM@(nY+;!Px~>;K8orB^}PdO%hB($2OFQh7UM~lW?%MD8%CDGH-n|O%<#Lx1(*4AUs?rCP&k3Zgb9A(dPB~GUyXY_CckQPyPf0|J@aeV;01p3994q z0@5R-D}FEmU6CHN_2?ou=X5jb$0gy?@8ekxdHo<5_tkq_%Pn#s`eq@Mr`-tZt`ayH zKz;?RWMz_fcc|Cn01e~`Wc%Ju+L6;Zp^scg3B?-aAqNV47NYF+=t_KU=RUJj6e#m_ z_Eh!fUG!u_HzI)hRQ-b#5uHm7_3q%x8*Us*u<`f7K>ZJaf$|PhDj-qjyAoP8F-a4& z>C?Lq;;*w^04wd~3nEcl3zjYV7oVPZOb!GqC0WM5|NZ@DO5Iw~=EmARv;)h)=u?Fd z8|xjSEgfw;U(Bwas7eyeElVV@m~tQ%3OS@xb4Q)447pG5iKL2-=-I!D9t)shS zrr2Z`UbiH9L^lY*;t~q2?flKWoCnL#NcNzeaIb~(%1gK(WkggXAx84EwaMWI9;uRs>5-1ZTSLs5=6`;cb#4AOf9CNoB)adSI zr=T;gGM#!>#qeS7+AI2t_`lnmXehYgdPlA&`5Yk*MAAK3iF<$?1h&m-*Nj^+D&z?o zhnI@#T=+B9cas>E^?#)UY*Ygui`hfe;Iq^Fd|x~k)QyOCF70>35#MlN8&2znL?fOk z0Xog~^oMv8NS4l|0L5YpkhS18coHInbc(9$vSjYd;}MKTDKXVwGtHfn?jjD+qGiR< zItM;(GezBd<`mIxDE2y zPdM%mpW*wQi@6DxW{02*$B_s3Gx@bZ>$)nT_v~`gVpG3<=Kt0#to)0d3_QQ69F?2; zB|LszVI*Dn2j4jvP(e^TVBfpnvoNr8D0C&a`t*8$E<~=VoCABQ^db_C5h)csFPRoJ zkDE6}9!Xq=aXk6_cLGyI)ZQ)Mro(Y7a~~2wLM4K>7mom`29du_7o;hU@Ajbi;`L6{ zC?yVo1f0I}7cMGa&S|V0EDKAY6*GDbyi^fOj!p5Rnmd ze>8q>nExOcZX#*+q?F0{Ic{O2Ni!@T=e(}hpm%%4G^(PbJi=2!o*7_l%z6&Iz`KL_ zo+FD>BhcEWi%CHCG*M`A%pScvj1i)Uc+BCFXDW^(A7gI_yl<60$gvm;yvecwB*nLo z;fyk|gF^N3cI_{dfdsI@+{UYMV3Qrm{xyWEN(idO8fmsXlHI^o8uo;@c}jE|{WZ); z8C4C>TKb(H8fj7Hu$tu%f2YRt@*!a((E9BPll7V0n9|=d8IW;g_1VL%kA*^G94?Dg zCvm-7br3@=^+Uwrs?La0O69Xwdl^oBa0p(mx-3GJp7VgY#QhP3dQ z%ffaISw*|0`JruX>oGKQj`c$Q2AqkFtuQ-k!2@K1$rz1jA3qyaYa{20Bbr8VALOHu z9)s;j!W+05)$laIE`EeR9Pn=i5LFAeZv|WTY@lhrpd*xe|(n zp_PRxB>lqm)>Nuzsw~%n@+~H~WBnM~q=*`<%7+Q4*tScQ{gV%(^R;kB{y|v{;>V(- zQ{U%U<{MKjAsS9(3FRL{+!w@w*?zkBj4m2AP4cu3s-=d6p79hRfB{;`Xj?)iZ)sz7N-Q)QrgCoMBr+tUn*+_UQ%1W8b~thJ zj8b<16bFk|BFKFxItc(Qjqn&!umViB%R2yr1062cZk-e&*OCx+==7HcZh^s|GMa!7 zxiHbl5Q#4G7 zR@g`|)z{k~orWKebf~IbOCy1`E~lhMs!xgyeQ=^o%;V59*1xvi^y|P}HJax>w9BIF zOa5}y)!m{9FgSF!HqI`pU4q)l`@0QxLZOE&fG5c`S1cK{rH28pIC0j$MNoQ73u$E1 zFQ>U1vZTSR5=|%@Y5hg;Dd#t+#^WdB1A{F_FSY%+P4e_w0PKpI^8r%2!NK(`!4=e>nCD zrHIb(F@LTVN_#JuYCNZ5kjWt=3C|lk{!AtodN|Jn3-$jP`&hh3WEn3D;bCLXKTx+y zBoR1Z$H7^slI7{~vSz zqGLIZCEKDulsFKdBLDx#E{Aa%rM286F0d3dKjA;?A({i|m@b1{@JxD2XU_e+)ArRq7`?SeS|(~e2g5TAgLVpdv^?gquiTjb zdj9Ix#b2O)P<1?Q4OURCc#N_lPMI|)6p0f0Ktk7P9WMsQ z;Vt=miTe^<-DAS)*n=>qm_M$GOYU5|>{*Ucw|GER@o|t7dJNrL5@B6u#3Ne2$X*7!%+L@N3-OpG@f^TWKCJ16Vg!>T`z>=|B-~q`b+GQE z(1cxW7A$7(M&w~Q-ci+5UFtR9IgGF}MmI_>M-md#1>9IJ-14Jb&qy*#EF%Xqwvo^=2Lm!{ev10KIfrHeTUoPbD>Z$llsP(TdFO7mA= z`B6Ie(Tl_=0mYP39ES%En^6Sc$~HvI&zU78(}n8HNSVa8{`{X`?zumJtZu<@x(0O~ zPO`*+M~e2`O7qDmOpycA+F_Vz135#T>F?fntl?Scs{3OWL`89Q#P3k_?_vMbvg%92iV(p^VKN&}54M&C$ zQ_dsLqz7j8>gddWetC&|HqIQ8^maRof6}E7Gh2D=nytf zGvOuZIV&BWvQ`QE_fpip>4 z-%_VDn0U?3RBz;$WV*>bPCbDwas1&I;-7?!(2m-Mwj`zfH#|W3g{f1tWlpbuC|Vxu z{SSh(wE_8+Xb4p5q9f!qK5EaPB!;VghF_S7I7Xa}nWiogO^0)TQ??%@;f9 zdw4ILVu71LJ_A=R2R)Xo8ay&gKV3g*&ORi|$=-+YVRB0_zI8qo{2C?q^=VZIZ7@&Q za}k;N0I&J66{Aj&@rvcq>$G41 zgO*QosPDt#Qi3>xz=L?<=tU}cADy!ys+1q;6lZ!Y)SE=tyCVB3qYc5b(%P?WPe10at5@N&I@^-Itv zshk3IO7VM-^aNi>O$5*DV5$`gJBjprBBS1Xrh1Mn#^?_*64(N|e1Id4U&F|Buj=L5 zrYSa_K2RTEluEo#M{dTQ#Eh&fhCYTBs2*9xI?am{m3|_Mxyf3*KcL(`gG}zYV*L5+MX|ZJb3W$J9QVNMX|Z{q>-_wtHQU)mj8cjEA~H; zf^a%9xg~z>9fLSYqrf_knD@OF!^MrT4(8jd$-^&25CIYb8Oy!|k9}{&SaHS#86*&Y zdZAK0!45FYu=+ZXH`A37UxAY2pGb7Y$%uLEa+LN&Z+fxBj*a|~M; zsOuV84`ZiDaOYcUozb?i={9fh^DXb;5*7|lsw+wwGBg?Ku$hk#7IFN$sDxJRaSl<^ z_jNQ{gT{k@3Rhtiz%2riA~SOLgmsVeuZu)xgYA)tuhOLj3-9|o*xNK97*`kLC+6g6 z!ATHcxDs{V4IQ*Zwlz$@n8;xsg1oqV%`jBr ztM5EkLTSq8Hb+`@RGW%S2F|%|jK3Pir0YwDs=dU~l=H~+G4H4MUQE^?MDJqqy*;If zRk*tFw11ryig#kIeVwEjH23Umj+LGG>$&ykx!942zLDURdg8S)HQqwz*4qv~pv%x< zn~91lpi|JA<3};HMHLodO@wh*Sv-bQBv8ykNUq@5EqMEUzgv-;SaSB~VXsH8wsQ`* z;Cf@}-pWayqUt4D6PUBJ&x_pqB0HJ`)7WDJo*7R%DoL+HFduJ?z%H?rO{XOI`U1j} z7Q2~)I7-UjtU6+RoIsJMm>E5SMo`~UnT$s^gByzo&{w<|UD`Szn4?CG)uBl?(nvsg zI5Qn4U^`TSJ1f9xKb!-eTl;~Nn+8?XMyz}LK|fCX3iK?+T4IHSQX@jIZ@(geq%JOw zY>zb@G!H72OT&}^Tfl9-5H{sSEU54T!E;Ny5mcQ*Hm^`{qUONmX)HO z;gF(p1gtq9yHX(Qd%MMOl*TTv58jdUcyDOX?~}4dJRzabTWJ?+b7iK^t?Y0J47OvX z;AYPsu&O#2=0D$x&3{K2)WEt>=*TVo;shZZy{bYbD0n|cL1Ul)bUg3oj)e3EhKG{k zCkUU%7%m9G-D61r9i0;7go^Umm}1j$n8j^~p`aD)9C4X4&1qt@&6w^YyW?IOS9V+= zG8hJkY>M1~Nn$+LGqA>@mZ1r<2xP&|P5pWwyW*xXNA!~%)d5|yDV2CVt=m!1u^S@;tp9^S*gcMdjiHz)pEBZK3P%pFlz2&rCsMZ#lhX>5 zH9M6UWL4orXy~H7)Z!2k$EpRA`!qM9-mz`Gd{aXVVv1etE& zJ+vklvv%8odclBD!UF@Jby+6|B{u9ViR3J=S`|_R2puHaUs=%%4M^B}Qad$g{S;T;gqUWiI2Jz4Y2)ycYg8TtXs6In(;M_|dj z05~%!N3n6%y8it^G?_}FWgJQ&RQt#c_xnK|3o58QVF_~j!o==W$#%2Lsv%A_QeE1HG(rpEE(->{`2M@rxegfq7Km58cHXxmG^yURP zp_)@t8;)?d@nCG^30GHe0+~f@uXW?-wOtU$fiHrdR+zp*lK$NWBvs>rsJf_&pUG2_ zz!Ir_gpz=R;t48!`+q+Mn*SCph{-PW45nV=4UE2IRz`2!#v1{$J}pKR*bg|mUkH$d z;D}xDY&NpEpzMe_z+`2l*oN3*jYiHFvERwL;9tK;VnfjCmw5io z4Lxfgq|rTWJ>*TmC1b?w@MoS#BtL4z7XynvMQKRWI}4f&hT^g@hl1_~CUh%u%&_JJ zn4hI$tlyy0-I89Px|EgCOH&TRT@XD5;}w5ltlyz#O`0l;fHIrT#vN=1T&r5Zg% zU@L_meQpSq1$GDas^q0m-f^6BG90wz*EO_(+bo7ElP@bO39;5xkP|URbYzX;)Vi{@ z*o6lJgz@{bmKdKL$lg`zbpyVEG;wwtPjsso<(Mos{O28UOAKx(ssX0+`Ci(Z##AUV z4!C#Zll9u`G_T6e3ISr4?T{k2o4&vTX^;<-EOkvR1i?_VHgG?SH-)HrA9ReKY4n+v zg&C6ZCpSR}TJ>1Z%XJAQ)@m^ept+EQYnHQp#^Q#Tkhl+f${DQy=i!U|t39447k?9!Swkz-r6fpdAXx#8H%nF zP5(@D^iAQ8J--p#J4@Y{m;d`J+8SND0uCtK-4OCp9+K4U}&1KKy0&9()v0362 zlS%qt7z4wxySQoBl^esN|DF>x|0PaP$zmsH`q|&pZJp{2<)DbZ9by8k5!{5N?roAs z=z{wFQVjHuB8X##)d=5y3|#O)Ur1zAISe2y))Eg7??I>Tw>?gF5=6GR9lT98m&_BPt!|myY8rsYuy)zjD^`bV72 z>}$KQy)mv-N(aD!=D_c%3X0p#S|0XbmjJ*gF&&=>&tizI*%7`Z6hb<`j0u4=h}z@Q zNG5KB-4QW8i=&0Vu<;nTmn#>Jr?lH-*KMB^;fx?r`{yacSFt+rQ zcL=g?somM9pe8PM8p@u=yf6HFX%#A&{d$TIK~zkBE;88R^Ht{&ZoTQVnrjNEL^@lw z%zl7EiBNX0T)3zd4;-t+?^`4u1pu3%9Y@eB8#f#^)Q85wBwWcuIUMmChRl%QkFV+2 zg>~B~+5pFV)Uq96043+0{6gUjFb2DvIWr^=%dlYAi~TDoh`>AS4BNZ)oEFrG>R%); zeWzwni{V1vq?uQgd}cl(FdaLp@3`fkkE<-3j&s7|TCZBV>M>W1*~}unG$$vm`-U`A zhOHz4#%vi1*SffFJ9hvdq8H)MV>t5@AB0cmR;12d9TM~P26ytr5bR7({QCPI=!QyI z0A(H55pt)(DfdJt;LFD-B%`$hE0|nUp`G8iMQ!(n-S~MNo3Jw$!IGi8ILWv}qel7| z>176<%4bd~(NE~KE>OBqDL0$rj?{1x*mG8S>o&tPfgi#fD`%ISh>Tl%$@E^4-C{|r6*Z;j`vwWr z5~cA+smG>|sg)(%>#3p(`Q^pi$O(MAPdW2tB9t*l;SgS2{(Ozfgl!H+`MIuI-hwlM5mMl)sO6O)Tb-2N* zgTJe0{Lue+dc`OaVy-gWe9C?OqR4h)bvJQAS@$*IvA{iSQ4n*~R3)H~*xj&~eBZ3! zM#Z;!dNLe_$rT94QF<~Qw-yaQK~<7QAm(8Xu>44!>rp8f+U`3_CHIzr}(8k5TZFn$T^Xsa_1hA$we`MuUYwK5E;& zmgo0F88H_oAoqLlu(@jJtF4m;g`l)CK##F9Zm7H`W3*V(F^*t6da*jQOJx1O9e`s! zKiO4thjPTKW-5Z7nM9De8r40xH{iB^O$}>`p_%9D@!FcROxW?m`7=CTTx;U(-r@23 zo-(7etek~!MKnY}`i~=Q=5r<~hcReW!pa$DdRk*+j-$71-K52SC z@J@u+YgK?*gJ<)OOo}TO12+5iKJP!7#hMa`Agqm06%l(2*)U3-xaCpcOp$M5TLA;0 ze59=kg3crrC0A^m66PmdQSrmM6?tY=AneKK$y8-rk6o=75suiQ+))CuU!`^0ri1BI z2Z!0tM2+dsRWE(f4wt1AgLbodV@NA%RKUI`dihoAoHtio32iUEoCM6X=)HHF~H^M7bfS^0-#7dX76QC4E4s9_Ch0yfZ{Ew*Bh!l(3f57^{2F^5)mj(ga`*8~ zZx#Si9ECKFvj4B*A#i>;>ofB{y7<@&$dQ@QSzaE+ROPyBK4WbtT5Y1d<(S(Yihyw1 zLR%PJVKHM=8l#_}(28J%?j~CfuGFMkZnGH6;-;4}2`sd?gGkvKy$B=l^9l=9_c|S! z@lNl+wC4v?w?5iX`_?^+;&63X1tJ-QB3zd-6`(p95=XT7!gvO=gksEMfurVvC>rhq z5&F6%_EihNh-lh&`E55X5pk`YIN3}fCe*=hAwI8Ep!|l|J~qSfpwS3TPYRfuvhfFr z9LyO(Uy1#;i523tgib76oYJQmp9+E*pAAW8N$uadH2*gIsmv#!Tn858S(hUpV8Jbk z$2&2D1ONnZo09v6iH+8FgeUC#mp4d53$7dVreGKC%Mmx7#5PM@j#;2 z@1YIA2Qx1-c~N#`2TmBRl(pq}rEPFAeb^TKa#elBe-;5%l!1nuin)ifQmcYPE zx`%1dGpL)cAv79+Nz8z3NP!^BK)rV*qQ(M1sRRsZ?r8jG7M!&?=e%}yb+GWJZ0pf`> z%5_9xPs#V|T!}}jc(oR*;qMbL#V@Ms?awVZi;JB+#iB;#7Snz1&^zP_5&%_HUB$q$aAEc@k`V}NE^Chsy%<1PuTQaYy zsy5~qLULiuyJLjk(Z^iC;&`@3mmp&?ef%^r?&~-0CX4OoAo(TYk+}bm$s1cLCJ6CrWx*o_Z1wrtoikUaTmm}5~g{_Bfl8O zQa)Rl-*C^k>oFIVbT(8JW*o-B6yNg+_Oa@M{T(Xn0s_)&0oHibX9e>bosyKMJd-C* zO|(OvT(}xN1XkE^6)!NZc8Gplk|=^=5>0rs^wVeBGBAv1vD$atNIXXQ;EO5-o~eu8w?MO?vnx8!tJax+Ho9{+PF z&}R+wKTv^CoZrBS*L~Gq1hdrRmbNnx)VG77~iflodM5AR=5O$p$S6OYw0Rf490>!PgEh(mrfUc zHxJ3FY-=`zxC@+&EClLH6lPT4h|Z?P9G!7CQ;o)^^gK&A&u{_XXChAniZdxipr@7% z+~k?ZoZ%)se^@3&JNEs#ZDvTtjmFe7`=-xCo?~CU?q+IZ5osD-ODu4R{Ni6J_9BMS zkX#f^h*ct5$tjo&`q1PE=Ysc7yP5kBpZhi;C9w&DXo>43DeO_~)le>8^wUTnQaiAA zBCjPLj-gBjEX<>K3N;rv@j)}^sHNvdNw5;19elqo?M6T)nlW28K}P`#rhMmsR~v%?q~ScUKt|*}|+P$r=jkE(+;NcZMeKGV1Intmv1(5T&b-^7Mc{FMX>Y5X_>D z+9kzyR8wC!;V!UX*K0r!pC6+eX!i9`4ltAv)Uowh@kBe$N?-y1*A`*_0~Lt7UxAI( zxo?{XF*2YFn>@nr`8Md_i*Rrjny>lxC8-b1Q|&*FHZ-ZXxD7d?p0$#}z*Urhw^J}^ z$RNXE(unY4#x@`gFFeknU>)pKMV+d9IrjCtw|0#vQJ&8TTRmt+d9lj6^(DokZLri* zTvzB$nZTf|#wZ&(ps4i-DFY01#c%_dnWjN3970pSJ}CCVK=?xa*R?vRaw_bbMI(2Z zl$%cP%nQhA9P$pC2ZP4gskf6YO$WuuL)jY^&2}Zo_Tf-PcI{lgEj#KLDF}GH8p;o3 zLzMnghHVp8kg2c#I2irK=#z^A`7H{OSln=GGb%d?_8gQL?x(o$|NL@&?Cs)?gr&Kj ze+rr3v8x!H>xsqE{fb}{Ag#6K>w{!Of1)HxQz(!~;YSILKbOFs=_tXjJoj5HYJ2Pu zgAg(Gy4V^@nv8$-K$UJDG+?u4Os@yp44Sl3?G9Q0B@b=rc}~ZbFm*jpYPZ;&8Oqq1 z39%rc^dnDh3X^DV&+4Anr_8G6>VKdKLC{1~&D3EJv?sAP6S4!7F~`NQi)aeyJ=T+o z(wfsQJO39E?O+iISN*SP8JGAepp@DhA$9~EyKHzJ7FD6xbGyc0{0w2(cvfGkSiTPn z63o&7@i3<&iJ4_UOk5Z8eq@rVL!}3^@H&Yo_wlmF*Gy+cQLql0VBdcK@-2AB>?12$ z;Npl>OKh9ZhJfc3UG{iJCAbWc>yIbxk|__*`$$O-LmR{eXyCSAF*FcrfyH-R+6mz) zc4@0(gAmQK$!6MV011~FGm3SAMfMkFgpRkM zo-lHFjm%hB9p8?_;TLrt6DxGXJ<|M4T&r!Dq&s31vaqn z-|uf_*Y${;G~N&67~=q%jiwyb_>Jp8Q5TGUHfA)+d>@<88rs~#uoX3yd#q9f)&MYe zJ0q70j<(!uM(FqAE9s;+h!DXrJFD75*hmflp)I)MZ>M|oQCHs0G;i7m=YDViAysvos5enLlR=CR-AmH96QW9 zHG8_hAwkSGyG5-{kSB6o&MpL?!_5$*#BGSN`(n4sTIH`>F>be>l#tp!NMc~pIDemZ=#FZo0n%I#2Sw2S)^Tjr>F9`$DrPg2JT9BWhi%|s8AwZ%HDgr?KI#hBCS8m zCcN@E_s4Vb;qCzjdEhU?`yQLKzZU{yIvJKmKo4ylb9;Q@8e`&_8fS=7wQ{T5K;&^G z7TeA?`Eb#`hgrWE#br8W_xX&j7^8N{8Xb5Fe6xsj{`!5mY#|sNc?h{Fkc=3%MEv<@ zN<>I2Kfje2Vc$SI=9#haTws2fv6eXHg={LSy#q2L{%>gb)0@K=V2&kZeqQ@s8WIVS zXuJ+MzkY9V`~EwHR8+@fnHNVzu7K${11?w+U=WV5r3r=n9?$R;ZasAM@kF?Eg45yo z*^gbLpUkfGyGoh9l^rRp*5utCgH^=f$_tD!Ut%Wr+M<5n5nFFe2?UwHMost2s0V!$ z_SJIi^Q<$Ww;b}frW!QWj~1(;$ZjI4=OdJ+;zl>ujUA$eN)Vw=_6W-enO9SDcBUOP<+udd9lc(6XXAo_Z!R zA7bj4)DQ(`2%0QAXQa^Kc7)m>Eli6Oj7Ju|90hWncAryA={5}HPRTl|)>U-h9{a$s zChF*F)6RK}COTTz9sSQQpHMFU-`HV7Q<3sGDXe1^xnr}>o4Sli-GKWS+GW}x;CkJfErp>%BEWR( zs0_G#IV))G{!{ko*9Egb(maI=AzLBTo3i8SmcINJWfrFmxehUQAcICUUq^ha8dekE zm?Gb7D4lsq@Nc3H$P4(ALdQk(1*aA5LZ-Y8d+NlqTV&{u)vDA(K!3{RXw#{@DR_&~ z|M5M5oxIqc#e_-`x$GTJvxjYFVCCyhElpKxVzGaXC%EYRfYaodG);I#m)PGfVj<`d z2h8xGS^Ld|f|`iAQjB>3SZQH3%>gDMa=mW~tn94aBn>W=?)uLEHVh&jhS>V`(bczw zbch?o9U>3Y+ZO+s{QaC2MH2Nq_No6p3nDk2c-PbLl1zmZ>pVSgAyl>XiA!Uv0%=RE ze^~d!I=Phe>kN3LVNI*>1NoUsLL=?!nFA?8EWab>DWVW1tNOW5<}9l==D*q9`;V+{ zCJtyk#BPj>L!l96ytZT%E%TU&`aeHEBF+k#Imxwajx3{vq*i=bM-#6S`{aID){KTI zcwX5L&>oZ}A^xDXTDRmxRI5YC=3dCRd zY0#f_r7y)E@FG>WROVdO>!`}$gi6IygH<|ac=E5BnK>w(gjiAW-IFz3NmDsXE7%01 zylK{ouw!z}N!|WX>HbC@qWfi&_wdM37qVhkEfb4d2A{|zG^ERa01XJjHcuSA*#kT% ziUuSxSEUy3o6z{*vw=Qqp#K35l!-rQh@ z2=1CKd>w0$YS--zbv^`H0A5*CvTX`4`AAAEMQK;OMSvBBPKVGKr)SFX%dxw<-E2Y) zBJZlry%W;A7AcH< z3{dPT;!3_b=VSn7Ku}zBDfm>=*I1m$!VR#nAI1=c{eZwXtNAyC^ss!Nrz{6gDt-x| zL$muhq=6k>e$a1fzGAcDl`{8L`UO*v_$mklX46r}35BjTA1}<|FQO7c)YL64|GXIX zP?dz9OhuiY@XF+d84yb0llsx5X=vBwOm@_j0FrTm$B$Rg1baJPib3-vB{md?=AQ9! zQm^sW;*Zc?Q4^<=FhB5G=O&+cd^V#fLV}kTb>6BxGsFfyo@$2`2L$@z615p8=F~u` zw{mz-Y;qN#?!@V#6Oo`3&$4A@zcHbXX67_hhQ!#z874%JYqU?xX|+D+qb6yhS(r4{ z+*Ef|H#^{!K>`uGF=ic7bQ1g)Vr=L>H(#Ve3@qD1NFxc`xa;49K?+$f;c9wk3qsuF ziWNor?G8h2tFh>{Yn@lN;75Y>myu!=argqlV}KE>J?a&wMhy0kRM*GL%^g!tmu-83 zu`W02gvD)-#Ak%$ja!5(tr&nWILSJyQKvCqCU5ht>Lcv;zg zn1Yx=!ilf_fL@dzzh2m5NXv|wC|6GgI(<*&A={qq8qY7jsCr~S?7pbAk%DGZKoG6v z4-nrkG4D#2VCjkKD|$zgY~pjcp9pGnD;seWS2y;751IJa1+g!lbvgC7d#*PLE%w^zq4IKb!%H;h7aS5(ne1STCk}`3WIT zypk~JUXnSpGC$+PCb3S1^=ge7R)frGn5>(sYSG}YobRHe#~$+E2Jnsvp)@0#NBIZ9 zG}nL0yAD4dv>Vj|VXbERL3~lbA0&9E`^!#|kCHIc!M_Vm za^>?VCMW$L+lc)S;vf{MNGUMk&A0iLu))N6jx{QOw0K&s@_@}B;-DggGpd&Sb0c;O znE*kZUVa2ME|cKCeqfC)0-^^5dFzNe6+1Kkb-5LSY0kgncq&se`fzk6_6lepi=P%G zV-RMVVi!)gJ497b^&2A_9LH09p;#bMQDsxaFi{*^XPq26H4Z}`F`4j2%td&m-uYfsO&{q-A+k$XQ0GKfv$9>-wfSMW9 zj?1MAk{FG9J&FM#2X<1B`1l6*m#3pHmU&;7)jmVua?#q-_r^O!(X5z+;2KcTCBW2x zoK7_R`Z*U+0e7hP&SU0URshJ)%XPaHF`$#jT(WnX7iWwzwL;28pHx|lgY@)I@AA_y z+m3-6A2QFAq-0G;OzA0>;ccF1CDyzWhMCSsa5cyT21=JR@*tfR9kay@Ms>fJ#OU#j z!E&I`;&(@Dd+|erLdvJLCC!>Z+L6saqub@3qO18^EkrMKM~uMr;grXWOKZBGC;bhK zzL1}wG|8H^yp)9KGgc{DJJfoL zYdxG_o?n%-&bt!opTZAf(B+|n)+u8uJ3ag%36Pev4m=zuS8uzMA}30T@}byrZ4Osv z3KQTB5d%OxB$q?HSUj>CH}!IliI@n%=Q~Dj#T1h#i8a9^26V)gF2&3;2q)|N$xogL z0jqs?x3NB~0utW6JyBIU8Q2gXFypP&9ZBce+C@}iP#`c4cuf0sVa4jYGlFl=N5kkF zY}`EGVrLN61Oq=te>P|9s=1!R4p&_fq+{-&-XB-&jvQG9>iRtUGY`!24d&PMY84^O zgLWwvO2t9BSo))3q6?m&dzs;dDu;3kZN!U4U6qfgiMT6$@x$9kZA7((;j5P0t)VCz z7Q=1V?U^)!0GeX~LaZ>%jZw-`+pCoYrY`y(|2?7*$U@`qy{(B1{PgOEUP-#OpKyfuRT z7EK=V3O9_oVOh~JAjTZ_vK|4zwqUZx7M2Z>WXsOJ(kS~Xve{&3L*bGE@qT&~BsWva zm268C04Wl+F`fHwCGo5-ItSZ5fPzp!=SZq-SU`yN)3p>!*LC(W<>Z`=F$ziBOg=!s zh13{91N?KWUIEscTErk6WKA7z-5WS9ek!lOB}=_107@hXcc`8Wvu|WFu~e3ApG!K0 z<(n1>3mgXeNaez!PEeP;=9dlg>}yaOG!K7~j5g`Q&FTNX9QGP}Jr;50p>`;4H`eo= z84uy-p~IfKTXfR8s3}B`tS8j4*qCt)${9e|^K8JW&X9(2+eEV49yd*?Wv0nL=1--J) z2ob(=5}fvfO`5DQ%@jjTvYBa3)V_ay-nxI)2XXo{lVuq;KHa5)Rdih$FDYTux|n_4 zH9x{LPM zot8gHglw6Q&CC}9AgCgpU=+8KP4ZuedJ`vI<-Ii_AR;|)YKq9H-$7)AgyRT7hHs@B zpCCLqz&2q!UqvEj6Ya~+)yU(w!sD@-0Hz@0)a1xC;T#6Vke7BW#)j_F=N*1t3R}BU z*+1|jO^4t+bZO+y5bgU8gRoYZf!zo38@MH4$d}2Tju#cvvo>UysuYL^_0tr0jD!49 zok>lK>f*d~rtj+!o)u-=ZMUo9C)MoOv#F8SE*oxpF%>UK8c&E_aWB&*Nguey3Un6x z{C{wuTnp?7i=_jwnuoYvuNTTfuu6^5Y+ytc+IApM>?=?w;UI3#w&hA`^nXvj7;cpt z@t;Ix@g&p=oz5eQtgn0af1L-l|F?P2ABv#=0UN}q3}qG%?A5hChnhgA%vQRl4X+N5 z`j$%wuI4*BjG9+Uik;&0oeGVlhZ2CoB?{%Pr!Fq0h~&z;dvllU#t^G@#vu&A9rVvH zzh@)A=&XxZU`Z1Y)n5q2H*E}Ki2v#O(Vpre@yBva(#Z(LJ+bvz;6qR%M zA}t6d*Ih=iU#wLC(o#SvZp0H5Jexxq><00Hj7El6!xYL`hdzpe<35x6rjT-$>4s#H z$VudJyqi7#T<12i>BUR(^~wvx>D!^@MZ+cd8q;nQFmAYS;qGKJu`q_A9u}ZFXQ{_> zjfz3hZZQlRmvp?8HqkuZn++}SW7J!i=@drWyWg?;GfD|t{rKP*JP|MDue25sm(Ys) zF_9#VDC;*TA1T;&(A^KC&apph$fryPQx-6w^IeY_1gWq4X7`hz3z#M}_s}FKK}*J7 zldRsYjMOl-r9+!oC-B^k8!HMR9;^fU;(T)Iq?PS=YK@epNuLMrL*&Gls8*i4qP-dwY8QpRV>U zC=J0O&*J4rg6j7#+IljwAtp49c&6%lsq#skIQ6esfgf1}8Xh&QfZ|lgDw3He{=MTJ zpF;B1Jm$mBqk?8C&{^AlZAx5^L4wW;5G~2=WQpjLW z`V@j>m+`q?G%Ke{`n+rQ*^7_>W#02g#GPQXK10TJ1yQ?$4>fQAj|qOT-rco!QP(&$ zALfCcBjug3@-r%L>%K8G@eTEVbqw@B7eN05GiZI-sJ)cmpSM_VD?tBdW@T?yq$D&x4jWU-op<)oO6t}9b{4swIVDhlbw z#Ri-B&8R8h{boI!yWmz`}^zZ29u;GEP#X}z$TQJD=EbBL;V3An&Ug9KrCtd%UwIuC5K}X)%69L3Z_Wk8-6|)~ zUs!$Nh+s}NthQlu{em{jcFB08C1dh{C4%r4(0h4jHY*&VcP{B~nPjwiJ4(;n zqF>}TI1&Nl<$yTtWyfxO_OFae3?0N^Luxh3RAlRX{L?h<=+LmaN?QYsTY)7C6*yLT zCL6P8EEEJ+1`;{KEga(t*qKKmM@@XQP3rMWLg1KDiwz0?-z7m;#fDJ&#Dv1P0l=NH z6UQuXN|}jI_snH(MfZ&@+&4z{Vtx1q6`^9Jj7?%ennSW0A#Ak%Bd(Z&X7m{j0nbHg z4pcWJUtRN$buDdPX{e?+k_0%qck;pa9k3xPEd8*%8UxxT;LI1URTrh4T8I>{6OJnB z5b00y7KJ5|a;XW8?kknq6wkSH!F}JJyG|9Ip*~5!dMI;$Z!AlUDL8lfy?2rS$2MaB z@7f?1?xdvCnB?~fhwg(vxtg-4-y`lJC^B+_T<>=-5V7+!B&0tau%hfHMPtM&paJ9U z$`SKs`tv7j;TtQObtzOA!8oXu20D05#?Dk)d@QlnQV-zy+_kE+V-H;+A!V&Iq8?*w zCJ&^`VjUNV46@D3Kk0wio26$&!RS3ZVmT%pXwI9(en@h4!Nmi3-46o71AOl$T@T`U zhzs?ZzVmvAk~X8Sr^Ul50!eSUJs23+*wlt~9oO5stwjs9{gl}7N%}w-_%#i<1Rt)! zd29eIG+$v68HEVDh{5qk<7~>;)MxQnKQna|+GDsw!8|0qLIav%pEDO%(v9zANcuhU zu&{*~H;CGVf9SYqbs{^Ou|*s_<3MySys93%!%Eu&)s)WlHq@HQyy~>D6tfe=HieBe z&KZ%!F$AKjwZnzs;d&fk%nCTJB80_kx}u3ywgqdaa&=pZB~eHMZVW?N8J!~oOGd|j z-Zy)_MA$pe9dsJOfx|r~!G^bCmk0($G8j)fZ^ZQszp+EcX0nqp0^cRxwA8IrL7>Sb z14YompJ?F?UPlx9baoW$F8u2*3_F7i`w1QPb5d093pDmzjqh5BNf+pMdV-Gxu`0j| zo9P{_`b|${!K<~&sW~7>=Pi+`E+apF#{P#>{JnN~K=dQ4gYVG2y}6XKb$x8F6nEK} z-c0EZUX&F{jTjx#Dw!&k6F3g%1CVHOZiA}n0mF43t{+DXb*HEuc4(vZ29|zu-Nh9O zpHr-mp~2upODCA3Ni|H+dUgCK4{_MZn}=;gJ>hwmzy^_uMM@Y>$0H1BLJG3s;aCpb zgGe0w&lOvL7J$Hqu9HdM;JMP@&4)I~RSC?yUIx-=9mu2jVF>-=dFM*kAo2;oMJxlO z_#VfeL}D}rFER#0){%Ger|XtH=~?tf1E#)rUz`f}k@xODx)ip&_2oJ4Q=Su2suxqU zD}&;&g;`y3OR>OTwN_Yp&lEKE3PDzD0s)-MeKRx${dvs?VBVViuEC^?Q!Ozy%RqeN zX8yW!wtu|}IwqF45z-tR3AuM-lE5;Fds3-StT#$eceDU0P?eV{Yjj7V7 z2!r|6;UQ_k+QV^Sdjq4~3D0CBKPYsQRQ=?Y7z}n%`xZ*_j;`?WxbTx}% zc_wj!Wq1Dt2rxHqZYTSQU$`!FTCQk^6yOWDGFKa>Q4%9j<7I?uThRriia zGI=r$+Tsv&UaY8x{JQb`fHncvrVk9m4PD~3!@!*W+LR?ag!B66mkTYNru2hkVP_|2 za;|ei3*QvoWLN$Tzy(jQ(a=(e%@{}_1fyf;i;Qn@wd#B#Byl-|M|3zQHITCmp&E*+ zU}bv$^YgmT7auyoM;J;4{4Hwz`|={yU59x!>HwCuv;0L^`Hk46z} zh^y}eeZUIj$qsP9A$J-D6rdum58ylN7C>O*RNM?;C>#3&iSx8hur^C%a-Ok6c}Ow!9Sd%;jwEm;tVv zjC~DT*8@CNtCG&+P0(biwu(LP%#cXUtxvJ@6FO9gvPfl*8KT8v{Mz1o2K)t~Tshne zIq}&LpHjbz3#^TgF$&TEOsPitF z3|C<|B-f5>9i>qd!~IBOWuJNp#KF-k<`gxyZT@hHL0TkNPCW^+`jIZdc}EY6h{e%2 zRkPUisBAmJH2|uRAe}JH4ib#9)6O(yugo^)p&@D3!K&gUdVODOf5HV_)HWM8A4TlG z43gDPOf)s?vmmOAFkL_FZ`}H#>OUb%4J6Pd7^W9rEFm~!;wt~;!sn!@(r$f}tBAf> zem~1M>6&7;W(<6mcyg}jw--cwqNTpv9;!-NAr)<7K4O6c+G4Ym$M~6_!FGw@ z682Q_IIXw|?t(G17g}ta8Cd&KO1frCk z2p5dCyGaBz-2wYaQa3o2>_V_I`lHJ9oa%r0_touOg&D(DqCXl^G8KiA#q%3!rsN+i z&GwI1zWW6#Xd z%kfgz$4tk>++mN@Dgg+riNrsSxxlKk#FB1K=YUWT#8Cj57!}+_gO8mMA03s5YmhcW zaizr<8bgw*b`?Q{D%e1d49AvVtT%A)*DDfCE0Pkds|1TBM;YfG9?JA8+SK*b08O`E zaoRPQBrlX81gu6=x^V&=nal?Fm$5#VPUah1-W=aG-6nwtlwUCa zoYCL6oW9j2`!~w>$na=V3-8>@6lg@|D2bRhrHjUQA!>mH2L?S-C2+bi;rQDKs46vf zvKFPGeH|9`-SgTp3-1(Fb_WDDxgt2H1^qM#Nbw(kkX4fu#A$m}%ol7TZhLpy89ss( zIOeCM)QERk@e4_i4f(jOw~aOL$4l9@DirC&2s7~06+;|T;YOjouk?--aQ)RMs-WWQ z1FCl)D|)5HI?tDV-O-AK(mE!o480*M-2DXGSEXGsQ>-rMsOuH3_`>1w8+pACig}d| zgYJT*YAk#BWmyOL5yhglWy45)9z!nzh;UGDgWoA*>>9UC=!&&Z-)apt+WiK7`Yp-NK}Wu%P0I$t6N3{B27@x`B{2ZbGbC1tq1c zyleYebz9fC;R-p-nyhT;DpxXx?_QwozlF|1+fd+#HLf^_%@|pNYKX*>A^pp*NNc*M z7iXRMear1HmgJlIGQTw$jnYR-8s9xEKlKYWz6^{M0*r+W>N8#bUmXJd?{(1syCw+C z&X5L$)8J)$l|PD#moDUOdj*vRCG{e9uf7VQ9-vYNKKBogJoiarXvzs32MGy%?1LDu z4hsf9e#SmX=zni_5vWnR63CeDWG9YI%q&-Qia0YaL3<(YyEd9kPm$3^ z4}sW|5$+T}ApRli9cubMCh!V-k8dz=Y( zeDLI#A_ULjtRv45QZZW;=LvEakr`8A3!c*l*(4&;cto%7YG4$jf{M?y%HLN|z(k^K z(|N~fmu;kK>Z2ebLr{sW+WHX4!YzwrXok1RqGdzZF7V@D)_oT0}ml#rhL< z2KZK9Gh>C1LLR$u+`SJA9GX@12__StXGN8{1`)8cN2|7`N1^-A&!4crseDT+#r!9p zgjiX2{y=i&z@#!)#agBFw@6!Bm)^83hI)xd^wsUasxoQ}dx-w@gcfq8yq7J64XQ+c zUKedR&xEpL9QHpHh$ghkKAu>sVOWTb87TByVTs;WL2f9-Cp-%aY^ST5s8bdVU!Mqz zW|!zVInB{h=t!t6D{Azpd6r)lD&PODRoMRm3KCX-@I|dN_r?CeLYol8Q^3E9 zAf~9YWH;~{Z@0&;uvJaw{39UoMpAy^?>(S0rtr|j2GCmvRVtq1MsyrZ8MvPC{D?A- zjTz+Sb!+j>h6)t_1sfP9h}kX%AV+{#hqInh5Mm~nSBprI?OVz zb|jgEvQz!GBdy>Vqf2^}qFsnVWDV1{2EmJ zHCa2uW6tA*jx(HUf4?_e)$hutVPW^T!0k`mGDV&fRzWk#;CAqXq;U7c9Mq@6^ar@A{R+wpR#9nx6-(C(o6ynbl4ZQ=tqA4_ z*$8;koDSW0m0rkJ$Ai!#z*w5F`$R}EnqVig^}*ACz5%=IY2ZodprvCm<<;IC8h1@? zSE8Ny{52uCKCB=o94s(X0q~sHNiDrKALwta9-v2o z+D#z1lgozi7E{Nkq;0Bw4d^#BF6nSB z-_&@X!E3kHhgAvcPYV{9y%4{7ajnGZpLyY2&R9$ppGvS;`fEV zwK-V>Z6&<@0UCvg4NL7U35yvkQvi#-^5ImLGkFByb|M&Z_{O_oN8p1!`EF7zmKQf}p&EN)@Oz&R{ zF*a!2sW+Jv4>lTgs2&8MHNUaZpZ{fem`U*}TpV!}kt%_FF>zPNDNe*`Cb{H_BRhj- zA!dqTtvC*G1Vg9+kLNRGea%!1quZp-^NmiL{YLX$LV!)#NVHhIO87|GZ}+GCl}V1` z;@mFLg=qn%)4dcoJTo4ufFMd>(`gYWWmwFs_!~o!slz!mi0@ZV1u!WFB5+-XQq-+p zfg?zOA2Z(&;VOUnk~1a_b6Pv#g1Bf~1m7$2hUT&PmaEW`Gk`{vE*_HHm)^G)IMID^ z{7%p#{XTK%pwu;Yx-FSR@-5Z1jS#xIRn7&85w|wt<6DU+F;>m0x>s{|$1|o98Kgj< zmP4r8@atgWL?szRv&yNQzJ7vT~;Qs5`K@Gzy808oG3C3^wEst?cpDzanDHDwWI zlN%3OI_?YhZM6uT^!BX!CS8H4#ykdM69Q5I97zgirjTix<5OTZ1A!a;q%$Nbq4_2# zC4$JZYWuE*@aif5riZ>%PNY<#Zh5l9z$;+{VAcFuhGFpCL35i^_^i&^V|Eu1Hc z(T{mdmZI0L0fba-YnJ0$=f^9|ZaS-EQ7PumY-yPC6ryl9Hm zJ{;IoB?HpTzuLQvhvT`!sr^<(vl*PySzK>WB6I$AJ6{T+?>`T>3@=Ces{QTj z|Ih^h6D~#|3Pl)r$a@ey1iPfCX9E!_OHG361PfvK-*JC2F*OCb5Ti|v-(2>uUwFe2 z>~}v~T=9po7?@90;i__E#lPY~C8dgJ!^M3E(wBzDBkJZ`FagfM78s%L4{D#AK>qkq zEy@ja3WAklDT}{F`o)dNbzG*&uLnKr*}|#kKtTSC^K}@^_xbq;9zWr}DgZ-3yuUpp zI#5(_7J#U@4ysR+_^uqRVYZgwJhH031Qoq#*(E<6H^tl!N`FA|;aK29 z2eUePM_@oE{f>*F-ea-*{-L%LYe! z9xnqoAL%UHPWK08dQajk)|c|9EA|~qQ#t$I$p(*_^%*-N zRUgiH-2hG8&|#y!5I=r>)Z@7Rt3VKBAHh`k&*?z0&|hN9?S)P?yze?;UvQpjoJ@TL$d zW6VAoswfO3@Fj-7LNcB*Q<3l-tbfMg-RL=v_q8WsrKyZ!*VDx)T|FW@>Uh_jYh@?7 z`EN1!SHSahHV_XA<|7eF(uDlRw*ssuE{2<^Ze*G*l2U1=nH!=Euo)JK@#;%S2fV`S zu`0gI;a#Vb|E#jW%?EXbd<>0lWUO}fI5c@pwWkeSLNy8Ig_OSVedWQcbl z>$3}xiq&Dg=qZ@rqYY1vnPlRnMT7Z^T5Ykacc30hKB3i_@WqTDDGiFQgb-jD8pKpk zdw`VxS_2i{X|h1}IV}c~4ib7@G z*r~jPGG7&0ERXwR=`r9PXC+RpFnCt+gX)LWm`^POHn$6O?)CEeYbLT&GGKhe4;2$i z^lwP6p-@FLg+`sB6ZneDG7`K!d1LW5Yxncbo8%6~4krHD)*xz_&D=OJ@?U*p}eQqnI8sr}&zP4D2=L zi}0AWpC1bp>aOyLclgX;;%sVSj3|}YN+$C>+`+`^Y0Hd;xgx^zZ>*sUEX0B1GX9;d zCt4yH8^`@fIntP?dV=zcfgHdbqthcq=D=W&-22I_YeMP(qB=~&z?k$m4WX!@-0tF7 zXydqbVo936*SeVMm7K{v6(hBE1R$@}kSIP+0(zme=IeC-JBjG*EB}KMS{amxP4EJ~w2kO@VK%S`YvXP5ApROU zs5G1}aU(%?7so1I-ESduMpMm(tFVsz=jY$w?GoH)diNYwcdSueYl3LIGA9I5#LG_y zv@G~Y$#n^Z&Tl$fIxt2Vz*L&i^?<~g23OPO!40EIHo=$8pir{3=~u`f*L{rd2DM9U zTnLIHnG^?ix0#6;7tF$u;a4d^Zbg9QI4#%zg*jO>juEp~_Hz?C+q9=kf!Exm*m?qG zujR>&w|-hr&1c7b1rjwzri`memuwbw(?GM(q$6%NL`bI$fb|L#B0FNZ`6Q9Y&||%X zb&p;oZ6HYr)i91HT`#a>WBUF%eB9Sp)6I4;MeiFccSBHm1rgR>tZQUm27nfJPF4SN;ei0QPW}# zfKdb&?o8D??l&gyccj%;%EEP(N+{FL5)i0_Zl(S2*e_q~VF-)}uZ<+vqy(kNbrCfM zc&65Ec0AlmOaDXoH-xZ@&bRUGgOAj$1mX1VClF0J4|TkDM^REY;XY zYV-Z~^-Bo~WhK$(akCKR2X13HZo2`dz`-bKsx{`AoA$`Yn)#X(4}(HJmMK3fgT@w- z!f%#y6-)L62_QLY9q&wr$CVy87=49Z`*F?UJIZRSlMD8ctjRK&hs2orFZ6aZqIi`p9|( zs9uFM)pLAU@{m#vC7ZPw+M_x|jU7w5A`aX&BWic61CV7g7Mei?XnKL2rlQ77lNB0i ziXcS&b~4w$feHI_5OAZ0bI!|chF;}0dqIdzN~k;(VS8v0B3Q9^f31>C!Yf6ay8l4B zWpo<;JLp81BFclckLd3kV6VUqdB!Ht<7)iWn=CTTDJq-pXO;D!Hu?^XUS z7!Ys-w4xHOd;njOA=k7GrLT5wDv*dVf9CLghT2se_#2zm{ZrRCWk(i#$BoiZzbFC1 z@WN%b9RUd?@U}=zV?_vVjw2*gdmZ<{Xg$;e$2JwK8kRB%{2=S03gM!3)Y_Aq~%2*zK{7D^3i% z5Dc!)2ZG8S>PON}CBkb?sl{i{mJ^X>j9wCrd7(6S_A5E2%Bq-m`1`>&)5}uZM03Q5 zqZRC}>*yLMfE)i7S`V`uIX?h{n;^KJQ8yCV3Wg;}JB(9!SP`@3g^BVH;CEk+vgL6= zRPRP7I*L_;Zq@_I$ZZa_#z@XEZD#$Aa6V`$^Pq9bY39)u(0j(=iAA6i&tnlGARMxf zkks)tVd{aFl+3|JJAtDeBhCHK&s+MhP#~&J9Lsp`-|VoAAq8<5dffL4>?>yIIWADq z)=Ns3@)Mp)6O`Yvq_}iRBpuUOx0?u-CyUGL=SwW5Con)BuN^b&7M#yA1NJ_kVe-QQ z2z2uCju-t7^$2JmioI9blM>aSFpYY6i%=Xhe~}Q27>E*4TO@Atcg34uSN=2jz}iKS z?G_Fj1`DYH%CeI#v}`9;xpDb-r!*(U;XM}rpN9Thl^+*KGA2j_GNA&FdZa72Y!y|- zwP2T&Ff$Fd6YT4&i+oei60snRDLOzPz6^W3x=gzL9Vvmzme2Dt-@6T&=F0V0!w6x& z)kZye9~cw3AfDP2z%(8Wxw$O$(!Pt3opwI=pRp^q5|e;YSK~LU;5Vxrt##D{jf!Pq2&qL2}~_l5?UU{k)(5`zcWQ zx41wIGsvtKVDHu6b)k8n^0fR00}+J6yo1@~EH43&pmNYl@Oh^DhaX-Xm_*ocV3}!G zs*;lqk`ula!b1wzm;xnjvY6-w;Dydd`K^yQ52QY^nQ3G%KnWxR$w_9nAIG1sZ~sC> zFS}s~BPaP>OmsG3Ff8)-_LShX3RCD{212DonrU!OtFrEp0eM7C?Zl{wZA6S*Xgids zWQ76dYx<0&kfs=n-r&uc2iZVd*wC!n2`c-p=o^7v4I3xIyF&^{IveOV4fvcy?~I%* zP(g;b8r>?hWAUJgiFIy~Qm)A}0BBIWk~_y~A_@w<#{ZA`w@X;o0pZ zua5|gVR#YVaUej*i$Va8h~{Fwz?|x@NFaqs^}y=B=RlWu1z1 zR8Dt0#;YGwAXrVzW&P-CA8u>IaM-A{*L(+~Ois@E3I_l+5E*qNfIL)}kZ|%#8^Y>h zviv*zny(kQe;;QF<7u1B@MPf)eT9RI(TskHsd-HLw2M&+vBkeM68Jo%m5ntEIvbWl zqvdGED*LDtt!jyU(z;&bm3S!01fF)fdc4JV$bmJl49wPLdpqu z)~{7_LiX7dOmY7m37R*u6*bxVCfc^-2V3J~eY~w6T-|k}z~VM-TJq5}c?4eM>|*e5 zfmubnPw&@HxCl@V2nWa=BZGBaQew#ND=P;z1N+fBmzv3zl?+UYw+^YZ5k$a5YP$#j zdn8c#cZ5Kk{;RIO5Ot>Zu7I=~rTQdO=j{Yjg!m9?C%p?G`~Y;#j4XZ>Kpgw1tZ5Tcb*|K@vt1IMIhN+PDm)H!*sc;kk53JZ!7al!+GZ zf@D&?_qv57Mjjbwim*IW!C>vgDhLk@Brj(3>mFz8jcVAsH>Ixw5a#)5qQ?|AnGsYw zg#GuovQI>0(o{fkL-OZm&*u=8k42+>Cf3_LzqXvl06?7_P8RLPj3HkQ`PHZ-ibk z^R84MoJWSyY2lA_EXNa)iiz-Bf|-0svZB?rvIYe~U@+v(gt^5&qAE>{;oX(I3WL0} zc?@2{Bqo zrEBw%FFR*2@xdPFyieYI(27MQeEcjTkx@NcrUOciduv{gRY#r>z^!8};1j>~!8Q2hdx>woq4~M`sguCkDreBnI!(}GW#SfLDlBBYqO6+uqwAN-FK^!z^SIhJ zalqXSL%Gms$015RG`D)^5Bp72>?FBzp!uhFCP$Tgu4#S_QrUL~&N?#T(&f`(C)610yT5O9u+Zvz4UEdtZKqH#{jG0in;w9y|u7pE`t=%p=2N5 z{#IxT1%s$u!;PPp!k)io3KQ(Am&e@1&uUpTw>x_6<=lGU4;mLfFs zI$m%*&v5lcq_zm1Cp?Sf09%s)N?I;u_8rPcTAgxfMHef_OPNM=+o(tXwhODmtD)su zH^bXEk>F9%ugL!Mwv4Kex@2Z~ofP!dlh1y`cfU@GqV)twp2NKXp~W8au9l9FEmhSn z9YGMrhJiKw2u2}uQB2e)JC(Elk~FKFaISR$2)gl*TnI#{4rxf%mD8}nM?KkNZ0qoS z;!29kfH1?-MO@Af0cJHa#ZRz{p0RIX(|VSDjEg(K&lBeVY4ux-W1F%S*jLP9fewzXt~}D3 z++{N%s5p6|k6LeI(s*ZpjWH#;OVS)wQFptBVE?>202$$ew+t8pvIn}nIL(uMwbc00 z$|+taX)<}oZuVwFjOioUB&kDzA$QAeR;Bf)1(SZoEg%2_y5l?aA9%x95;2(BAL!RN zw{I|=n=qO$pK9c8AmEw~Vc!{wiZWP#(ca!mdR}HhF?OeTT(1lZ+>Egdog&I?`mMYC z0WMU<%4h7<4lKOVPI#W_A~g*ehTvJ3Ec!q@FxL|Gaa~aGAW133NGz zZJUA&+9W0iK)Ml2Nv7yNR5L7)B*_zQ!i>~gUtWe$ab6r|27RmvW1*|y@hpcyqQ3ZNiCpwxxtERTIyiIZ(fJRLs3-q`E^*xAFxr|h9Hvi z%D%9i8X>X%8L=LS0|oX#-v;iGj!@ktT|eQ6ghfvlaZy~4XBh}YKBBZM%3`$W*|7=C zCnN!3s~Rs#X{&n{;0RjIulD+n4Z!CHO@b4ag?`4Fuldj61GtP6d3pT(BYY z{r=*%_nc91ow_071LY)NHBx`r)T`5B%KJ*bAaodW61GXpgEfIe7HvNmN_-dwucg{# z;>SF_+Fz$FA6m2{qi5-snchsB!+`}+0==Bz$VUy|OlAfp%37felbQUAORXdWW>cDz z!h+{(TzSLz0mY&k%~3={k&x8|BpH)K-WNz5aadhkwY#v`Ro?e)v(NVJ`9Vc=#nDtX z0KeLky^^P(&tW(V<+(5#X`XNAH=a3Jmqn?}20m!7NY#9uykXHx*5{0UwcP)`EV}+% zIH0@i;Bx41ZkPV5*!8>JjBf`gedaMZDIzB0rHxQ zTn0wIK*85_6g-(sL&2s9t202ZThLN?U;C#1 z{#JJG{b0SbKKv0i7Ih!M01Z2XdrML!fuYEMq5`=kSmYrZ7^bc-3>Oo7%&23fSr^uS znxfNq&{8LWl)i79%u$(jD0DtaO=kFgplk!pEoxafWkPJX)_Sm-f{EV#;IU`9a>ab}&> zF$JQDzqm?qU|Kth*9k3C_J>8x6`FNi{3#|0!rRK77H?4%m28c|2hat8gpKICi0#c^VKnTl(yq7idG2ZhMCm2CRzd8>zWji z=?6eV)EwnnJ8cyI8&6gVJm$eRfFPJh7orCaS; z@&OC_A=u?uC%ZWl(-&9hB>jnCAq5S_C3KPau#?AspJbqTLO@fVj7t#Ze4+4DJ&V$7 z;h8qH zG!0T8TbK<$j2u}24KV}}NK`4EBQ!|JB|(U>zzJKMeDll|pZuy{9q-IdhW5W6jo#vI zW6cYy01sG5kZI@1#l=oDN7r|B^W>lSxqg~uF1Ag?@j1t-CwQFw5^Sc&UbM!3odEkw zT>RTdGSfUJmG{-pFo>iLa(d8!96SK83?Q(z`y>@Go4=mYt1D7hz>EEc46*|%b=otJXU#U>(4vo!`G0M|%vak$qam!ldoZ$GAN{$xa3KKOA%|L0_& z`frhekX7*rTetQ*{_t+f1Lh$}d-)Lojq(?ikRE9d>qAr=_7*pTwjVQYIck^>+@|aB zKvQ-OCHp_W{D@zE-7Y~`#x@lb`?=1tQv!_1HQ}?pDa(nSdNbV>`ibo6F@F%nkCGP| zUOSX?1>E33h`)s|n7~sMm)%Pm`NY#aN!5FYo736ItXEvnQj>RPNIYqUgbLG5#}t(! z5IGKt``GR5eL$9hH6HcMh;d&!9=s@72bX7!j!&~2s5z2SI#OFL)UGEC0I8B~uY)B% zP%Kn{ti=^FdvbP7=a|Y+bK!>trouJqalUVC zb7$>o@&uwo%s+DR$N2%?N2tO3guqV;v)NvG9jNb$N&6iSN8-tDR!8eCSMO3tHc9#v z4bN{3{IJ`F6aeA^6aJ=})X~)gx;GN$=I5-E=BnQ4bZ+N59%&@j`5P5UXV!fI(P-Yn zAT`*`g=tRVu4=(g^Xv)x5n;hexfzG#gale?84+yK=(-JRRk%-^wy`! z#P{o{_{H8rNjWq@3(3s)kND-+{r)K7Mo#Ehvf|m}Xve%2&u9Np!dl7_-T*^l>Exg= zF^v2ih8OwJXN1_dlGOD+^hMMn4}lZm6OaB^8aQ(kwD0+(naWdyYxzE$1c_iK?jWNyzm1e{37} z|1Jn>$_-_7S`dxCCfr1WVNlW-^+OfCJ_2ECk+1t)E0`xpf1^>uQ~#}s#uac0+r3(A zL+mcioN0lgaDjL#fR41uq1Gc?fu2657LC~fQ$@BuaUsi@$@o*r$@@p~t_J(6>MnqC zo@W5=sla2Q%_A2AhoQGxbdO^{cpRmNy^&`Qcp4jVF2D=Qn~#5pEE@mH9{G?@s4!AlVm{>i!4iIMW$6`V?ao;TF zLQp+q!Jf>-ogT@{?$I696)hT}iK^nECU$ZqKK zoav?rZ>_IuB&BslNe;=73>{>~ib=S7@1)lty5vHp=E^oiXAqTtf^MPBL%K*0QNn^ovOObez4}Re9kWKR^;50*F)kM&n zBt6d|ZjwI@EM!3sR3#;-g8ET1 zpDennrGpmY-b_KLLw1>W56`R2H;WTUUeGU(pFQF&pAV7-4K z8yP(=WmZ6>E0+VVvODxgx9AsOm*tNP(ln=?Sc_%}cK{*@DOrN($n;dgN7p%e(pLFd?BXnbhH;BS0`{2U=X@wa zz+6V!6K9VZD6xeMiV(gow57zY#)>W>Uxe)RL{lK)Vll&T#E9>F?}*fh7iJW~JeA>z zRqYHIlxBe=K6~2CR*jibOtpp_+qYJ07C$loByxuY9BUB=Pp2do?|u!~qayAq@=FT zf4%ivRJ!^>hhB}bvd9>vr~W!DielLigv+P=Lp(T0OhQtA@<-X_5O19Q)Irq~gQsm6 z`}t!PYFj}X+)7;ujtkEw#6aV$6mEq@6QWey7~ew45y0@ zt2t#246Js0r|6OGFL6wr(aFTBPSc4e*xN8MRHMf5W^F)EdNHV*!~jU*9tJhzz5J0H z$5vY_T#LWJbJ6kA@L5bhr2bqV3~Iya5To@O?4KP6K^FNS9Xi4v)Laju`=R zxMil=PlgxEm9k<-FO6*d{6NIF!)RwIT|`;uPX&E~3K5 z)zOJ8K_>dZE98^h0P~U-SBm%tRd>cS9XAwk zH&SwCXNf@Ao3@V!4fw6U2BxxwV&pXOxxK;i)SlV_LU4M`ga%{v`1|SpBx*Eyj1 zdnSb5hmH635OIWQik!}n3JbhZHaIXuxmD|@^oVO4(>4VCF!CZsR^cb;fSRARUoR)n zV<>u1;(9Q*>Mrr)*XgDF{WOahFEAQNF?5l9M7*PcBVcks?!;}p4qwGPqx1V}&{eC?k4_*5{sv*(DkbuhUs3hg z1_Fk+CT1quFV`JzA6|0`!W`ryQ?b9o$EwhhG3^1$NGy-GL zJkY2~X^>gl^3DYobGfcmeA2P(>c9_`Z;va7$pLWil?OxllHI?aehLLNW}N0=!Sm~< z)}#B81sXCzE%oRLSomFM)}E>K^btKW7|Rg`4%a+^rdn=e^4Lkdh~Z4!oef*1a;(JD8GZ>&VK{6VE;>oN+lo8XRz232iJIS|rbnhxUNM@D-knleYZ7k|4Jp^)H*W3t}WW(2>DL@DgC?^))b~E}mTlMUO1mE5xgw`Lnn_xoI4B^`yw7 zL9u;i)9m-^~JDD;>PeBjpEDDNuHR-T?Gin};{9(>z z8v|uff6|=tW&8*Img0*5S+~(5+?YOny27Cu`DvuVRMTZ@H2?`alzV&7x#+Nt5m)fMdL<1^>VUvNgtACxN?`0E2u9H3w7BO!efOwu2}5&=EX;}mk^)y8%q{)zHFC! zTmm#P95%ZSBg`V^?K*s5!N^dmX=rgZfC+mu`Bt~l8-9t+rp9bvkutQzpr zAi5z@#e+f{BoBXkW!3|lJX!Lvhp<5IGv>4LGw#lzZr;j3&MEWO25Mi;RP##Ncu~~A z6TeD-w=JR>&bP2ID41wZa=E068N$>#|HCEV&ov+W9gaaoS^sP(_UzpTM6sFbu-$2RG-{l*u$SFaod1k)glnW&?Eqgf0l+W?cZUd^JCzFA zEoO;BfLmIlfx0I(>-`b4x}=;LA-rW-sdMc##dunhlU+?`C@&x5_xgcP5}XKJ*t`By zgJ;pD5blRDp((>)D{!=o`Up_aNRqwH+vk_5AJqQ%j0ZI7^T zTDt!X%upG zrcxi=XirT2Y&#Ga5VX;*A+=A6Q@9aSW(<19gjwy)hG2aNs3|^dQ?Y8okJ7+wmG{Bo z4d`@?P(4sMGuU)p6#NV7R6d|fRg`@W!{VZtW+SHzhOh35l+}hn>iK4@i>EjEjHyvb zGGXUc@@J{ipmH?h3Xz@j7(?{dzho~Y8C33viL zPJP|Sj0)m#Q8^AN*f7U(Ipfx@;$V4d(QAdOb<`=H_Q3R{r1exaWWugjScbU7YiyN4 z9pDp0OUwSwA4rn8B~W2KtZx{kO(zxiibMd8M91;ahXIiX2sy4Qf4?T@7*I{S)Ud%t zR}+FQ7#o*xR26*0-;8Upg?~G85x>Qy9U9 zniFN{>Hg%VW=sk_KlbvE(S#iORvRZmw5!;`#LIN3p9Z4c%fz=Y@7cuShVF(}Uw=MU zzYJ9NDbd<(i$7VOsM!P>)|wrHr{JGGczCU|A|8Y4^Q zMhJ9F@tYUl;vB1ya3yFXC>&c)SAzU;|0Eo{GRSsuGF#t1mM|+keQU}*Bnn}>Y{j3vD+Aq5*)iTp3~b1 z?n<(lCWkYzb-}ttUGv-lC@MJ|UoGR%HVvQGJk#Nr4P$D+q+(N!rZsm|o3?U=x6%`l z{$n2$|C5eLmC$NKy)uqv45XRkWl!srONN#JZH7C(>hwIYS>okXkB<<6g*FL8Xiu|^ zTe$s#G`jE|LkkxG4v+`Z3v6v}-q>1W1(S!*B7oc{h+Uz08`e19l_)zr`%tMj4B?B- z4Ixu2tE8|SEN$`awzUP+p-|9Zh|9!7x!DM#ZS)qAn_({kFl^H}dhn{GPNR?lG)ljZ z$(5yJWXyNFS`#?If?W!~hhlc}@5Qu^+;1Fy?CHZ5B}ofDxP2AgxVA--$v_WAS=61taz??6&-}AtX@ZHb&i1d*I@x<6DqG+&Dy54utJI?C% zgD=v!WHREzg-p<)GHTOIS36}WZqiv`8T`$}3y}7tQP~EisRx7gB+P8l?|_C*xF-)d z>)uZO+o%CRYtv;`K+#FPcvE0!uH5LjifwGzMC$wDxJOP3(cF!K)IKL)Psq5u8ZiUY zz?5x7@@ct$+V*{v2#Q)G;?gsGk7R;0pf-FKVB&SY0?wxNLH@<_&OKi^&Q*tiEQBsygWn_94Vw5f9HVut?8}{wh=Q)JS zAQW=}${Cdyc`UBx>5>_EW%_cXKxN|uY(5kxS3nuy7s3fR2mpU^lQjASbI$21KeL94 zkTFAyPyXtlQ2j#wLDcwNqigWUy?H1Se3{^v=3L%%cxci)fE^jv4>2sZXHuI3{=73# zq)Lyxs*o*A777dz)GpANWN*L2*~*=7I5X4eTEVF1b((JML3s%(FVdxIy)nj}Raq2M zG#H8OrKUQyODw3FI|a)+gQNSP+ z8PTc}60U zhEkz=Y$5g|9nF*M6{8JSHHM$3*ku$?17tylAy>bf(EWClT z`GK}6mE@qo9LdcOl+jOWH*AyhGoT_+O-_WXVH8q+9jSS6creUR(IJ?a$#)W|&I09Xd$JWS$n1aU#2y3r^gT`lY{CmF zW%c@Z(;5a$5aivChA9i=Rc!9sv8)-ST0y;GXaZJJbc1h3Qy736k+2pA`!KzQ? z)6T0=?uvA^T*>yT@>U`Z0Iszm4L;|*Qsc7MsfZRJe1i(PO9Rw4+BAR;N8R{T{rq4K ze&h5(kdQg0!GVVadO9$5w{nP#rqWgSJe-N5x6DK%w)Ak%gj#_J=fNDVYKe?}ijNVi zMvUN(ad}H~R>DXpvCeLFB{{(NyW9|HtC(}ki)G4s%0sS6kC0_nSuR5$Ll{vLkcw~u zqUS5hL3wv$prj0t(fZ@7Al7qIpzSc+4uL2qP`t8x8@@|;j}eURf)8e<^~MFSwDZ96 zk3bd;dqSr3u*H;xf}wF^U)?yUej(!^2=Bay6T_VQ zObm_*{{K9%+rXdZbK)xGj%~Mr{{YfVXurW(-XTFeRSalJk2IM^P^KVtP;%k)APr7o(;_Yl?toQQxrbD*YQcmF?}gf7k~M3k_I#?%?nK0A}TuCmX|s4Y>ttGd?>>qrnlnb(Qd@&px( zTZzf_x&p5bfSIO&?PjxqybTDS%ktC^A_juakAt&m0U6AwK}hMB9i%#AwV|ewwtyWa zJMIc0x$tR_2sbGW+p8kxG@4@*C!aiGNj-45HUn(+4gv{Jnq+M_KTf1f1lsj1ln12o zf2Ndweko5?i^>eoBqSeh01g!z@br1_Ak9vViXGjpRy(&Qvf+mM^HKiDC4mmhd7L+s zF{Tvcj+{E0XV_RXL(~%9gEYXS`E!N^(FX{s7)I?DJYNU;&M^K&b)BdZNy5!Pk*TN} zsazWCaPsLu_AFurW*2;cGm^k&$vS{z@R!|Mf*VkKBoDp>du4usQ@oAj8Ydqby)<21 zYD9OZ8vXK`M(Um@+vJ5a7>hPM8`0QRrX}3gj(Kpn7g_}$NH%*tk-adoobZG#( z6+3d^A!j``+_q=IGkM6O}Q{!Vq1IeIZAk`|rTM z=uT1U&Ix=(mYhceVK>3GW>*b@DfTVzO&(UzSm*Xo#i>PLoYWl4I+KLSeLRg|edpKUGyAlOfX`C!81JWLh8xxR*dJV$(O4|Su$n*3$>tLIumYQ z*%>!*rl+RgI604A=W&Q89>pTPp}y}IYmNzvlrnd^IO!TyPu7}UzprU|xjg>l>BW5U zN}iV$d{Dif>*d^lYX+48wrGE{f!Oab55gmn7FhlnS_JLx; z#7?KE9LE$h6Uyq}C2I*i#e^1$F==R8v8HiSdV@x5ICECs>vH3K@?v5+`lcsi>N_RdjW@c=%!X_T4xaFRMKxJci*6 zMKBJ0JFCqso?f+c4>vrHsLUPxqmgKO{JJKZCK_0tO3@Rc_2$P7ONR|6t-?9CYbboF zpUu#~>j4@XvZs6OGQrs?o?L=^pemRW^qg|4oNj@t#A;JXoBICQIY@11w5K*n4s5bA zqPYnfe1Y>j9j_~5IK_Z(&Im0JAqGcMueW{~t}qO9H@OdjQH#zab!xrJhl& zHZU7l0iOW{;Yxc>;rwTo{mScycfu{zRf&lhVD?LEpRrEF(5PsYXIc<762jTazepZ3 z&Pt3;Y(~?_`cetJQXTVF8=?L6f4_tU5hkBuOdQVq=m8V-ypZuHFJ}W4aiPpM?kV=H1gnUG* zg26@IhmIubS*=hf)ILw$Rnz78sOT^b(}wW$L3|_zX`gsKAAoE$3Luchb4MaDs4Pad zqE-G#J}013x@L!D-Ox}^7jp?SkAVF6ktg>2nw;S|gq+m#+u0v!il612*~Ikii+Ap4 za)7u?qVqZ4MQL!8B3l|-yGK_j1>$nULx3+=9G4uPv-TovrpsymPhD>2N za)(qvY*IDnD}>kJz`zjsikIW|Q(C>-(U6N5iJ3~#-fA)iamSEfZ{#Zw>zyZ#EGa87 z5yw~EG+KN3!VJ&NDiDu%4aJK7>4Oy*6!PvOLjbe93jJ~%n*e?l6^Ys1K&d}C7#W0D z5BnobW2%?eM?q^!6+F7$%I_bsfzYIp5ftbU4)N8{XEk8kfeR2GQXQj*Cu&N;P^UT8qMNh?-9#)Gr@|Xs6W|K(K4Zvx*>%l4x#vFsittKx719?8lll|jqj)BJk z6GYb&!lT79h9k-6iCuG^$ec1JQqh2TeEIrh2`taAg^}DQwHLu~#bPf<%jC^psN~u7=^q`zVKdVV0M6U;t3r2-(jek=y%$YFda8_t@c8NL~o~w%m z5t;^_wArhr{EL1Yvq1)fy8u8yzrU4}qfsExkgM`7_Y8AVER>rwfT$ViqvS-pT$f+u zpoT}9m=8b_ADwl+Ma1gyg{M~y&ZJcSN2-rF(W+Tmt=ESpOtW+-ZR<5$EF`}$-NG5c zqlxj2&!qhn|6U2A9%O*voRg}!3=gQRb4k6vR}s_UR|tdE%h*DICS8DwbFH`t$M*KDp1Z{CRW%pr0&s&j$EQ|MLQ zLdk?LL&=07^W&q?mP(eKMX_Ge6iiH*B-iR89r~dnhF^Y$lla8qUBi`#5jxVSYaj>T zsuDghbhm$f7^r<2HV|>jLAjG^vGu0K(tD=1`7HVXq~#B76eFM5y06YQEQ?@@Ey@Iba02%LQgp9;5zXoZyYFHBn|#`yj! zqfh3=8%~LSyKHCcl_xxldAY1D0iBc&3Z`psAB;`PAci3(r^Z8(i6PhY72Akj4v#=o z=@tc=RGb8r$a)0Ea7qXSl=gN;e?U>4gLP~uBZuNi*6~sjlIMj%;Msr>X+|WYJPhX> z()?)$oeg6na6++>inWq;Vw7k4I(kM4b1dw!2SO(!cvG2CH$p=&QZ`&hPMgL=a`;C_ z7M?Yc%-SvpIv5_}UTrN8q$8=Ms@5V#vrKe!NpTWWqvNKg3{e>NW*-2s55D2f4S4B6 z?7)@SK0{I2bx<70$j|5su~4C24K6rEXby+k6TW*+ir}WDA8SOCAz7 z9QJ-G;u$A|tW0OyjVfLwRLm6PtU4lS8U%ZUIK~7GI+7n}>&~wWJ zRI=Ua(1G$*Apv3-Z-i*F#F-Fug>!CDu_kC!bLwpB>5KsAsrk)_=!FAM*4*H!$IA!$ z`P-Uf7uQcr*Yzj8Dc5^bRMgB7(wWJI;y5}|i$$5z!J_ZS7o25PD-AQAHa0SVC$o#> zcTHC7>2x=c#$Ht2%M?LqA9Ur<3ut6#>MGSi8;D)hs)OfVtJ8%+&=mPGid)g(H)1KG zU7aA)v^Kb&IU3gD8B=^txNN6A{Ek!o0AnD9PV*Ae#bAOq+nD~)?4F&ihEjR%+DVbd z6gm2M)36qZ=omlNiv>>J1Cad{>p=`PXq@IOnFgPkeS$Gc*J#8!%V728 z)m>KV2TGUAxKo>2SlVs6h{%*ZNu_TW76xZU!N>_0|Rbd<_6o0SgN0`|#KuPndVG0BNp z!zawPL9TXm?ZY=)r(K2khaHp;TL{L$3VXOu#6XNl-f8r>V!k(X`+zlmxg35fu}&JV zZKh=Ms&Jn%g|Rvw67A4g6_Ln>W&(|112)`mksum*Pvv&vjyD7vR1{B28#+C&(izaf zAu`me%x~JHxmSU#q2U@S-p)X2VnZ5AASvssW``K`f<6}6`7k0A&2K!ZjQH6YUzv^# zlf-bP^pV#+)LSpxS4}!YB)eyry9r+Nn!=Wu68daKSyRw|+?=gwEE#TOFbn!ZVu?q93hFl}%phGS*YaA~llnsR(a9oXOxd z2*#{~aB+`L1;xUq2R&-^xQ0Q(i+Y219}wUzOZpw2B0h^E2Y$jsExFkyYX=7(EWwEG ziTT4oS7!tk4uS+{8TzMNMFI4{fZ`w9ozFW7?#8=OePX4`RPZ?i^&5T@QmjwV>*F^s z-p%ukYI+98lm`qWBtGhIepQNT>nrm~@k?J)% zG(B({cWqcEz_PIPFfO0%#hMP2G+xIgN(H1|_WE^KyeMBNDzLm$qLA6CK&ZiI2)NEG z8tA3;B99xgQc>1B8=~md|1gz#Z|}pDm)v{piLYJ=OpYkr>!)eipmRA>XrteQTPjUJ zb`>e}2BmyIs4`DWbiVZmsyOCIl@D2g~1jBMh;5* zg|p7Hdecz!?iQgSG=o@e|D~zjNM?R;WwSaTMzgStAB^oVmBqM%=-uuUaJ`S;$c~!k z_>tUbw{cfO=!yOLKhv2kmx}*9gq$~ngAXc#qQN?dV2V?J*{^5b&}Jn9M~Ll-ax{ z{#=8w-(eKgG@>nI&c}S}7No&_gCPuFDEB#-8k&Mo(}O&$oUzo0yCx>1{Ga9Dw^b1vJ6hI18~$aD>tBEuo_ zH=-H7&|q+OvXi^ZsBqWqDm-(GnL$5Ef<%IoV~L=Z0T5i+NBRWNhnoe0g; zg3yec3Px6?v;jild$(&~*%P*U-(rCr>P3#gkKu6}Y2o+n}V#(KDC6lieM{x`aYg4j;3 zzib&h40_&ZWff)T&xroAL)YX{J+dM5xmVq6e{H%09;9XGyhzgN=>b zHBh9SaLL6KjOtQ*C7)GwrnUrhDaJT2l76q|F&!@+%Q<3FYwh}gh+x2IMStnslqMO-YCKGVNCTG8pW|fK@CXu#9Y%v|pZ6eUNocCM{%UKe#y*MJp)>SWHKMfG@_B1E*7|6G&t* zhJ1&X?Gin~cjKobOA}N5SRt%1@*1BACh)?;Jm7 zKRFruNVT@zC4#2%3pk`y&1CC7?i}WL?d}tW846ZZmlu`l>2P<|D)~>4rrN)dL(m`> z5O+@fHb_fI;D3vMV zg=&+a3WFB~Z1?bBR4${anXW~YBUB|~fNs<;?8aP7`JyIIRlo4T;T)Y!n$%U0&bx%` zA8KS=(;Rk3JOWZ^#5v9oo^*}}`rhrrQH~^{H5f-$JWLp>^@-U05ajNM^T z1B8pR$jPnwDDEMG+Ka1DIhMt}N8tAjHPiRrK;8hz7Yr=x6?B~WsCf0-Z>=i~p4&Vc za*7(Kn*5*P#Mo6;HjPIw7l`K}3d3k$MO`{31|0Q~Ziqmrk}hj*hMDZtsPPz(!px{Z z9ilM7jBW_73L$>&?DjwS;_$t&fp()7a_ev^&zE6w<~KpV?2!T!@^&bu#U0uhK`Npy zhg5g6Hduqkyc$tjFG}eWC$6IU&5L*DM6tMqN!ZJlf%p8%S$rxLtd=(xi>@(c>Zw*d zStK$#RDKl{1se&-C&!gb!7iK8!jo2^k9_%OXJQnsOX!k(gGj$%wU?6X2f36M@fwUG*IFpl-L>MuB8Q zEs-r)Cu2WMWJq|RXvp_rQYST8GGL7oUK)Y)py8??5Com%DY8McW+5*-fTT_jBRmxE zNav(-Ij!|=cj9l}s`)e;5{t6D-J)$7<0nEOv3s*g%?muNAS6dDL0jcqYP4Oa+_idM z5)@9wH62VW3OsY{M9bmk5N<^o<=2O=h#N3;2YIwf8ZLqr@>FqeW~O$K)4=~71gG38 zJTV7|smr9{3=ii44iDM;k--(`-upMkpzNZi@GjYZdfm?OR7%6#9>A0G%`-Lz!--mC z^(4*gxq^D-NC!?18rd0bps6lK_}9w@|LQ1E|3c0{=y}-E(5B~_DhkiIupgeSs(_;xDV@!USOHYCJucm>YTX`&wV zD2=y^Zlf+?C5Cre1qhV1|;;wo()4F2a%&iwJ?v%Nb%H-Kj7al^<2_Zk))U&Bs zU`Vjn-G@9Wx{|ay(=U47=O;Zg=ya4NZ4O}J1^_H`F(|Qyj3@%z<)6Y9#s3>OhI4H? zG7MPoI#czgo3L6MV_#+hFyNd|vZE~}5_%Oy7*$xivK?7IsGjanoHX`Tg^8}C&T6(v z_lytTXF(t&F3_l|n(RIf3rKDFrwj$}?;w!gUv}#~jtUS{tjRGip57tG6HP-@by7W< zBJu;&GPz%w3()UWI$6{8yS;ErQBI%+?Yigi3lizj8i_{#N+|bqr3*oTXDS=E+{hj3 zQTYg{IB^adMr_|Nl@2IkfUf))3bBqUTBw-C>H@EkREtlLHF^XWp@Y|OON$zZlxOup z{J{9=?V6vVk8#O~4^=% z$LM$0sJ9$uo4#Nl%LBP^M8GOq{_5t^WFAQ!^~Ngejk)w!_Xg@;${Psv9nCEho?9v+ z>7NDQAJi+SHxbb&bv675XQ-PwVx@0pL!}hoM?~w@3D+Zd)e>+|=4?&~D!zH~&Cj!* z&X1EOncwsCPdY27LghqiZ!$T+8QYBlsJPz(avg%m5OaIR6dWQ3_ss_dlZFxEd&`i) z@$X3kcFL77z{mzCF^quS$P5-9j+)3G&x0o8L=T~`48O1e6Hu-4=}qaSl9h=z+!*`v zra??W;8dF@kMn|)Le{NXtXg0-MmxbTGY#$Hz#qXVwH0OylR#!SW_yAo2sskeAU+0w zJ&O}8u726wh;Sp|tSnZCN$JR(g?Fq3@4BVtpD?eyURBI3xq}FKuw@2t01T7w?x!TE zMo}+6s3?Z#Gvc}+hBI|rJwmc(fZKoxt}14xWOloJ?v$%DzRH)Pf<9l$1Gkgps!Z@G zSvC9g9N(b3Fr3{p5mod!XRLNC6BO5(&>F{vaCtsz*LuUP7Ll)GN*`S3hX$GSMk0Hx z21m^Ym;=|_9Ez~HifY$WtdnbMmOV5h!I4moeg@N1@kmt(x%4-Dcm0^XucvyX26h*e#^ zsp6(^;}14%VU>gSf*Oq~8Oh}B@&H)DR=BCrijkh*eseD>3DeA%UE%XjIyV;NVmuJM z4uV?&Omcbi0Mmf|mj??KK`2;(S^-@$AlcGzSL%gn}fHDd$J;?T9 zH)Shz6Q49&r*Dl;Q{hFem(v6;qt$pr&N9RwLOF5X>faU3!L4%On3SSfU{*k(p=D^U zAc)nGBoz$63*^5 zoLU=Ak6W`u9chd2VfzxDvf)57o$peB)uywR&}Z#90X0eOwRNr8<34%E~j+4`G;=rizm$h zAS#C?c)VRaGa3?X9>Zdpdk|gNi$yg9jDim^fVdpi2l7b>A;G}ILc%Jy z!-(>+dxkpR$fPHSD=vcwM3n@YvMK)&x>x^;YvIt2q^o2gx?MAj%(4#T-NXr_%TNR!->UJjoFyDxc5B%dqW)%@R2{qk`#D&%Ep$92meh_AvqbNYaief zbFSc|95bJ9AD>CPfZNs_Fg`VC53kxWMR%%0ieF=kp+Ij(7M)^a9=FF^okfJvTjY1oVltQynMGU!6F3KQ|1+lSp4ZZr!_vls46atnM1pr15xJ&2jOFdz=In*a z^zwZV%CGk90LwOkv5b*Ga^VuW2f$;OFpDTdq~#SERJI6pMhs-YrTB=;plEnF59X*w zTjt{2ZD+%S%bJ#8gKcsa2=;jR02VT45O(%U5&pdB=fQ(lQpSY(k|Z@9zf5$ZemsHA zf`AQo4N^z~LGMKe&eNL+4HG;uFlofe+QKMYM17atJu)juobP;KM(@B1jQOoZV4MZ& ziuaX$gm8L*!Fp`|K9GfcQp0WD2rA1E5^A$0*Mrn}4%m5%WA@TW%ee5br){YJ453w& z4oTfH{S=i>tkwrLoR)M@9pBA|9t2cqbJd3JOioxO%(6glT96 zn%yWmPXB^0f;<3RIh9KG)Y^gX(HP^-JKWO+4j7L%8puy6Hquc0d$YR5^BrNhx~_Eh z%paKUz-cYcV*>&iU5CpKQjoha6!Ud3fLj(u14DNMdDOrHH+Lsa6J3Wbqxv@*Lm75Q z(5u8q*y^7(smTH(4y($cM35CwJxJ>9Qkgl7M%m+ydd2vGGbvVlc4I?zXwui=Hsj{$ z4Ely9k`HUF;5?jf0sf&^peyAZux!1IdYGIe9&pDPd9L8%QO{hdL}>=F`MzTFc69p)%_LT&)ZP}CKcg+*EYSe5yJsGKDL%SX|fYrf7^g!{n!ST3X zg_5T$Y5{a6Y2fAMuctmRk@BaweoUQ#@IjE>dwzs5sdFRqTW7*NulvdW?@yVZa&FM} za&TUg6L{_Q?kV{y;R6O@SLZDcZ78b8M?RS@^oDka+g?sO|D&YTo70#;4!;*0fwKY- zh(^`(E#$Cx?^!ssikD+L4~LBjR1T+B#-HoJP=sKh7+pD~opVIHe^HsqM`4C=X22RO zLLt+Ue!9su=|yKmR`g)eror+7Q&_KUyUq_!7k;ZHntFa>&w9CpGhU(ho^(EX9x6$F zW9~JTbU2W;5R+Wc_@slZ5l{V=x%dF(S>ow6yi0ti(w)mzX?zm_$;|P)r?O%UU7;2x zk8_0$n&6r^)%<;SD=u%?&z|ns@$17u<4c(Y5!-fZ-`@HpQmKIJGTM#zNJO4aSG&26 zqw{^*&qP|0JN(w44mkWsFs928tb$P>p!$G08&?AlGI_;1_WRcDU}DNe9yKQHn-@Pv zzj@b0Xk5SC{|aY#WGu~KgQm=A#Hy%sj1UuWq*GAaDk0|UxaKqsZMD%1(};<#W->In zsSordRd|DGVoVyC8yu6~&Q%m=dVO)u|h#4MPrfwr3wOTt~U<18^8MdDI}nU6P$b!rg607w$jaRV)xZ2)}x z*c5C~$9pYlgHNi5YCO*w!Zh;w`E$46skH@Ej zqHyT}Xj-`XDFCFfG#fq!<2OZ(y~^q;dXB=*efRuh{7|F$2mCdyALdlt?N@Pu{tBve z(2S*sC-hQ&R8j=J*sf9|;?m-+&TmF#*Z>GRP^g zl_qw%I|pSo0Skz=-Oz);se(1q#ewD#lM;N3#^4cPtW4=1oO+8*7u)?JwzGLBM4~Fc zvp2a?lH6k9@W#jB2X{{A>?-UJKf8^J+=<`&3WEx zQlJ@2{cw@9$ruOd4;SelJ~vx3>(noO0Fza1R$_a&Y~h)K)|oxymfY`{^QaLM^$w7_ z{y~8%7vf0=KT)##yZrS{g2tDj1;NPG;5pos`rRc+`8qIf_^Z1CT2s3~M&Og$ggk8U z+2cwyf#CHFaC0LQsYjZL1IG-K0R`06-lSCR%-x;Lwgq!zsKAIilcC^)=Kw7jD_3(k zNb-QkIIZ?iLA zm<8i*X5bTfsQ7M6EhW9E)k%tPWMb#tMo*EM!ATdc7zhSWr~b2fH2l^%{hQ+ z)Bqq1D^V&oOnyrmw=e(a_enyXG7g7K}MagRFk{b7sN^t<{m+%w&T=12#(h z=EX*{u_mfR)q!1OImGZCsj)kfuu1d|mxXXEq(LpMgSp~JA;}o<$!AKC`YYmk*+Gtl4Lf_N~VX0$3>k_0g zA&gkY>5kzC29{q@2P}};Zs!H#AtHsX9e#mTXXr*T{YoX z)E9n{TJEEKvH>t+$u!QiJ`YKNF9O-;(ux-V6s({%b0NDhirG9}^yRig`&7!U&3>8) z*ce2U3Qv-wy*k9$Gu^%9TH0Pt<;KSb42FqUw3N4JN_CcS8TMKQL`fNX7aumm?_%sh z-{L-tDzeh(JGZrAun|tHoyk8aFG*Fi_sir^jDO+>ti~$m%6NDwZJ5T6x|z=e&@njAHxp1>|_A zmtaC#Jzo75FXj~KHyiDISFz1jJ)ei4kb3qsp+w6;W^GBAeov#`O0y}EH6xr)oEdI1 zq(S%n#MEqfrixq4kIZQygQtPw>pkYSo~Yg1LzT~*LSE8>`P^hA2yJGk`v=HxC}-A% zGMKDy>di@!vV3#f&T43(X2{Joa7D%TOf#TfBJYH-uf_U8t6;)}sf; zH#FGHVqA6s?#x_={L4#;LEWHZ-fj>Mv=+pN(xx~a6}+0mEh_`XcxXfImqDM-dV+(! zQq-vVy3>W(XGqYJk$j4re+U?`T@Axs8R+pylT1EzAnzU!84Btp@`q76v?jCh1(anK zJo4HatxmlGlqpsEMWRCnu7;L2=u9@7@VM2F`1Kki>i%q z_sLjcs7D6Q4H8YTj_!gy^CjHEIAC0uH!wRA+*V}Sk>km zV-22k%^L2zK$;Fp~Vbtv`BL)T5NE`(#Q2R9i!bAgqMYe&9Za0nn$hUIS0 zodFFFsAue?k%igYNd;z;XO+UXg1TkAAI3bIzj;w-AcS%E!Zk7?H~L5JvvDcJDQt1P zI;q@lF+{h2xdOiU@mOR6ijaxuNd{_~hd$&oIRsry?k{8y6Cjdh(HF@yv|uH)YVJEw zwQ5ILaH;a;j|#J74JkMC&i8Sx?*&Cq5BQA2qDdsvB~~{T<7Q+hUXQN~l{U2VlSd~r zOzP)xg|*`bO??Q3$QFibj?+ptxXpD|H-`lKR3uEJ1aRj{Dok8cPlOr zVa=g7CZ197KE?}s9~w!_4NOYbCskvVd~F3TH#j)qv@CKpGglenG>`LbI)I(x!`fFT zX@l?eP_s3SkeeQnznq>3{|5Zi_Ceam(@SRAOG;0?+@Pykoy%iKzgIjxMO(do<<6c; zm4v5n`!fV)gz3xhf{OYS0w}0W=KVZ_jLQeF_fZ)4--PO0j)HuTL{y?KL^RAi@^}}C z$V?6AN%YPp1&F9p8YW!D9Smsi^;${BSb6?==X{5Xq9W$`w+F3~>%cLPL>?38U; zTT%uyz*r6DJI_rwS&3v^3(JKCLuJ;$WPv3&JKQ0&d_Af}oCgy$U21!>SP0~YKK4Eo)Q3bpKRlXsU45PC;2Lg+JrtBee8z{w@9}hb* zs?4bk^S`@W%cE}q3QcE3{B=;EW9H>*mLvA|ppZ9KpzSowR&C<*&fG;KY1`$X z^Fe%9(SD(w{14k>P@XVwe$*mJ@28{)N}l|@WVY{8H0wT!4-Kz~5im>*wWkp9gBJXX z)RQY;o^k7GAZ%C&b7{<*0Xp1hQ!WPDD=iy+pMz3r#sUSURU=%VmA2NdN^I)SlowaO zKR@&H*i#pb$Gitj19OC1c2=Q!A-8I}_)J8v6$Sn$jcGam2(mk>8;{W_IwvUVgX`%i zMf3F3M(F`qWbMFPTq39g0F$RDQwG~r9+oLtwe^H?r=89OiwcAj) zs4pas<_f*1#0f?OcadXK*%#aje-s4*CHm?I(+m6ktY#+L*QhN`L3lS)@RaigA|-CLxLB|-$aRHoe@F-j54DI zzH=2pp1~f&e0!Q|?IFcSu-22GgWnI9SZW|^DtS4xrGkbYQ5>7Vswlw3x4W4Jle#Ps zu@`-NV}%D*r8~VCH5yu!$^FUHwG-N|97{Hg#ZeDo6T~W$evvK3e#3FW3O|4^!(T@VPJ=F9t#uot_$1C&zHm$ji*KiaH38 zspO*JH@oO`-caun#z_`+MHLPQxM{G2oH~HrO+>>v5&6 z0;|xWP(-?(m70ROB-?|g;>YKXR3L}?&`@x^14S8@1mwi^M28lwz*22CwTYGBfNJqH z@^!>p4W-o5Wx&b8^zb$=-09py z>ic4Ja7O1GFvAnxE4F0Nr^sc#QmeCuu*8cdROxUSu(O8lp3!XyoJRiqfX{{D4C59k z&B^8pX_C|C%yPsA)bc8^vitvO7oB!wRYjuxLM>jH6BRW|cDl6pONy(-N14iminAQ$ zouRGrVkN7wtT$rJh;7otpn(GtbG7iua%bcpSomAIYEw*$S@XsI>W_$23+b)O{myTk z$??`;3L73iSd>JC&2TB(;bEtzd{wlP+Rr{rq?r(6M#Nb=`85PD$>y`3TEG|5+9g-V zFamOC2Mdr@#St18ipH<*7WB3b`W<#bK$JK&$$^aO=Vli~02R^91vB8s*{0FqNRF6K zDM;ik9BG}%Sfe=-7fC98Vrg%dZB*ktEOhER>zOX_O&`ra6Sh%C zM_7H-0EN7t4fkc^sID52Vw)e!;42I+5!l)zB?^NadUr2u>I2BW%fUm#pWY>->Z6&Q z7!mk)Pikt-x#-y;kn1x^Nzr4G&|czHNg$Z1I>IeYnc#XaegzzqqK?PUeM6w1f19gW(}UXK<}n?xYgiUtsnGPu|@#v zOls@Xx6$k#g-%)Nh)nWRbJH}xeViVJO>OWxa zjQLw_O7IHz{CM!L!EcF{@;2UYAQBp`2>$X;Cja!e=k=luB=i{Ls^a3HT`E!Jrum~Q z=YS%-$uJPc?+wi=_ECOg($G2a*=&-@I?8I?H(h;H=&E(o$G`_J@)jqGOZMXL#~ ziR{#|9ESPk7o*h`gA-b+D}rf)^d=35&BcpGRiXZFhGeM`XhK#7y6$*?1XAEskCP@s>bQF?X2^(H14FF+p*9GreKEucS`-=58D|a8`2q38!=`!os+9Xx zm6|%g@svjuf~p0LC-xC9MOYdN1%EXoWTu3zS--9d=!%@?4m&ei!)d8m*;n9IMu@3c zf|m;!&In+mhi%Etf6L9M^S1^N+@qonMt#GW#v4XhGOa2 z3Py^>&^7BVSpcCdA3|4v>o7c`2kPwv`e73CYx-~Azto?di}BHe8b6>Fe;gQ*<&b9?_3F3}&^3WPotlSR9i$n3 z0FdMK8hmb=-u~^0rBTqe8xxv!1E0N7m8o-)MiGKtt`t1vn711RB&5M%8D4DN`=?s|-!4}I8${H!0F!-7}GP(gThGg|-Lvq+pmbgkKDmx&`hBi zSC6{xE<@ytkEqqe@X9%>qOAMNb-wY{74kkWRB-@L=&BFZ!%1VYx|2Qvj*tmUDaY!V z(!p`XE5OO_Z(ioFKNAaI%q@ry3`&m*;hvp=`;F4k2yeL$#SjKe42%cUlJi(g;a{Rg z{Q>|MrAxmpgLrE@j;E0St*v3#;8~ih&5%$4LUN?7Fy0P800RMx4ou+$0La*d6svJD zCjeJYKeu5mF1QSW3Vcf@I>!MpbZ68;{==C;(?f`Nw5Ge?j#PpnuwbSW^K>f zP?4~!y&0b{orAFC+-clEAXni9GdW4Q>2U#GY;lL6vnqOSlb_{H?XJm>O6fu|6B*hA zncMkQ@LI^(fP8d?wo;i*+TBF^q;lTD@kS+CeCd^NI;o=4O)WYIwd{Lp3R`;ap^ilc zsxXfkfG~{1hPz`Yh)yWNan-)8k0(uO$JEb$B5Gkdpm^HnHG{ALSRzvfpR9wH&dNda zxvj;6!GQlaI&XuYC?v3zReOB9#hATg$gTRdZ$fAC!EKM*0Hcj>-tW*8l!w=(2C&YV z!W@nWaVmGir{&zzu|MbWaQmhV@pDoL)hXO0@D+8kwObRXg-IFRW?{)F111JDJF`fX zUmt;e(Lku~EqOzhhB0|IiS*NJ=LE+|!=(Jy(v=Hjy+EAuIv?J2RBq`-ogX;dsMf?l zOf*Mu%H+-ZJB~q|{0M|8Rc|tRw)rE<=sp$$e+5uH_3(aN1iZqyR?HUWsS0X(7m@U6 zH6EdXUEOYj`#2M?ezI$tU*#ZT&~q9I49=ouQ)I1UO&3p98jy#kt9pVOMEgG;j15N4 zSazYwa!xQx4lKOeWvBN(q7tPE4owKyY>tE*GZv6prTGR2p_bLOVLP5!34A2#L*0g> zs1&}#=pR0Fo3w=pm)UdHLlWC~YCpSSJ#ZmV*`>U84On5yzkffqAAm4|lHi%q5Gs{l5flim+FGZE?q!;`1EZd5D zx=mOU_$ZS>{^<+pCgG)?Z(Z{}QuKRi@UF|O*p;4CZ}P)3G=&zTh0h;}(X{7vjpv32 zVD|8^|K_nPZS6r~etPRHYl)q8bGBk2CT9*YF7BC0W_*NOba^1u>D0~#Mdu8fNI+^% zcKZ{6Lg7mp22p!+f3&4X90qPYwhF?}PbYM9L_ntzRLQa9{$>GLrPMbP0L zLM7%=O;j&3sXCLW0immTsRqFW3aLRR`h5G8we3R1tH7JJqrmY&l@oPJCd#eq;R~9U zgG+vKNg`^i6z7u@M=Gm;eVef_ah1g;naZ)ck{rwUt{OfUmqX;65P6aPX`FU|Bw!*b z5}s%pj>-y9q&^F?SH;E*oJ z&IDgHRX3XGnE5_=&%r=>t`=q(%m#|Pp=1rT!U5k+v@vyMS`mm2^GA={B0Tt1FRuam zO#11`OL&ID^nK(3T7QkUD4m)jGuFoC5+?zsXYMD1Ws?F3nTq^#T6rX3T=Mb=@|_@r z(Hv?Yp!9GzPs}P%!Ib&IqeEvb_r$r*HV`9%gMHZ??s~3ZU!PQexWg%@AyPlI>Vm3``sD=E=<;5%| z%F*JcH_UB;&@v1xW1!+Qj@jfRLIc9;IUe^xOGet)q17a>I6yOiyi&vzp4b-Nde}UY7t1t0p5>T%AfO}hgpZG+SyA7@9lgThIp5{erdyO3 zr@C6kX0=mvpZ`LwH@u$7>MJmjAyr(f4$UMYmbXw16n^Nxkr0x=)AQ3bw2Z+$E z4A7OUvkS5Xb2kWTxK))El01(bszp@@$;0S7qjg-zuN%3Y!M)(oo;1`EHxg!7{Mf>H z=gcJcwD{5$)WCkfU#3`muAs)p#RDqP9N}Fwnx_ntRRKeRtJ#iDnjlau{JIPy=1r16 z=6gjCZdUIascMFe1o2M9t^g+IWVS~W6#y28NZb59pD;?4Q&(Ctw-IEj3t2C?`+p@r zUT0x&z|G@>d}l^V@+$c$Ph2U#z3Z}yMwmgtd|dAtKRxgC;~q+I@eD#TW`~ISTrw>HSn(2+(oQvf_P`itKyOB* z?avT;HUTNMdHq7x+EDD*v~OAcsWloadmSR%U{b65Do`!=0-9gQs%+GIjEHKT-4LiVv$LIES{Am_Fmd$vh& zv{b!OG4pd!xRRzbp2Yo>fI-y-f=k8A#z;z=4s6QTDS#k$TY*t=YS&u2wqzn<}ue(z0ySgoHy9r=TB1GaT1W9kw^XLU0G#4OiS zP(UKw)o8G!C%W|H6+X5F7x&1mDHFTUt|7Y!-xwZSj)B6q<>3$X!u^G<9#P>oM{y{e zu_47S!-mYb^pSWL9x^OAd_zs?FRhk-Z^rCR^T%ydp-IG}%ZVcpy0F?{qHMOpSuM5l zt%l24ov9SEHVz6NMtGH|hma+XsOQez@UWUFJNA0W^-e{z>1y zOy|jmif&Tm)NVcH5y1zSM`RsXAdZ`aB{JB2J3O0fXZoN5W9S0)sPj@hXT!zAo48D- zs2YRN{$#_k-_8+g0DCkv5!bB8!A1l-SxEQ{*L$wKa*Q(`tTbP5EI=9)Fmz$?QQyU? zLTM-Ku=@m(Bua?boMdKi)6}>X^FrY3>?#dXA)DgA=A({V0~Py#^K*iToy1Ni3a}|{ zOvG(U*%8gK0l}y2n50>!XW)VC7L0|JoMZovs5z!W$RKR#JvS8D>xl+T$8UP|?N60D4ippWKvl_@5Voh^*o!Q%+W;rL! z+!9Z{VM;l_DDEt2q?(;qF}A$VLj7CT&3$_t7 zMvRHa#m}JhK?go=Y32$wp^d!qxT+FWD_I?mBUDXcnRFMsn2G>KK)Js=oS;%2L#B^1 z61X@KDskD`=VD+#$mEQ!UBpe0Im^T_#KjCut`y_AOqn=x^rg6btd(V}!B>7gGYvxA zG;jklH*X3jYJRMVCimyUy#_t&#m*h?&=WO9ny_4CQ0C%=2Z_fMVOYVew}jKOp^#1* z>|#Di&pXXRVlq~Lw20Mq!`p3les>}U?$Pq%um_K58cn?E=2eTv zv01a14XPmE){u(HCt1ukWuxTFs)59n{IrBrDoy#zl0DTh2%uZY`$z_qqi&xIA3-VZK=%Rwd2y?f~!J zTC$;M40}$;tWQVL^WUm3J)CsLsd47Y*}fCToC(7UWTQp)t~EHp2m6(%cpTGl!|uRQgQQnQaUVsfTlulg7z8 zbTCmZ0Fs}$07^hE;0?AmG+T^RlbR(#9wl4KPipyO;H^yN>@~zN zNF&@Wc1)*H_|OnMWKq$8E!+!ofRu|@RJpUUXw4qV1yL7fln-pUegLSD9t_L0e!I2w z2Gza$!99vj2gbJsq4ajYM>$jm&}`3l>=A>?j>NQ{VTm`NPBm_!HRG?JH}BKms>cz7 z^l*2_Z7_a{dQH0yMO|VwD!TgQp5eUqeGj%p%PPQ9Q%0*VAWfjj(k+)?pMbdAhqua9 zLbY+Zg%D)7JJk{dsraAHzQ*;)Ab-eMBc)QaHTr`SSF0S%k8O!cspD}epwL0l7U zXwi6iHz!53qqdCEGB`OyGWwCL9d3|dIEQcXZ~pl|?LYmnfA_PV`9I9x?{d!n z^3%7!{P@GCzyA2`r{ixw@7t$uf7tf__UY&SyM6uT(|`GP|F54Wxd(pUr7!;F+x64W z|2oSLkbgK@-f~}7sfUgnHYGHI+Jk3SsW{zbm?|NFoFpa1v&{(t<3e*&QXryu_Iy<9&({q^Vn@K5>t zul1K%{v(|K@$)b9U-t7q<#qhwr~NPg;h+AmAAg`*U;nmz`@{8lfB4&X-+lAXKYWs} zkRQh~%HRF<+wWKnx%lMEeqyzz|L;En5PY;a|6~8@$DcoimkY8U@;a@34{O=wHXr|sUg1m_CM{P{<7O9 z;~#yufBOD!-+hvg`1ARUbd*0t_+mnU78U$KenmwRUayx?fJugsA4T#sYkN}R#n=X6LFGD9oa z7x{!6iEXl};!^g}X1V#7T35E1KXEy-e$x|wJZK*5pIk< zn2~aeASvK{l+_9cU1phJIdGN2iY&@P8naR z4*Ul$O8)|N;K#3=-h1c&`MC66zkuO&*HM@K*h3xCV&r{oA+1uUwS7HWUuXGW$4V%A zJ4TFqP1CmJdD9WL4nBJQclidst+MA|K38d9YyUyL{qA`@w)0>2pT7UwFZ=DbeP4FV zfB)Sl_qsjW=ddN&>~dh{zU`gfFdf87FBnXZB_u^j4!N#3MqwmX=Dx3cYjSdwKlruy zXDJr|$(O!wsHE4e?Q>5@K5*&CE3t*gIHYZ;ZH}7`Z#HnOG0RmDws5Pp!A5^;t<57k zABL`Wc-_auxaKssc@7No$F{P3$Gk5(7^J$+vwYYYAeFv+l`2u%h_LT%Ea?wl+^2*1 z-_(r1EfF94ogPzm`m37JHt=`fuKOo>VgB`_jr+P=sRvWaF74r7*X>xNqLI=f#xHN_FBwzb)If7msJm*pJmlsFI zFZ24JZimKw!C&_~VP5*W*M7j5l=loEFRnw{oj&Jdp4(LCIpsAr_yMcDm#ehJbJ~Jb z7i*orCXkZ)Z-3RV&hR{GzyB0o_c&`Q?TCGj^L`{|QEi@%RF9tfdaU!j_O>@Uk)#@x zMTx7d%F@I?I&$a?Hm^>| z{NB>;v_p=oeM@=X^FEe&E^_@!RkO-bHp>~d99?ReQSvd>EQ=;9*UHyisQl{|>eKf> z{_x}X-_GCt{OS0w+oyAo@WEuDPHR>jag+l6K>gAeHLE_Bg^?yhnzrS-;?G=d<@lBLNBq0Ropj_|-PZXiq|=UN8~e1bTRAd5_Hx1GLp>$sqM4!;q-$L2 zcFao(n_N0``sZJ9r~aA+d|fJsl8!LV$1#?znKvu~q(n1#D%N=L#vTEX&-FRF{oF*wWnddTUKR=D<1gR;`0Zwu z<27>7Q{k7N<{y6k>yJP0&;8K5$wPPz6EHrlvWRh)hb$-O(PlYEnLgCxkh)QNjJ)I_ z?T3__vMbkFT97m|PL)O~{^9+QyuG2wXNn<8p|z}gL>aSsv36O_p)&D)BP z7jsys?Q5zF-XhZLsZ|kLiMh(Do@M2wZiruZWZ8c&Tou38-0~l|D*emNEgw7U?PTlR zXTJ_XxdveOmh(bRK0Gtx>#kl-%sEYqH1c_CTOF|uIZ@?F#6zCd)V2xZ(!5In7O_{3 zha4q6)j7pI?6v*TN5m|(^(;GQFJqQVL0aJL*jkHKTJ$a#)Vic4&r6w7TX?s~{)GyA zlo*bbg$$VE|Fs++8I~5WnFR| zYsl+*ggMGqllDAGza+KqhR$I*N?5Zr3)6~*eE&6rp?~D^O}`y~d%$h)z~c)9I+yQx zAzwG@(inu)_9|84s(w<()PV4_bmw!Jv(!KHy4U%rTis{rKBtzXb|3g2O5+~>JoDT5 z+vc~rA8FSg`|-R*&Q*Kesn5NvQ;-T#&Z%8GlwC@$uvqRMz(xdOl zA|PU6F7hinbuwN46!7o6m3p;GuiNxg4+8L{7_CwX&Zth0cr0-&Wlr+GMro&3Sbv@H zlts2;T=p(q=``hVv|lqj!nEZdv`qOo4v%hi&DHLlWr_AN=YqX%Q92Uu6{q#7kE12& z^fEJr4d-q~-bor~^wILFuCttLB*<*D)F2y{iQE6Y3zl9t7`T;YeA5|$%K?vswuZbT z$dbcJBQT~YrCCf{M|Bhzl@rK|I-`mDx4(z|3qsfV%dOYj^7nS^r`J75KIAly`yQIS zhf?FlxTA`d@^@rN6iZEG*~&aNsmA)Y)-cA_M%#~d-dmggJse=4e){p3Sr+H}Z~xmJ z0{Woz-`0H#^PcuDuV5|%PwpetX|A0~h^*DVqwPLo7<*jSkoq2Ft-{v#x}{$Q0ma`1 z0hPT@Yb|--aaWfgDt*bi#C0735Be<(xv!dx4k~$W-jWMK>JslW97eHzuIO`0k)X;yh_7x^{hqe2D8 zUSgIaSHAM=PMPb!X^-)y+6H^wF)^de>fXDh(1Wav{KjF4`xssRzZ_PZT$}O=99xls zLoP=WL8XiD>so>$pnrdZ_20F@me3dMS_l%K<{bJe+h)}L7;(#?7U}JdPT)darJYM- zo9kZI1xd!f_UR7UVbJw@`S33I_$>{-h_Cx5HI0(?Xil1sSJEMSWtQV2Z`cY#1gGNKKY`MM`b;z9$+_skK4|q#QZ1a$9ufb5qyvBww{EW4UyKL^b;N^B8(>V?zz_w#u z!aPdZwpQqSNTvD8a91XR}tFy|P)})bRJgr%iect7(7I|;_ zf@n=%ta<#lv+l*q{K2Sm)VOYw6u8otcexbO(Xc<1*J2xC=|R?TpHrTveMw8qVNSAT zr+iFZ9&(%hfR{PS!<1q%E(_th^S;sU4Rxc6qvd0-hqNj3r%hIRU$7MKo779wGR9%i<>Liu3-;xRWtq3-SP%JhbPox*JhFCfLT{6`Bmj`{Rg}hgmLg`Z%iQD~Uq+FWXX8AVnrr;Vm-!`ha@NhC z15mVle&8nQ12sk5YOFJZW$Drg8Vc*W?6vQ0Zo8cHyR>Xl`K+zgK1(x#@A@*fRUS;= za`|=Kh7U25KLW?Af2V}`^z)C$FY=Qv&I4qyH;eky{#W@{*Vp~{!*}2Qu-^v!XW8@m zrk8CXr;uzJDR1Wkqb9VRVUz8$$W1QyYnLM}gsgVT`?ln$QVc9<<%IYZnA9`n>kpT! zyuNKd7+i)V#Z9kcJ)l4C@_S1SDDR2v!6Lg&etW4Nq)CzUe3irMSf-WfItHOq=I(#M zYu=|L$rYy|0#ZuMWWcr>54=q0MV{AIdX(CGX6Qd{WtT%~*~40wEPeU3|GwMi?OFK& zk$IY?S!ccdSX=2wJ&u;7_>$_H2;(|!^Sb4Ak*^}JaE{?!+(W`XtsLAL3Xjw|FdCqyCmMLxf(&H?ZWZ$dQKvHBT7HRoh zbNr8|!}Z@btXTi{J$%9Ry8a8390g^brJ#>v-;y*+EAL^Nr)fLNG2@gs9~h977)b)2 zb=w~c^2G5gIKJV2g+6VWFF1Bc@xvGG*S=-xb#*6wgA_{gjvUJ&=eo2(i}V;$3{P^_ z@7NWNxlghrg#fWG^~kiceG;a{^RJoAgn!hQslRQ@ydVj@Vg}gx^WBesc~QsRxByam z{PnxP{rsQXcuYzpkM|< zH)>qc9REBe-iILb-!1X}-oyBK{ogJ8)1v3sH}twKYuT_EIq;GQrAU`@$lbd~X%{za z6~iR^e8teNq5w#8cU1DM7wLT3SLF(D{=py_rF|?$DRB6dO?mdNv}2-AsykE zs%$3w#{dKrv_G+4#)_aW0kotewo3x>28uCKq_1L2nw$kj&6P?HM&%ffndRoKdyZPsTeY1M6A!_N^ z>xz$ZQTLY0C~lJFl2y&q7M56+D%IZ}YMZtgavgH>%V*rG^fYtrzkBt51(9-Fx|}Ja z)+5S}mRf$AM~?F>&sSQLyd<^p-K22M@z{3E`*C?(XFR93ds!Vr{Q}(C6NoU%?EU3- z{_FFb{CepV6(lZ}IhS=vVLt~FDy6gzbgmn;Zw}g$MRoNzK6{STBUzYgQ@4qr{rGJStT~*>Ao$J<-xV+)7-+lWbPcOf2n2){pHSPPz zI~kMYqV5M1yRyyeOjg0NZkv?PYKJI)dmIGb(IQ4ETIR1x8V`T?3V*P+uRHB&t&8l& z?TFL1wpogkDJCkaIUW_wIfX-<<*vm$j{vS^ZuJQJk~Vn^GmHAXn6F#s zg@lwLcSn@&I7rPbm&mfURqCr1htH$rv~O9~T74z9Bn@4N@?T|(+dk&6OUdeApeiXJ z0MKn&=cRAbPDpLSSXQb}xpmto<~CHr-1J z=~p-i^*@I1{o$RG;@=+yzm*jIeM+Jl4HUODj_K%+vOD`gC{dv&-4-dtf|51nH z2Z!P7E~cZCnGxAf)0*ZDqk==48aV{#ZIRw^mN#}L%T*SC-(nB#2yr=Rw)51F{|V+Q zFBPqyISQW__H_%>65*9{3eIwQY<-rEJYhH`J6k&Ja+Es9G1@Z5fep3Trtrm%z}G!VlqxVsDPK0J3^UnxOxpJ%H}lfL*4s>wP8!SJ^R(4jzDO$aQI?SK z*#38P1bzevo|wbaW~#3{l?{)Ha4Z~holsS|FQzf)Ev-4Oai8Y6u!yoUB_ncMLt$^V zb*;UP^mXB!---)<7C^19+mL0IW^E2~xk`Dr&qZFbt50?xXd}J-OMtS~4gGGEt&W1FwzR zX>VpW%VUe89@IX4)cQdemjCs|k;*A(=TKdy4fHSYu5(Lp>LEs*Lt3}IUAL638|VX6 zHno##lu`ONg~S4w?>65oee&_Jm0q<&o?yd$VMPE&+4%#rx6TPG}FNARSsBL0{!Zs@<}NP8fOGf+j{_V;7_R+ zHo(S~C@Ta4cX9$ot}JwA^3<*?9u(g(ewQi1rjrc%h?M_coH@NyS(>DdAZ;#!dTTRMQPZerL+Pka!B(H607Fq)UF^h9f z#ca=(+`(IRZlob#al>*Oz=87v2`)X{p?7`ycY!Jg_YjH&7rk#34z0Zo8%wLA%H)8| z1++JZCsdlgQ%|y0I&a@f^U`fTiQaz49u0eg4(5kP?&tM%Fea2}pPf@;8+T!cW(-wP z5Jq1iL;;VW^C4MV6Sw7gm$#ms++FUc`^)S>fpMEnt7|T$p?fQJ z(ieGq=!x_-bR7s>2-{`%P%9EzY971wy07be^J;wZMccql!@y@}jfWO?e-8h}KmF~m z_1mAnfBKx|zAP69R(0jzvH~2|#{_-r^Ca&$v+2rnuZrTEQDh`{x(tVtNC;To1bUpb z(@v<&{>+=(`n@i0UwV3QTS0CQ4o;fp_l*LH_#Ut3dZ4ajzC2D~mfCkDZ?nEod!;S$ z8Fr6#0e<7l%)sGVDYF^{Vyfqm{JPbny)rYNBXgODh+?P500dVxIifT|8B`tKdEni* zdOD&iW+4`(kp9G1Q3!0%Rk^p1D3N)o?dSIQJ1yw*_2TK*yANLO3#gY#Mo0rFFI1G2 z-of`0IK@u*DDBt>mfLWvqfrWFM8uwEynD^mtFTevx{j%#y>8cj4fj1Q)(^T=&vCv? zP1rWC>@b*luQ(KYdiIRJvALImb@;M~bsaOc>5)?h&A(@kZ7tOzAM&K;QVZMD7VCkd z5KY?}%L(ugvOw?Eg2l<}@7+w6h7Ix;({xlH0E0YsDQoDO3eGG)X5VC#T%X$^__@#b z(eiz~TptAWGHcm0pRU~i!bif+7nd+~B&J&7yqoCa_0z1>%BgdRcEolz4t-X;?h*BC z>h?F5Kni=*#?zhw>R*W)KQ56$xB7FT8uf=3Fc?0%_W5;891~oY;i=e=PO%V zy>wdrPE+w&iSu6n8R!Zfc9?Jb~r+W=EUW zwM!~L)PY2O>4C%(Lwt}lFS8`xp=d<(CbhF?lQj`C)cjFevl2a5j|gMc%mYQh%@)Ba zIjSfUYy9}VZC@w6c!0%(iJ(a z6=|^D0u6eCT29n$+kpvdGF0}`DuU4} zZxprLMur9N51>S7 zWFwFpylAwH0_H1EQ<-~bgm*R#PBs1+y^UIg7Fm*Ze(n&(chs)VN9KZAnmxgO^~^di zw`%i%?sYRP?ZA;Wjm{jpl+Afa2q}bC^5|83%ACd{QRIT+5wV{^`T|$*X}o-^`UAn& zY_DkBz8L%$4YITY>LpmWne7FdmsPNP8=5NJImSH6ueXL0H&zZBYU%4_pGh0sI{R6m z`ie#Dl}@aO2P%&^>^Xp!c~*~(1)2m^pKj$kQJa`pQ%qs+k!;a7&*xep4v_vnV*?;- z2y$I{Us)2PzI(Q{0|~#=Xqvjxb7%I);h8<~9doyMLjmVY<$zFiRe3v?7o)q=gS^qWi?NLbE zQJ)C1Lln2PkuX*;im9gBT!L$kQv>SQM55?30SnW*b_I_uA=$*GA1DJKTxi`7Qjh~$ zg;k_0)A}>PG>Kn6%S*CZ;)Loj;QE*eHkvd-u1uXAg1o_iSxvG=R^Ddw6 zon(C}C-(ZYYcR>ni#3lRdtna;lqM9SLiZG(x`72O?izHMd#pRF+T=w`rzB~L0Hs*z zKM?wtmzJZi+)~~5KYsby))%Y&G83CL`xF2)XX)1-0)HzREFf5JHs_)j29-ndNn1Yv z*@CY1G;`YFx-Dk$^@dl^zd1O|OI>KN@~*kVFj6W39yo^G762J1`w+3 zQ%mC@Z_rgg>WBEM?Ca97+pCyG`&}K4sNVQWRrF(Gwn@z3eK#gEW8{g(+Tu`YCH&`Uc;_w z$0$t)Ta&lY8PqzxS30jM8L2;7DA+f7nmM)NY$>8d(V63j|xw<0P?rRo%d)rO8j za0yBr3lHqtGM54brAwM<%SC?}6`D|9rb2TdMD?xW{df)EK8Ocv`4F?->oE;-nJ<+^ z55Z8ETUgl=8=`vSwd+oq>_DnbJT4XAoIt8wW$PGp<=tiZRpIN4=TfizFb+II{ssKX zZ-kxuJz?j|NRu8{K=3+Tc_p=I!Zm$~2h&nBB!j0T~iPG#c&`sjVm9B5ItL()GYxsy<&^{C*IRoQ&2C zt!$9co~*4t_Tm^D_z}=}-?Iu(D3+Me;?BUC0sy|dhrNnPdk1atXyOs<*kT8dj#a_z zP;b{v;L5v6+}H{`)}|-~q=ALji#x~6VU4Ljy^Yd~lBwSP^W<*}hkY&7`JfG@b%YYo^)v*L0bJ)$>USWP32QdaHS-7*Rh(06i?TN8 zdRVoBq2>>81SQXK+7E@?g!lw)An7VGZ zvV@WgQuC^f2Lfv~b_risydwW#F}4FSyuE>+@)R$5QCmNF7Pr2Tdb19pi#L5y7v*WH zVBIf4q6PyP6j!RK6{MF2m;Qrhbx@yv)9Ye2=x!z!n# zqWhrJ4x6d77P}b7Pma9%%OC&n&yhShgTgk&!U1~co#iNVV1rid*;N57tA!|oJ^l?L zls#JAksfR`+w>K*zJtMTroB#OXRJu@WGUr2d;w~V*?QZ+8J6OX2IQQ;pGTf-@uGJ% zP=3&#UfdFVsAYDF@fX|oz``zv(zTT7TYI3Mz)5sEBL{-6mo=pXPMLYtr7`;8krnm& z0aiWN^bw}ZZX)t&jo*L$3if0E zDpzN$yWjqLkOnWG)&ao)!zeJ1xhm*%T`gF#+*;T)@!m17Kp2V7NwWr43w}vANuW-7 z5376NS`MC_54uYqfB=Xgs1}lSXq)2UUF)1=x~(mIey**H{z{6Ctxw|KUvz!0n23}JM1u>o@_K=24ig^C3ECk!9u8>lDhiXzd-JFqq6Y?JZ zuT&6!I_UO=Y+`hfu6xG4CouvrE+_`}Sc`%3i6{S~mmBAPv906fV=-ToZJuiMa6tx^ zu<=TQ;E{KC1xLgy?Q~8PagZOwDvZD^nb|$8`3}p`DCoT<4DT~_x?6>bg{WA75&ft!oA}(Qw=7^i_igFqJd9wXKDU@MK*dZoA%T0r%l3tu z4W#4prrSEkgD`?gw@#e}02XAx9vpB%leP>_QnKY-w#`)Ps11=Tu~A9RC-%1Jd-!2v zktH3asX2;zNP1~cqW@_}Z z*8JVcMmQ)>VOPNXfHVZqfv1m}Q`lnAK`5v|=RhZjql0RP(okdpfzvc(TslPe^#cus z$}76+pLK$CsX_5xqz?)hD2-Ff+ba7wW6204;R!0Kr?zv-g5tUXUP1&O*f9bO(2cuI z2Lx*$p(*iipML+#5v*T-esD1nFP~i^$>cdl8?z=PbW>*104j~FI^z&Rkm?${lX259 zv(tUsdj>d`vEJcgqKb4gTQv+|w%|Y<)Mp0;L=|d)m3V+E3kZbWeb`AIjEojG%JY94 z_i|{JCtvRTx_&!L2i?XmADsQBuoa|PQ5OM&vni9?5X5Y_^`M0kk^y*E230sKXhjRD z4PbTPk$0#;F|jUI3h%ZPQahapU^$}o~NnyiT@0XHv;OH7PE(y9Los190UL%@GG~@ zmNyOL^N!uWJ;WFe5EpGEP^gh!!8j?V6Qrz8L#Pfs70lxXmR5nx_-u~8s*cDWHLcpMlUGc5xww8hU z!}yqz?N4jvIJ~NS!={ddR9&>1R&oFZ+UgmMG;eQXbr95TApF@gPvtg{y4U~^*r<9S zDM%he-}~lL)yEttIxPjTg~B$1fc$MshR;ZFldYHg2h4}K zj28pXye9pk(=1*-!uOgyR^4?j9{1F;0it+hu^YRWMjt#Vl@%tkbf2LRdM%)loj~ZG zBFXV?!(;L+hq;UW4AK6@`x!3X7N3&Cxtrl}cf%k5{Oc)w4qu(M`}HeBB=PdWbqPG3 zPu^2V9vuH0NEej<-gWDsTk)#f0-H~p&Ahen*bY3_cocEXtNfpGZW}vHJBn^ub&j|x zdbKts*~+k;QHflXl6TmBl@44z0QG&BHEMJzutbyb= zu;p&C{y3c(hbgE&Z^rNQLpTWjLqZ+mP_3-hX;aj!|l^3IlhsFaOo%;PZyb4h5KOFV)n=`%-YzMx4 z0FSeLI&kZ%D5QWGtGro@fB)_GUw`&r{(Nv~f6$Z(*q$SBfdgFi?5J9MG|o7%V;e{o5Nz%~a|^4w z=DmACZPp=ym$>5{4xQ@&_O5000>Y#Ke-q%k+bm(FmU;bxisB_SZ)Q4cUYrrf6HZB2 z%ledy&!C-~cVD;`fkC3G^7-a-1`ha_n0cs)b=5}!|6Jbjyq9Rg zdfe}EzhQf&JwP!4=0JKw7xxfa>`}3{`d%O)BNy5T(C|mtjIB|9 z=t=cT2R+}hNwB_p1Ku6)JUqv_urUuPrvfC1rGaENmKfb4W(P;AGPA^8Y6-p*cHuGu zj$gSq6bYK74nSeQuHJ#Y#@CurySKpdWqKKz^1;XvCNLV_g#tqHEUU5~DpLU!tG+1$ zj95|zC5&Jv(>oA%$saO6cMIz8cOy^uF%x0BO#LEApPZUGD@_pH*$5Oz00~?vYO&;! z1JD<{0mkMXfufAb9Do|XZ1N&2mMu=V^wAM}+zS zevcfnA8}@;wvramSV2KBAP%QE;nVcTzE7-Dd7UWM=Xjkh4MCN2I=WRty-OV1%-y!s zjifV7>3%yL$i_!S*o;R%3X)6{*a>En1Vz=CTysIC_-4vs_u_QmiB?nX9s6o}%fM8X zqeMCfa?>nqyGEF>#a5`Rhdknz2~s06SFOIEq6hXJ7gKt(IGwoi=@9ESV0UL$=VR@V zFN1#KsbEO#HD>{$_STk30GZA_+V5_=HEC=nYZ+neysXF*rE$!veOz;)}))w#=XJ3GE!9%cpIl$(f)v}FDEU=aV0fE!c8=Ubm$XwH zFOFi~#`8d)GWUpu7;_Ww(dyecMZWXQuo2$9}r&PB)bIF!ztn?hd&xTG>5(R{gTCUC5U?h%EC3DYLIt+U^KdoZKO7_bn4(h%SO?l6(Rr` zK1BukK6JWSEk2EdRg|RSwCVzVzki>pZ|0MH>2cpZ>SI0F^FzI?tNG}mUb@N1muXR( zb9e<00_m-rmvOx5M8TY(@ zaUiMeKc%`D-W9bQ?IhAju^U6yrs=jM-ar&@{im1Sk3PKAyWOyl??}I~KR@61>19IJ z)bnly2~ar27(O{4j&k}R~*t^7Eu0P-D*_k|L4sq|<# z@O9>VnX}DzyUdj1&SjN|&0r|ws~A{t;TdD_A(Eraj7@>CX4NQi%~GDUi=)SVddy!wV7}3xe;c>Et{*(e1Km+WHeP$>)Cm|2 zK%xORp#Emvc_LT|s4w`+W=&5d^>nLn@cy33{_Y>oLXy#hqaT^{d!2ZQ!xPLOL z2NMXr^1gHd2`H`CGxio9P_?jKhf`jfDm2@wR^W3WyPO05hq9D;0DjF}sPdYF(TAxj z=)q-~dkH04;s^vb@aU+=;@!4Zl;2KO&e3&Z8~gB;bO7wG0ZggQo0qGe_`S4c{geOp zn05TQ{L}acR@+}}{+hI)F;7 zwaUIG%~z$$Z@Q)qsBhO%xnQ~l;Y~!$k+Z04BS=c$8vv5tvJWZ~DQEX;FHL|)8e$qh zz?%Bo{{0gx{>>!R?JeQucmTRjR7ccz?yG1^bBsJ8PGx#Z)NC2j1RzZd*qk(@We_K> zYwmsOd&t`fa=_~N+4!lTN4Wsh(K5Kf;^h2@V><%q_Ox>FG!|X0hdptQ>~#?wsP}lfbkqZb zLFJH`Ervu>s8m7T!Y)zUMgdBbdm(xQ&%y5iQ+m1=y^Wx~um|%JGuC=^VW>%vi)t!+ zWCYXe9JEv%RH<}rO#;1rk>nBOBo-wI*s)-PmO6eMpz^i5u~W4E@Si`OKJ%ac>1Tui zuknBWkN<^li)Hue|KcS9EB=aq`~QCWbxnN1PyaoH|7JP1mPKerXNDF1N0ZYhN~$QO zVv;i;J3jI2&*y&ubkTs~@Nvoq12N%UoIX*R{6dJ;K*Tsd^e52jFN89~Zs@Uq;nNiI$2dQ)4}SNI;%b#hNQMAuRk(F;@+e0%*nQI~n$~ zahj@@R_f`WAw^SCfetT8Q#yaAD5f=1S^*j0^i|nP##c6)Z_4?br`n{jGZa6w=JSV& zg@npj8ot|q+{DqaKTq@Sdj3$ffS0Wb1dKg%{&)C#yna1d0G@szGGWErqtmyhrsr2` zrJS_YTg>JBo)bI5S}IB7`K2>v5$FwJi1qZ(w55}wZPSJ?J-=ryh$jM^Y6Lwwf0bc% z;U}u12Icch0K>u72-wo){5msR?F3IMQW)j@unM+HMTL`Mc78V8Dy<-C2CzIxv%NA7@_|@1kSnsde zfX9$hlcWL;d2iKXX*G7kg8Ea?mSP@8uQ=zLs3w52NjZNN0#K9YP_YkAUxgRU!9^N-YB@h>w)x|$0&kyg-e3_nPGNhU zqHulnTn8NAYT-W33ukxNk6dwuib6TUf?P3At-^G`%zYO0mHAD=kCh{$Hhf^Wr* zevSin3BF-NO}a@1SW>Fk#CSVc^XJ!q4S;OH&3?Oi@U8K5GQJb&!Ob?rwg>sgqQp*X zH{rr_qI!%O-v57mv9P#s_s^gHJTF;VhfAWvz|C=isDf#!|f1QTN z3aw}om*A)M=lb-YXInBn@)T;uw><-ga}jzHcsV%_aB zmI2`d$PN5tv)%_yHFN1jWEc!@WM6JI$e zKe)NNbm(+`Q1{L}E*~ZW(b+@#hF3cGI{L4SjRY{NJB8N}e^bt$h0Xk-#)wWyQ-S9^+;J$Tm;9*m; zPjnhK_Y7sA0;eDUs_a{{SPam?gm|Vd>Kt>4du@oxnjy~-llrFiEpI|wUu#scLzPg(p{_+&_4&r=qM1J{jDg)AjnT@?9V8<;lz3dLY5CCXo>>fGH zdb0HDNW^PQ>_==ybsDlrzbfW=>1pO^Mb&?=s4qM8+rNz^F5$rAEqAJW7yTr@yrYtX z{v7)Q zy!`|vjK`Py_hI)@qu2u{q|2js9%kaO^zOONRmlz02F_D9#+s;ce;7Z+rtFE*B+LFs)eYW4Z9dA3D$VC;!`v%=9 z8|jKhcfRs!l(I+p1*#d;2}TayGic@j4mTrfbJ9l z(05D$wNVs_iVotcKzSA^Q9tmT+P1M1)>CSw%^g<_?=a{MMoujx-xSMcYf@V>#-zuN zlz;-0H${{bg@%?%He%;YY)@gL=y>|++3s7H19%xK2a1S^?@hbwG_e0h&Sj=zDW)+Z zb19?2_5|wSMc;T2%c7!#{S6W;HRd^~m{Z?s)w?zD;um*tJWD2Y<9j~Cz*l?b)ye65Cp_=8+f*1w?uK zV0!~Mf@9>KTcx{S#i|?*3X&Y?QUm3d-gN#VT(-FGN~n@) zAp+uoH`VETk0pSr5#8?dp+ldqBh|032m#!n`iK5X2b%3zeX`p?c`8vQg1imODQ2GO zMYcp)Z-S*eCO&FWsN87C>KTy-Ziv^tvV66mL=6AdllaQL<=x79c(Zj`RrGQ``FsKP zP>1s7 zylIMXU~9+9S=uOz4hlT?ENqsXv!Xzao_hAKlFCUHHKXXqfLg0D?3Cjh`2OCk^z`qO z*$3?$)WE$7&A}bxUQ{++x%UKuU8iQPvWqx}>W~f}4NP zG3Pdc0E)Ch8*=PRCk8x^0%*uf)~8t8cfUjp`>N?b(66b_Zi zXli9WQa<0)AVE@bx8n5sTts?rftXFIsWYl`!#}2 zjgpMLnie~jV(hDel?ruyie1+n_oXh+_i)W4N2wE!IS1@ODGTUAhPHSbH!cZGFY``e z8d-A?RL|L(WNy{r)Vc-zqpW$I(rTOkbpv)F%v{-g%+6X~fg{0Z{Lw;QO=CrJB1XeI z1~iLl)>Nr1mq7L#HtgL~aAt4&;QQESCr@nK>8R7OZFJDFZQJhHww*k&Z9D1M*5voT zGy6YPd!}Y~)joXB*Wq1jUA5}^++UjBVt18@)07`oQrB%{ecnjx#z^taGwGH={$4PV z08+jn@NJth%e=qIn%O5-U{MR)bhf?Cm~E)lH;Ee4r<66X)|!vezDPNrcotB4W-69F z74%oLyf~QCZs`8%l}Rj}#==^)F|jA%p(=lzR;1;4z{0C}z-EnEq;ECxCVP<~8FBcc zXTZchew&sofvg!rwnfWj4wLz*!Z5dAKKQdXcw|L)k6MAm6eP+OS7*{-0v{xswJf`W zv^ND4RfXNoSRE@!P8LOogTjRb#lkC>H$|+_h9N@%)cFU|=GxaRHAUdnKo51R>c5aR zfaAtLGV~ZX6F}kBBh4Gp=xF53vZ?kv!7+fVv&&G5{x1_)+n&* z+!f$jY6)qRTL!+rODo{NdvlI^%L~8ene)bf^jNQP{%_E8W{(ZvJc437sni`}f@lixU zyj^)R=bT&XFFR52n3A&w-~F(k2A#%;7EKh~KHvJxH4`Y7;U(Vs4ZFmn=An_HCHbW> zfDMw6KJ+dxj+_PkDqdV`c;uX(^VZlqD9y+H&zhzl_uc{IwEx2K&(r$L+Ut{H0<@Sl z)}RiTRXddX+=rw`s#dEeRIwX0zD&G!hlDV7$?5Uaa@Qu7ysaYa{p(GPR1=nLaEC^0 z>%;06fY)5=!^QeOknP7_gXv_1aZSUYvLNP{x;D5>GfEImY@%$TBNu3#og6KjguXGS z-|u#G;z(21XQf5+k0LEuyMph}{+|dQ3~KIl;6}uBI6$o};=p-HYCkM^{3N{lMv}rH zUluKur8Dj;;Q!JApEd{)LBYq1p;8IZ_OwKAjxd1y=Zg%r(}ftFDp-#DlZ$%h-HS!Ms|| z3#jWec=jr`a(YPXO-`J~&o{>JJOC;&C(+4HJQKpcw;iqHp^bp_kU; zS5rGa?~VMK53duy`us4%5i4E!8cyhmDdtD;NrYTsD;tEO!h%n_iUXtX<%L(5fj=(4 z0ZC_KxRTtki@^aH9U6ibSv;U($Tg3ug0qVZIPznBM+wk?jnRBLo<0E6^nM4Q|GZ)Q zZ{BtIN|GS~ALH(AKMgUI0x&1&oEXOdC8xaIL$*96tscOrLWOE zV2qOZ9_%87GU)Fs9gYXU8n<1=mkWE7RhyCjzKi80u@vT7DE%$Fj*PkR; zG5+5A0n8NSegLqDQ94}Z9z_oG%kZ3tdPzf*{7Y2&ayu|zb9vP?5YeyI#i}LNH|N_o z8?1wX3(_n_TNZL?IJJpPg=odJNrj#oHgI`_td+x6kRPh-dQxz)5(*&G#X3*k#W!#L z4xa*MAGX5ZFCM*hk%m=4)hs%GC% zr?)8_xf@%yN85PPUIPoNI;bOgbS$+k&K3ch*zi*D?J*ZlrPT3|S6nFKGAmlR;EBe3 z18p}RP)9*)<+oG^y1oR}`D1rjVfG|Ub`?rTt)ev2q~xGt>hL8H5zfnZdFt%+1n4u{ z6bITywbvh`UbOf0_Ah3VZ&cM=Oz~^i!C(7Q&oy$Fz*^&KO)<^#gCqs{($N+Un={9k zD{ZOsfSY2NW>Lv*E25*4f>6|)gEk8Hoefe?l(jKwtzakI?K3I|3}~*nKcOYxt@p;c z{eTD!@lAyThoc)k9SsH|%6O&_J&&Wmdbmt;R`_0E8LeW`p*IgAdl1ZA_}& zw>vS4k7;HZ@Uw7grceSG_w@HIhCSJ^?JSPtlxpAbMX#2T?)O!i+2b1m?L#LwY43XF zFl;;hRAOU;%x|r_MgDRHb3LnI=8B&ETmUS1F8tAYM?sOCOR{A4;ok7N=e>*vLJEWNOn#&@V>qS1I3>gW(Yws$hQ#oY#Wi(3HBRN+Dmxw)nP{NA`n9JyEr3Svv$lj} zMkn#kSTIJ1co+=vbbmHK1P6-+*SRi?q*k@8O6;jTJU4arF}5LW&^XR>VgxL&mI*F*bW6XX2?{FC1fD$rqx*86r%qF|?ZR$S zY6`O3-Pb(DOq`I&fUlO&#qa$o{-*IP99(|{q-k#+0|-Z)`PWPgFp-8KIh>$|7(4^=B=7BT3J?z zH{^uH3PxL9=O}r5UO18`q`}&)-I`j5a~itD(wuUED*w(3E{yddwTtHeEhkb3vHriy z3F|g7+5c-ff#F&kd8h z>NF6r%R6`pOpfN@hWSPl_zd;*EtfHWShAtDcKAiQNwYv!fWJdlXWA0M0ABURdm~Xz zH}~|})};v?G!7Ih_6OwMH$%gvBpP2rrL>&Lro#HB(OcuD7e^2+5R@HHoDbFAk65rS zHPae8=uU5^8*6)_(HyiyuF$!j7MdS~mR9;{Gpw~lw#Y;>dO@1Fic5JjTb`?-Lpwr1 z59w>t_V3`>o1ne+spcRE6buSZ8W|rs&U=EJbJiE-7O9#L>{z*X8J0D*n+wktnikqP zyhk@sN3PhaYTy4%*A0SB5GcW>k}}7;#xWnijdGtP8`f0Omys--cbr7WYtI`M7ncCE z-~Sw^gUvP%T})L{9F!Epv6G%}EO^B)HL<~0g8Kd$;4c0Fe)@kQCoV;826RKB3RTR? z31VA)9}ceqCFfjDB$_0T&b7>R+a@Sy)-IRxf7wj;yj=~ycVrlpX`7!SS*g zmW2B=y}%K}x&Bl@s=>rC`ajDFdLo2M<(wFzHDS4e>fBSo?H|hw?ID_R(~7stl}lba zN9k&N35=^y*0@moycXXZYF-_l7(b3}d@8p--rnbq=pKz*xoXO2p;IuoYxpVtYGqTp z4W-JcWqGJzY(}kz+@dI)-F@@jE~5}j6r~C%>*Gc4cvY1XQy!q}&%>C_exiZ%i~4C7_JB&x!r1t} z{^4B=>D8tC{oVbsXUq%qo@E5a4CEjvJbsqzb3}QLzR|539Dy zu!w`t{sbmU5~jAYP;*~6YhK&@m&d9BpDjk7832EP_Wy=XkjW(fhfe&5PW*>X{D)5b zhfe&5PW*>X{QplUoK^@g5=h6p->#8AwM`jr@20P1%_b{5^1c~It8hzKHrzu6A}By< zxobrUJ(xO)X)?@cO{q=4AbF>yTH_`~*^=}m6eb?oPIvJ9KD8pPR1fFHg);`zCUC3E z4^VBSIuY`5w}amHv)KtKeEt5|%Ny%fZ;4!$FI-(BP2U*F>9?Q>_GBrYON^RPbx%q# z^IKS+sx=3=Q+lm#Tsf$FdMfGLq1t~`X=n)@@9zN~bV#jxlP4^6MQ81m>uZevgVC{V zj3N9@S?EFC-yWKPol3!Bqc7QLswtu)hKDhv09?QxX5RD53O}u5;XATK;3NaQ?TENN zJIJ6r2-i3zRbns)q?bI@@n=ys6T33OatKnlFzK2lpn8og>JTcrt4}gqFtA{MGmi{*QXX zPEdS|8X6i&kH%?98D0!)r7(~u0fl(VPJ_TrS=b6IUASL}am+i0CXlRV49;m1v#D7d z&lvO6P_RRbBwCAJKQ@was!;FKk zbDZZpu`~%4g2ZxZVAPxmC;)IbNdQRyvk?bA1Kl3g-YNV|t3rKoW?k?d5Z-o_6Zc|H zz*0QtM&C~Ad;>8AqbS;sC8z`VD*1fXZuQvzArxa`7EgA!Y~yYxa%q9b4%RDdZn5!b zKp5V>BSCy?QeSlvSc#KTI*8^I-U1=#5=_e!5%{K-tCuSl#eHT=;EhEOo`|IZcSBO4 ziDjW`q4W#|Qur&));goJQ->!_6P)0m0{{04*4#v_FzR2`2&F5|7uHyPbx;L{xI9k< zj?SCB53UjqNMp4RT@DrHA=0#2gMDxgNxjczHg@0#;h>VLCJ7Qw5GdswPWwkZv)*$$ z_%WJ2*AS;!X+X(`Vas$ag@q?yQ`-%{S!!w7lw6h726_5+g?i@|^o>n9JXK1yUOEfw2 zRzrx3ogSvYE+k)-j>UtrnubWgpGX!FbVDuKS3S zj&FCrf4pBs5Ay2$#W@FD>6}ECAs8r#WUi<*8Y&`|}`lxmrM=B|S7H zhS6i@`;n<381#SH1Mftx71>R>-OSCH8(LA~8&q+H|Lj?R3?Z zFcbUb#pkbHfqk>Y7sM^x{251t1=s`p#cV#6T9R6O!39lrKO#%^-4+ zhLv$GsT*k)3%|Z8wT_8T>Z7LGzJ~n2$tp*o>1}EjN=cOnYpKP{dCHxA7v*d_C#bRP zhrf^eySi5@UiNi;?=AEkKHk>0#*K-MbljXA|}cT@luu zpfF}@&Jz^bvXI=6q;qoGNu)FgnzlJX#-<8^f@zgFPS=+Ov&HbKBo}ZC#4hZr!R_RO zj!fM%>F|5l%0+34>y>=nweXj^(Vs^a5%cGgJlkuLUfVUJVbalJ-_TO9 z%?h=$ZX^YPJF>0&$>Y`)jbP)a?fjTc^fSLL!P5=s_sN@MU`=^mESNz9kMJn`GoLus z9rR}A!MDE>vpICWHfv_HNV9(#6*CDSKfu}1I<@WNuHlY-k5ppOT`USKA$aH|T)t=8 zL*zHx)09@Kg9wYBpE;lM4f+@INKv;IBNu!;4%9s7j$W@kKJ^Oy%;RtbVYqc~dswgf zrHotIwo+mBBwnvpzsy#x>t|aUUxI^Ky!;kx*s+DA`r-0*@8l^`c(7wC6Jn}3H+%6Y zb1^d|Q)pJO(2ucn|LJ+Uv($m zd<*b-lY$1fin=HV-HBqAigIS&MakvaVS4)7<1TG2{MWEDYoFKq$1U&Ady~(DDd>;~ zX#61Gb8awfE}+U(bXlX=-XHMvCO;$4p2G{)=9)5#&35eh-}q?uTO6A^)2&GQmztuC zMAC3qoS;?h6KJaDsY{F{RJuQIe;3ss4lvt&-$`_AtdMJc_k00fxp{3+A{?`Prju49 zAWg^9cq6wa3Z~c6Qw|}?+eE+=PzthKQFMqA5|7VbQ5ncB@wIvE9>4V{)`LfdZ)R-t zghD(lpOk_!q=qmXY)ATprG})bt9fBuO&#D*d4y3^480RP0-DrT!7;$~kqS5+?T~W^ z2rw-obONo<;_AK~Ka=VxCcd`*-$9`PliH#ZiChfWrNy;;D2u@{_=fhYAXNBP*{E$ifdpJ z*-+WIa=K2aOh;vF1+SLA-xg`{nOH_@X=MQf0M$UP4ScS$a)Lr~Vn#!>q@ z`)WFVJ65wR-1f*(v$A#_Tv2X-De$1tby6&YaT%akd3rIzsD^L5he%ffViWa@BxDsN z;gx~Xa_hoLoz8n%YIT?2)Xoa;<2CGqmGF6H_Qe*V)=3rbvHWJ=x&Ti*?|#?c-;Y-s z_hXCB#CnHBO?cAmRfoA3cJT&xD*nuTwh!b-WOhb?MzQ=Kq<|v$WuB%mD7PbM(P}N{ z-sZ4ErH~YE&Tyy=6wu)->hS5u+_?$!YqN~XJQ_?fdhEZi@2}EctmXSsF|QX2gi^g( zgeS&k6Jp5svofMx(h;i}eYCD9;x-!{k$W62)=uoWT_`TUHVsepH(;a*UmXUaqAs z?Y{`O;=B!gyt^*v#sVu!k2c`Ya%}6kgK-O+tc3O)E$g-8h?aT@&pcbwMQ=68HB9rh zp6vob_jxfc;mQ9h9?#h7pW~GV_H%5VvnWOLrl^o`1ms3m8|e20nMC%4h)1)qazOT` zspJo{OSyR`%sRCGU2nSOR}?3k z8F4AVX>+U319{#6H8qi-^l$;^5M}_-UNpXxJbMu?%Uv+{qg>4b-Hk_W6WQ{_^v(7#$G5t&zVo39G;7>kt>?Im*4CFth|5q)hu8HO*_g{mMt01E<1U!)Ixt- z%sny7?$}O_<~V^Qsaqs@$)r_FCT%&&;LC4S<=gi-!uO_!{;4%J*8&JBYHoqV-X(j< zXNYqH)jZ6=zR#k}J%KLHZ#`UQt6$qt%LC`~w%{|eJwIGoA5Dod{nEVtV2cA_|jS{ zq6hd8leJuyq7KwH4-)&-J-7>tr^AYouqZHC*z$h4Kf3)I0KhO@6es)Dw$aZ&`MmOe zJJ{B+(K zx)DiNX;JSfU(}Wrpf!m(M5_RfNb-4=9L8(g(}D0F-|acDOd|*>Ds|kYBM;CiP?4WA zc;DtGUawxUKgm4bDPD8u3pRt_gv^E5+agm4%BKobzKI92VsasU43}nfi?eG+Xg?c<@>A8`-6mIyL@Ow+vK3y%Q$-rh_qm7v;3jo+jztcv-vh?pcYkQeTZR~2^G|b?VQI2WGs?(Zm@uH9&l`RJy+NTyGI3O?8 z%QetxM?6>z3Z2H%%X_W{K)^?U>p%7^Og?R|JXzst=+l0sB=_N~hG{mp>&{`ei_kj) zX*WMvRq=d>phG+E)P&#}o;hlJZs7bOKf*>84VR_X`HXU7j>Tzj!Ar>8VnoNh?lt_Y zCUOY*sF%3SO(hsz@f%E;2e$_`ABr3}qwJ)~cI~|^L9ecj1WYy8>hq%6mBx1v=wa?| zxEUFh}gGn>sD=-0ht(6qtzOArK;qYw$!T~n=c zyxTfGb=1MPA&DL%;Uahyo?o2|m+xXvygwxPy6Ki_w#P_dD;5EtNC;%Gn-Rhe-uzsa zPf@O&&fbWwq^^Tc(A3C1+i$DvdyyFZwSm5pOB({8*GDU65`OPK+Y!H_740~z1)g8c zKO^{~fNyK2KAEB;f4|3x?H3CyW}n7<@?261gG9LUKGm8$*~*Gc`PUSmxyq-F54#4@ zm=7=hg0qOnpy+SkaHE5sgw6mwOCo_H63%yy4jsgk+>V5Wgjrr9UXwvQnM00`B?tpT6VOvz zoy@5>)}>#r4&dc@?vcADPVl%iz{L=!Hy*87&A=~8=<6ohi3x)juHj4|czl)2d- z{oeTnkMb$AG-u$V4hubz^QoS|h2$X&P`;#7Y?k z$A8w!QQ*(iCwDp5`fquWMhcA%8{i>Cl^SW(zX|rohI2AQ=?C`TRa{+5+SKv@3f){> z)1T@Qr-AM-Kg|_l9?A%%0<~3(xv2f{xGs#Fc3;^H#~JzunPNda2w`4HUq|5hG6Xl5>*A#}KdNs<3E_>q7WcDj%B-!T zVo>Z;@V+pp4iZ>iOwp2(fJXIF@#rUIiLt7bldUZ^#B}AJU5)9*bet)U%^07MdIV13 zelOAgjp=88!;GO$L&FIh_y8VAf>~zlVWw6I=d9wNhb(X5LDI%7=0!R<!F!)E(4E~N>?IBNd6&k<(Iv_G5T--{D zGaXUVY2+KL73+v!ihjDHBy3o)mXD|Dk&$K0FOuVir@65uTOGD-;}Se7atbS(i_U29 zBbz@5IQ3#thE(J;?OeName#YkbcoC7C8U^vl`$He%*zKvnu?cEx8Yc?7fRG%#q_sD zS;ATPOjN$LPCtV~&vZ0hBUKPN&KL$&+uMvMOfe@}2L&Qr&ce{F@AQ`PuWmkg$5)iIBHV76TR>3CJi_0A_P1JEI_=llaN>MH_+eaa<04>oTm>j^e3br!KY z@#MO+efgC0J4!R~1|z`>Eq{(<1?^FD+}@SxqAFaIIqqp>CO@i2Hc@evs`y{@`+?ag zGigqxeYh>5%=lIUzTQrfc8>DfttP+6_A?-1&F_{g?N}B0&GK>MyP)=03x0{sxu}D9 z?j2umCH>`Idv92AbJ>BHE8PU*`gPT@hDnyL{>m2)%&3Sq_3r6WHNX> z7tbT|F0t5d6K3r~tK<(+-s@NC?r>S+N-?_Yq zXhJBK&!p1eds)81HP&6s?xC?Hz0=1j?wMc~&fCzqLvEn`{w4>R6*!zDly7QDYlFgjlad?? zjxmi>^Cu9vv<|M@88#E^N?kV&6hEp7fftwaZE9dVz8?-1BUV}E+c27Cekq$Xr2&)a zD9h%RrutyGC$s!N=%jv?GmYKgWUGM9awhrC+T&zd(np)pTc^y=I7Q-eJ#h+)bU`go z(%RZRNTbJ**%JF}TC{)Mov1u$Up|$u<6eo&KP!8k&zFHT$wjPT`qTB_;I^>h9@kDy z?}#W@D-j3HewB(>QWlYCG9c_hcSVOw7UQB;nvk=RI>0V}EqrlvpmpHV8NX6dMl~pM zA^%dmi{{0Xt?~VHA_3KxwXRx`=C-f%IIZ`k=#k?lPGYx9qDTpBUcTnIQe1)46_!9G z!q$7naZIuCs@R~fZv=mT^n0`*7>&$@Scbaf%HUwbd?V~JC$ZXvu|3=3jL*k360^3( zRfc#AC9lYJ6f~3-`DunV>bs__*M8El4ZCig5(^3o{TB~A@}mDRV(78pbfqR3pE)yjW5#Z9HCrHjdd84GX$^AOZetRdc2y*X4yt;SDwFH8uaYKv zGhFkOP;ANCbVljikOoGwhUBbuhw9y5Hyd_XhZq7)8MDc=8~udJPRIJ2e07%st4cf4 zg0HzlgZ?P&u16;XF;x0i7qxlY;1I0ju&*g4dgj8qmwNbRfhbLhr3t1sF2VEb>tWR zRCaszOBcqHL$ZQT>$X5&)>tZmwJ#M!3TTHFZy-vmA)oEc4>1ZcZ+aLrVxo!U#Kp6s zVui@Lyaf84G(c%Kca=T&+CTIH##X5#`iowawSj~0W&oklI}k6kcq-sqW8o0(TyQ#c zkR{;sFJ3|iKQjo>;KhD~ycV>CAmZU}eIsuID#zjFnU-SYB%=J0IsQ z1KIFEh_pVmVNSk<#N%eU&fuJmznuwmv}Wx>!C*O>se-=_EDm$&%jCV#Oa zPG-dMARgZBkPS3RIi0=77)YylvX=^kVxZ)svPpk2$mINHSoV6-(?u}EC*FB=_ab5O zt+$dTmwMCHZpBubX>gp<5k9!dKpb#5P_WGDbyy+sJ>N_^HNW3;1w zu7~Ac_Cht&Hy?VLcK~U1bp@nRla<%XU~kgiDnV)&{~HVu>#VrWDf`-vZYz`h+pXFI zJVC`7jK6%WCU}n8Mc|jc_#P6sJHvaf>Q}p3MFM=4tPFLwf8F5DQqP{*16&kOi!tOA z<_zM$wHBZ0KSQ|o?RzIRwZ0byKsnhW`2G^A(8EwDsf3Y^w|!6oC5RJx41?+PecjQZ zc;RQ*yDZ9bDP`SOjeTtH)&tr-x`Tr7d4C>c`w&PRW}*)Fh@<{-2m2dZs3m7nnW1J7 zrJ)%ux`Oyq+d69q?P1iCNhikDm#&MAo50@0(L& zP%9F^1)A#E7RP}dXNsw%3_t>ru$l$DOLXJ9C{|G2uVPHWAG zP(mCpV>xh9s!{FBUa**&#)pIdGGv6Tfm|6v_bO?9v&3o8Th0D_2D+z6ec20sX>x@# zs+LXp?x6i+!W55HG#GJ9`Q0DkEoOGA{;f>|jr zXzTqGvn3!8^vWTOmpC09^g2{KDL=lc_-i01q^O#~m5@-aCaEEx@WSvDSh~~(*OL_3 zVhL>x1~(7j91$3*qZ*-7dnB)b#gEJXY%Fc{7cquT%{piccAKlbs-)z5$O-6S1RsNp zPIXGmiuD%agv@}j)(!7fHEU$IjV#|GGg6%PBG)XpLy%9t&wxzcn&YbeuA5ny=mF(^ zCYEwc4|Wjv%kfKIxGA1UlahgoxgrijL`c=P#u+5Fs8j5wrHgad4h+81K2|0^h8`DF zU+1@Y_la8%0lv=VQ6GP2KqtLN63edULNakKkI>j*lunuz8*S^I5bC_71nVC>U0iM! z#PAXj`X!x0Z2t9L=%&u`24mMF+>A;VF>4UYytvS^W9P{XbS_ijszMU-zk0{?uSnXW zfkW~F#$Er=i*N-(z(4c?>Pb0{7vqczgq1YxE*1J}A*bs|7Hf%Z`K5rCnG^;;3D+f! zN6qSsUeH{A(F@fG@vl$-ix8!+j4M6-U06kWO2J^1d5)fg>h^sG`~VUJ5ux`;P=~V3 zliE$)k>OT=4$0<^jC#_Vo>CA`_Ff|vlfAUmejU}|Kg;&yU-lxx%?{Nme%zp^ZmLG- zMZ)XMuazKrn6J_j|LhKgc@HDh?izA|U5UX-Yr`UW(}HdtiyE#3?-r_e4As@GnU18i z7$rNGNSVKA>y@ea=lg@oRbO15P4m0}%fo=;ZqEfGo}&^X$WKcr5ch^AFqdsr;)Kig zD4c{8Ol(^vg47@F+Est3YQJd_B}BtnfQL2`NC+YIQc&%wND03J1xhBhck{9-9Ic4YMF z6H1|RM19N?u@4pG2o^G~5#teJdKx?~ogoyrZQlns>6Ldy@aQIEzwc1WR+%VYDO~WX zYYEEO1Ip@qHGs#lS%u&qN2FT@clHm^vOeURYv)~gh#-gp!b_bn|`(L0>QqJ zWR+M?+=^q53BRqttQhrIs?is{Af9Qy*#;}Zt=5`!v(mXLhg9yC7JdQIumBywyt20A zlgMhN$H7<{^Dv97^#JPy7@KdV`Y)#Q@q;W6ymnU@;*YadL^V%IE|zp&Nn1Zu{RSV{ z&N@Ki>o8cB7msg%El z^^Gy&{t1Lf$~2}dg4%#vZ0mg@R-mtLPx0E2%3}@&C)g2 zbd9TKBk99~kYq6S`513xD*_+k5R;#Cma3&UWsuZyl>O15c>v$k{Eh>v5v5t%Q2!mR zNGdHPHm0w7O`if>bJ0O~_G1X-jltXQ;1i9fltKaZ3nGdrBIXF^t?@!VNPzY~AKb;o7WhG`$U&<+hpP)K*aG}d#uok+hPNoev*5B6hBXD6uo!WUm(bi&W; zrI(@X?)Pi*Q9c=L=<<`B9%D!@O91*^G{1 z83X%D<+TR%Eo7M3!SyHpCT=?Y9rH3c?AkPLOh5ulsRNFpEm7MeNxCnz@OAz!yONc{ zXxgDC!hXD<>xmH8pi(m^2;~1fENseN^Vu>J%C5$i^V#&evey%Am1g;YC+L<-RCtHf zh22B#+%G0lkJz$isw-NEF)F{zUtZMtdq4Sg^R5k`BOqq!tWJyu-tFMN?zPhg3$JIiqa zU;qk)f^}kB!)JGVY%UlV)(CyDO$MKV>+2gHb%<)R`mv71tZ%Djqwq6># zca>Ff#)Kv?%JfQ;vdqIBZIIFH3QYW{%wP#AKw6s|&7Im^qF3l9xAEyC zpW@(^-vV)FCRFy{sPwPykCsLdpKQFUz}BQfAD@a#cR-Lr;9_IMvs15GOH$M7bpBVj zLd5T%ZpF$!-HKiAT0fDUXu;#6A7LyRhoe@*@p-*X>8rcH(bc_eoEr-3oTHyZXv7nj zu*kB^b^~(UQpvB8$f+whOEdY(D_|3dk7BgTO{`SYdLzkk;KO~>RsNN&$P*Fpu~|ch z?ie?={mwU7O0vT?QlRysTV9Bx2HiN~RlH(onGZ^;v7sy}PSx6{n4iAUXH?uojL+58CjN3h*`-6@SB8!VTzLJmB-4Nl1O;$gFgri zGmVn?sw@6x>Qe99FK@j}lqR{S;w|tAODlt|FzrJz;x5DjSL==?4mY80C)0l9<9^Po zijDMQYM?cDI)?7@nyanN*b60`OsRLf|ISR&YShT_SVNHFTOP(0GeOV^n{b1HVGc~Q zx+Ad~&6td*G7z$cTbm;C@}q4y?(n2NhW4*MwD}5Gn7*kY*3Ex~E3UK*J%s8GAkQ|% z!h_cS6|Ptc$KXs3!jQZ;ZQxI^upK)y@jIcVsO7Xa;G-+~zFT7gu6wAV1Hfa0tK)A@ zDh^xk2ja2^cZ%H&bh=qpVLJNWJ(gnnR`d=VuXNRsi9TPMo2#6P;7Gk8J(Ge=u&iHCVT3-&pq2inoq&|(ns<`kV|CqL5T<}BrUy#BbMPd&=1wQU*ued z9R$&MEI@q>XlQlBvOpoyIY;-&w|gEZarzam$P19XZ9!#HwGA&FR7?*{mNtPKHbnQ! zn}VSmUudLdt3>S)ReSk~`n3Jyv@6aZZ<@wcL341z2H3D(Y<*IPx8LwnNMFY(kXv~- zEtM18%XGx-arsDBk-yI%Bx03isP$yfGK3ZofTzu$ncOCsMQd)7j@@B1PVhUcGN9-} zI|u;DX^dNXs}cvae54D_&bn3MTD*hDwtEZbD-DNN3+N8hoYFR}zu;ci z2L9NwI2t6V0fcK2ZUwtJY-Dl$0VW2-_KQ}jm3MBWfFbjGak|uc-#}k5{*lDxTojs) zSfIz%unVal_FCgVUI(Erp-PY%@n7W%@p8{m&>{Gld!VVe{M{p6D`Y{%Mh`72iIjb_ z?(faiy*kPNQLcDr6Q0VE&j|3Dth|j;|5v$!Ds6L&2bxn=c%=aUHqt{W%b%5YCNL%6 zh{vxzn+BeE-eQ^DTBX#iMl^`g<7l$D3k3`cPfa3We^Huuh&;g;T#c^H~G6aNd|1Mk;vf-;pp2E2tDF0_KH7e3t`<~X zoh8-z(8slmdb6dk_Z(H@&`o*fiDPCzgo)ybOMfkCZU?($DW!Rp7@;sJNc#=*v)l#} zE3 zab9_pybqGe@P3M?{;r&`UPD9i>FY5b(@0_B1$rG)^yP9(iboZ8 zLHu1^s>m?Ya~q4vKRaUVQBFxd*{G)U(c(I@C~6AeNL>9TDY!I;5(wHd8CS9eswMhV zG0AQP5l%CiDygFJHGx(r0_D%q6LT0YLtgWHzWl{U_PJDE>-e1T5buHgML%tL+>v@v z-+Y)wCn#~isJ@g9J+4uVW|RE^+Skh*Q}Nl?D{asUH|Pss%lH-tO7#g|2$7I}dUpx*fFo2VgJ`OS7x?rTaD?g7B9! zD?|9tHFoWyT5&)GS>nJV$we6_HPU!gR?~vssG?>+Hq{b}!(AX^m@8>E4Io11rm|ha z!;a6QT>Ln4UJ;4QCJ7~wioF2lLy?^j9gDjXRnIBts}`MIaJ+I<0xDn!TG ze*BAI0o+(T{wzcA4#IY;g0d>e5xUA4b*JH=tE`r0C6M`~Yd*gNRc0dTCW^7`C|XEP zS@gG6Uh-pS!mJm!*4_=L`Cn3PJ0@M?V`oMOl+i9Vy^}u%BPQ$5=fUqGWb@{N=iuA2 zmM}VQh#Qj{;>`hc8Vc2f`i&Z4*}vM(21$G>uGgx&KX0u|Z~Y{2i3+qDrhWU=;_Ia7 zQb{Au6n|ue)yT8zSoewA?f<^!{)zk7c#|+L2nE7fH+Q_X*Lp$nz|I%F%=S+XC}&0k z0`+po5D)-LT!tx!SUmLK_`1jLI>Ufn*RkE8v2B};ZL?`?+eu^FNn_hi8mqCB8Qb=r z?aMvZUi-`Z1-q(uA3s-5YNU%)2024!4*fKXc5u3A+}B^V zDzMNc(+C_Kt-M~=c;8(mkTeO;)ZN}eSk>w6t?m!(|1 zh3HU&$sW?MqI71VgMk9W1TS?E!@B*i!1z^4y+rCY;K;j`?J}cy~ z)yVlcTDCZ@R+kLgPiC5R$VRGcff48 zWnh`3g^m0Wd?)Y}DM{YQ(H2{~O&)o$iksakRnST2b!}qVO)Ytz#@Bec{_4-^!KMBx zmbdbH+_tm&WD!Re3EvOAi{=P$|7_2etxMHYVOsZl5-#!`nWeG3d6!eD(@p+)Cb#Vu zm1CF?`io*MsH+f6a7NKaoO@Dv_NCi-lrBwC1cfmNbddRYUKGK)K#)4ePPDJ+d@fXU zXL(f}#U>p+a|DNW(Y##{$y>HSfI(d`kZ1*o3WV*4SXtfcq?F0mOqPKfQX5(rF?#8` zZZI$wSH#UxWIYFCuE{MEQTpl`Jr!2LL1*Z$pnQl9SoWLq4uJ2bLBcf*^SM^-G-t~~ zsNa4nIL%Y^hXgF)2iU#~k>=n0%z43Dh-GM^6sRV`Cu1h_7iYK2l0tze)6{gjQ*Bo- zTt@suBZ)6WM}PFE8&sp+k(d+d>PlVko57CX+x40OBIfJ;A+*~U&o=KBr+RJ){4ZRR z1(b#jh=!Hn=BaHy&4GZ0>%-0U^p!UM4i`}th}wHlw=ZIa;5jvD{^Szob717FrD1bKBK7*+oDXdpU7>O$$kR6_WP>5sszx*m>Qg~z5ZSUp+;s|XyY~8e zfJ3#a5DeUPn3DBzf7n$Zz_{(exiLw8w3}xB3BEiihc>bZQ`63I@7#N=ekfncU=dJq zg!HqJVX8PD&L0;PCt&gcE!ks3AY@5jRzPvq-MlDB#_443a#hv6S~pP~Lh*;=4_tka zpek@l(uEE(h_Jz-Cpb^Y3y2}?p+i+0KYh;OZJT}G2N%5HldOo6geGaQy_1w)LRau{ zFe}|Pt-k;xf-jWm2wcdJ^faK1$UW+A<{!Z5cT_Ii8&ZaxC0sr|>S|<$PLPiVMdxe) z0t{c?@gfyi+X=7k=>eoZ?21*!PHLZ7>*CZJe(i8MnN^eOM(5N{&|e^pC)L)5I6k%N zG_;0sbb&XkyPsTF4^(TReE7@jhiSt}gBR#x zjnCxst>A|*4a1vH*Y_S00)y9Kzno8Zu17C}zFUet0|v>`(e_qCh4Zn9_tUuYZPxqgY4wVqH{_;b=J&t`cvjBKIiWj7 z-f9o$-amn{%y)GM$`^BUZD^z+Oal44)a0i*{58Mi$U1T-?;P`=#NWbN{>?taqb_k% z?<7SI62h+mIN|z?ZIWIg?!C8gBT`oSPI{=$+TT|_%N-#OZTHiR^)f)ei5~+Ah93KX zn%UHf=bPw>pTf^cWVM)SuUJNO5|XBTaCY1-}E{&*Wj2GI8Rr>xw zf{})RP5Jtk1SA+7Der5VkI^pBV&6Jt(|*bZXML};pRkyKMM#hzAj)4YCSqfU_bOLv z4qNPYR`kXzVJunir?mX-v+n7Hv`?&0A!YRdx2e^d% z$pBV|rmaYVW8=`O!dOsc;at%7{hYAp{l)1ONHD}+gJMK_T~z>qQ1%N|#8&4@+y}kI zHbh!NwQaABIO-Oo4;R>N+=#G?EwRW{JgJ~(dN)Vd!PKB{a{i|mtf3ec*DsLRMf-|6 zE(#6HJ84`w_E8pUGSfhU@zHy=(sS|Ur+fP6q|taUsHH6ICsK+NAft}HBpN?&vzqBg zr2h|qoO`TIFq6|@!5@Meopvu%myh0sH=%-GOG6iinqX$u_nM%oogvI@_Ctadb)~R9 zC!|4s)r-K4MInseI-x_)w%6c)Wh_z`MM_uM`&yR8mb3VktH-hhXTKzj+2chgyGA^E zTv`=@U1E5CZ&S`c%h7YwvKi@-~p2a zL}b(tQ(*dcFC#K>T*9EurcDrsxnHMu9QLS0Ms#N;Pfe;DSQkO-NXg24FI+tnshmB@ z822)Ur@QKK9P>S5``L_#^+!`&#GWWd+^7FgD$a*cXYh?fuafbB$BrFBt=ZkVBG?;? zyUk*wB`G?OmCph6!d!^M20d+3>qUxabRC?x&-xcpSu^>Pb7|=%1%d0dJhat}G+o!O z?xZ?mTDd(E#bm%T8>_cvpDfpR+N>AOP}_7Ob`q!L*#{@GzU~6nLAQpvaN67m%@(MR z3a#w%)jo#56$=2&*`Ta{sZP~6xxZ|~ySmq{UWKY_l3EZpP+(Y-u*YaA6D~Qk!4q2c z2B}Tx0tJR%l}mjT0cDKME{yCUA088fJ4_5?NsYFdYb8KEXDJLZ>8+gL>n3GZHvOZ$ z(&}goRtdA+xksL&h2D0UrCP6q%q=Ej5-YgdW1u@QF|0E01PT-w<|`$&P8BKp9gP*@ z-8V>HNYfoogc`MWxR#d>#~<(4(i<+6_+wsauSE?VB#(nOuE@D+J)Nrz%O*%W6#-=@ z<@8DX^2$**`v3&wEFb2`UjyDr)$$?Y9I|G$E_jLPdqIR>-8SmKbj!EOW7AK!#j~{{ zqWUA`{(|u#wBUG5SaY6IS4xg3NP)k5|L`&OY*8CcC3xH@5J(B;7n~oT&4?v9Dau6X zkc~XaD!{lRircLBz#h(&C!2tkz9@R&ceG<3IpZh2bC|O^`dQK?t&>shQFfQeJ}N5Z z5Sle4nGk{gkgIHna2atE?K^8xxEW1q>2%pFx+%1${;E*(9|ptA@UOwx_4aMMlu3ov zlACm$gz@hmHANIFnm;E#w&pTbM*$iPgE!sv=z?Y~GSAWiuaAEQgX|KX`bhaiYTK}> zK^ZpOrn_S_s(9^YEMfp4xl7BdX>S_M+(`VLX3n0C~StwP{$Q9!`+e^j(Xt z4)9Fkl;|R0#v;P!4E(i>9T5jiA4jtWxMWCSP>I(A(&bw^#?Slb60AzBmFG(cPxhLHS+)2pUE! z==0KS^C-7%p1?V;6PSCzQBh-fwc7H<)oe`0Wy$cPeXiAWudzEG$ZO)TeGf|p5(SFq zw$Cvbn&f)7EtihF(BObA9<=;8m1sj(AsEnLm|$q%nwk5}Y+F#32Gx6k)0sw=^^;z(~`xjv} z2@d)7uYG*K9j=;u%M0T72muw@*XuIBZ?o@yJh89NyRdS)F8GTuSpHTlp0te&RO%~~ z_ucNxz)#lZsGQR-gx$a7LzPgw*nFjSxJLw$s#$~@3`c{0lAc!cm!PpO&+RSwF#ddi zX8n(fg^>X8p7qNL>T~vCL^<-1)Mx)kFD9uq@wal2!Xg9?%7r%e5!0wa&)j2D^a}`P zLzg#O`5JJR2cmDGwXRmdhh;fQPY+pnNwg9+SFW%*n2_KG%#bdIeL>{t8S-A*;21}L6U1WqO&XSy-s-mh6F{Fj~tKc_!m zKl`Ucw%)Hlx7k7IJ|gTs{)16~8Q^_DmnypKx_T(i2O8XXB?DU)Vc{D{sGzh7Rc|l1 z&%DY}2|#`W6wz5##b~(SjU;bDW+5Vxco8K!z7Nd!cSkjEd+zsti z?rS{=WaRrSMf?4%KCe7~+frsiO~=nA4c1}_;{DE7<^e^&l;86J(ImN zvH;3xPjdFwK*J;bi1$Ze-?r>?~P1Lekj zXk}l$|8`9Z{a2oc@qW<9S_rh?OSHQ(6L^Q4;rv`E%Mya*FMmki@n?MXfTFAZtH?8J zdbNQ|WXmU?L+ETYYpe)~H}del5<5J%cP#KjmFYo+-yH*MAWYQzQ%+8!kkw!Z2ktwb z(@r6@@p#Bz6(Y{Z4fs+oX?qo}l%!($TF5wwKn9G1z(X6>u3|LH_J4+YdERpm{2{(& z+D6PGSS`r)bX3WB+UvA`YM>+*8*of$1SwG}o^ zImkFL3S!WGZTH8j2G*V~m!JB!K^nP_llVI@D1fm*W*E0*BH(oRSpWEpeF~0!eO^nI>r*5RHWn^i>Shv)-}9;@ zD4<28C>ago^2m-epGg&uDvOV2{x}Ys0HFkMJ^U=8CWI9Vsg=(=4BaZko$VBnwjewF zAC|&IVQ4s&=*pfz{p}&Kr{Oaqd=?9oFj5(xdYUn zJL;Cub+&2UGS1W2x@@AQ){z~~jrH%_G|SNKvyS znVq;GLYjXg7L{0B$q$XKGb&DQgf}N0mBT!=-hUKoDleo%T0%7 zl;P?<6DY8UC3$aj4bz=f#7s;S`=<~OpUA+v4H6%Jwk&SgUCvxal(=G#SP~zIrkwrYGqZaLb-7DTogCFmV|{y0^~-6P z-Dkm{U|vm{booAmlkh~>@MK%v!TSM+x$cI8=ebOZ_D5lOJBJvVDEVpEAl1i;AQFlv z4UO}Je4076QJu!R-n5pRt+*NgD61vEsfK++`>cpm5BjhgSg}~wAQ<*E>1@v=^3@*g z4B}E4+e?L4%}XydHfDt7a;VtPaf4O@P5#Q_s)5v)!{OxuvBOR=MT%r>xjs(vUY>T? zgfW>Yk?iL+KgaO?a`}#yY7e-M=iTp$v?9;hR2dZ>^*+bQ(%EiJ;{6Spm9n(lrugY| zsiexM;+5d^4^oiciwjWwgA@+`11T)O#xnkc6sC31@bL_>TR=zw{l6gv@&7;yBv0A= z@%o`L?D*Y+)aMU~*0@O(Mym+LRn8jq9gaASFSr5hC+)(xe4N?bQmR)*(@n$}!Pvf@ zx!r04zitOwmGHRJB)+c0iS+#-BXz~>_3m)k$pUK^T3WpNt~08O$94_3AVk`)txGXK zM>!ke*{JreNwinbF(?JS*XzL8fU#8qYs``Q3OxONCI&|JE5@7~L$OXIxmCZfQ8Ou` zURK&6A7{jAvCwxN?tbaA@?E{Bf1o+|m3Y@we2>F?o%6}0`&)WnU8l9B;`Nk-&<_d7 z4eCi(E3M8Z^KT7AwaAwKX3_=|AkNI4diSfXom~SjwlF(}{k-H1GnT81F?meHoGUYK zbu15tR(|@}sIcbf;xnKXcYGOT+T<(U#Xfh4CVwLqdnTzkF$^k%E2P%J*B~@$T4H%A z-UyH>5o7#d#Kpgbdow5)f&YdU2W{!p)Q}2!{?5T43JM1UfdkPq3=P>cZd6>pb$1)C z61C$M87fLS+G+E3a4tG%5nEC$gULXRCauVnbUkh~K7xv;8g*7j z!ufZzL+y!6!Kmtz<)A6%SmlVzjc0kkE~9>+TU9%q(rknO?CKjS3!UdsYgoxqO^srn z<4DAdGqhHbq$ZxRKa52_&x$-}mL1ez_FZOf68jdU!;q*O#SH~An;Jds2o*Rkw>rrVcz_f!qM(BqXtv5jcv5II? z3vxH7Jt@~umx>UX54cXp#y$)gp;T%`$LE4)6nQ&IcR3t%p^Dfd(EQw>G^giZTXkii z&|Cg9n47APYLvPlTHi9a4!?y)md7OZbdx~Y2b~aBYw`TC34I)`20x~@LWA_cwN;8{ z=Qq(wdZe-6V7^v5Y_heEDYdQTvk%gL9J`tPg@*G{MSY#@HO@QzuVA5d=g9Z$2rO7c z-V{4Jeq}{+u196oK}RZCo|vof6cZgx{1a{FqP=0vy!vasP#w1Y%P?%GQja;m)x)9Q zH&O6r+pDZ(nxYxufWw@0#6%}dveFsjmZ2`m=fWsU;PH+)tHhu9a$834m(eA|ej28P zjZTWtk3($GZc$!J8_rsns1O|!Kgvd?X1O#&?b85(m?qF%#)!CvwzgKv&h2OWxytNk zy5qe8e(n*3s?h|w^Fd{vA-ic94<{Z#NCEMGK#B!)r2jXh7`t1+{Rb(25Gjmx)YWB|8o=s|LrJ73H0OQ5{G+GW1>FQ=$Zp$4pAhE5rv>)(pXQtt9&H!v0S|AZ82{|zb5pX`nPLW(1ge~<$8aNwe98Y}}s zaNk>X@wZrpF6!p@;k8~F6Iypfa&~`R?|m~xz3%%u*OswGr1>rA%^D9X)}LsGxShN9 ztJA7ieh?Mmjp3xd`F>lHG3s&nZ7mjx$XBH5wLfP;qvON*q#G2W){9?O)k+{00InUu z2$Ebvhpqba8aVu*?A1zpzN1JMr|h(veuypNve1sU3us45k!_{>=$zg~#JbCS<_Nd} zK8jyzs?Y(BCicCc0VY1cZPw&z1uVzD`o>WNH` zNBIj$2NMj)56i1Ek2Hc2E)rvlIGiFhO9v?njyaNq>(0wOX4(%C?lwrZrW9SoKwF{J zE@VR3eBtAdp;6}EOzQ>df2O1(WPTM@z=|@*5{6e(!YzX(qw`cA6sr)K7YuL5FEeH~ed;>IB4#D&@LQyk%-uM4SEX+JxL4Tp>LR~f6 z#OOO-FxpT4e@Tjrzmnp$^#7C;mj7E)(EODYF9`o3DYAY+2)u+f{go7W1h~Cvau63d z^`{55E~oDLtQe3Fww-sW>6n4a1_5v|fPG}wg>I5HzNlpA=n0ZpdABZ;*sQUKE+>d5 zu=b(x;#D2oIq_i)wb*=%We+lx9#|lKA?Ega&63u0t}eoL3XTJHCPmRQiC@!!8WF2M zt00LZQFZ+3BkmnxT>l{dwpabzjg#!@&>UE?0Oq70Grte?@t_ly0q*Vf?2vHcDcuwU zuO^f>gtNmV&VUsQBtI%*TRg+<4`9VYD%XMLc1j+)Lh;HJv`WhbEQY}Fl0B%fDjQL; zg1upmfWww@R%z? z4}*Ng{QZJ~X0AmGmPnTMuIexG}=m&`}pcq}0cIr3NxgktAnF+aSBhOu>TC zhz(3q6d%KU1!TWY8|3PJ^C)vQhTzfR+=#=&S_OVO-D;_QG|!8V9B z@mi~G&>?*#e0ermzR&Bk&&UbJ`Cb#Na1+4Ah)UKPo>`;>dZtr~WU$HVZlm3<*vlBg zR1VQVK*3lwi>@f9*htGrFz*)U#kYL^9nnloa+@x&I~vh0l68uIsFq}eMEQZP0g@~| zKg?3a2{LjFiG_dM1@X36XIn?X^XzZL0xAU_kM)#_pZNV>#A3Y@J)~;Z(hBfZV?b)E z9`xJp>`~<7@j$hw&&Mi7<16%qbyiRrqn=B05e%kBeE9Kd6OyGKT`Q(MA?Na71`3`3 zaDb3>qx$aGJi1fvQ`(*q2YruD;H=go!rgK#!<-Jp80^52X35lTp=!FgBv{N9P8=+z z#&;*eK^liT+27=xGj!wMci)p=)yKSk-_0dGDe3kYk+tk1_I%#l8s%>GEv9ryV>?t? zj>jox=b79NF-&q~B{SzWN4QrxhzzpGsrhCZ-#P{pZrh6BEF6>1r3?Q z4v?2=2}1O}0{l-w6Y$M#3tYPQmd!+3XJxB@=FJG;*VsY?Y%{XcI~U@^z6;_*3l5J0 zFk&(Jj-evRaora)_T`V!y|kM=z)SqP&1j8$4=!h`qlFk$w1@M)FDF>?00E_Zu7-B# zW|aX@QeOuh$@T!HbnN6@h9)svzrq*t6_y2W4#8qtyT5iZxMif%{Vuu4Y0k@>rDojt zY(s=x|99Ui!YHdE44&?EDWG88wYJ$mV~<1CETqAIj+kEtS{33YW+x?(&OK?Guw>Qm zEBZ#ah9V!#&r~hh?JU{dxUP{f8|6~Npm`#g=9NA~TzPA!CXn5lGV(qAM!N)?#QOh^ zSfC4V03#NOZJbQRa2#Z@S~z%GR9ukLPy_P39&_4GHBBlchR|GIIOuK#i?If7vo}pT z%8bFi<5{8sU~R|b@fXae07}AF zx=!wUvcBnM_I2jS9jqhC5$2)Z#7!$v1I|YY#o6M)CJ7EBHo>A>V?n2>mYufThfOYh zHJFO;EQrV8KdK4u#!IpL&kI->yQDG?GdOL#hbIt2tjo{(7#F7L zT8>QtTCIYIe%7{?jtt;_gHDdj!kAToCr{>(sRy3YUeK%=Zjrb0u%#bAby-%FE60M# zD$0>2|0I3B60*`9o-%OS%R=VD0^G-cY{*kN+EIFI2!-1i`5?2O676f}AN7}Y*V&Sm zOUqA>)9mD*w@OZ}MWf9vkDqTXZzx~qIcVm2QPZscq1-Nlc z_ieuDeUn$l|8GgLo0DVRNjFQSD_CGr7fR0Mo<@Q*#uUD^uh+Llarm&189RKDjI5~z z@qUtb!>oj+S^`#b&JV(U)w0ZrYuF?{1{ct4Qk^7RIWZ(WqFF;rP)KOr6SUy0B@@^e zN8D-SAB+0p7*Sa|jYxUQ`cf{P?d$EH-JZAd^*3ha@{7wieczz!!+|+1WC&5HuR;ir ze~hD|RZ=5Cd}Yf5*|aq>iZB;bS5D?YtwDu?Z%v+RDqmILp7itkSP1W4l1Dp6L1}}e z6?cTpz;|hwe6E@TEW|m#3j+v*GP+rs*a|BLP5f>>NC`qi{A1I0B%D1!89Kp(pIH__ zzD7CE%>QtB30jQ?cVKj}v$;<)8w$Lf?prfBSR z6l$=V=;J~ojmN@HTr=R7(31;#RAna*ZnvqhPF^N!JA1-&393j<@1`d5(Q);&;24$Q zR~x~0xXjVc+-qW=npgl4nwaG(=_g-gZ-&~euS)poKZw}E;}3pFiKgr6E^_&DcZraU zd_jzcC$F<5iC1>V;$5kVrcnVc%8=K^jicfGfbW%*U3mLIzm(E3ZT7EXv3&`wSk&(M zK9mG8=TlwGkZ9ZvP9Vu4k`oh0b&Dv1#*VBDj9~cBdb8u2ju)1Na`d|}+6Q%a-=8&Z z?EAL%Oc0PhNgTz(xsotl*6i(kourD*7IUmY%xmYy0W*pBW2} ze;JE?V8+4$n6U^<`kS$UC|O1&+#lKpb;F$;FHI7`hFddRXk3a~ci76*cQdvuwc~9v z81R{HxDR4jXvk(%`O-W|>H1Z6O-7V>cTN1FEMVfs z_(85*)59VZkSeexaq+sWNBH%g#cE|ve#sVOo7AzwE0Jj~456vtgHtMUNufcJwq%01 zY@oTp@u=a+MP}Y^bZyIiv|$oyp3`4%0y^2ytpY$>NBRXk;SkJ9O%2{8@R{4uDaI%q zH1r^Z6bat7-~^>6KgJcYj3Z30?~atLu*t_ZYOec;n*u*m!sO3&#%0 zQ`GW*NI}s_qk`t&dC7{XrE{SH=8v*=Km|hL1AYMtDz;VH1${fldC#eREP8(PPy3)7 zo|?d!fPbt2%6h@Rq?bRULpuCuyT$w^gWtpvsX7)d=Cqb4FJ1KQ8-(o#H|48s*8?O- zBLSUJbj(DKRRFW)cJ%j?Zd9YbS8ysNX^RH->~fXSfPx{-5#!3l%KF1(jIKG_5M88K zogVHcWyZvUcC)Z>X(HU8>j1F=95hWG4*t>gHN#CU6?4_y+|?5*tyU75o#s>|C2xsy zOI~dTbLDsJQ;q4$TgM6xcxSszqcUh*t=*%jeA+s0WKiOtiVe~Fg>vb0T4-W)BXUNs z*oBPtAspGMcI59uR|{{5HfvbXpXI_So$5nNTvpl4kwdtLxDVqW|JaW+kpwoHqzT$jRpR|xB)TJ&Ytx| zdcgdGEO~txS|4hl3t3AePU;lA8I!Sr!w2uG0P|`}kh#n|5Mq$UWG^AQ9c&KAp!`{A zTu_xDv^ry=)a;l1zN%%ML*3#GODEWBZh6H2fEW;T zvd60!e9ggzUs6AW{x`&kua@2CG}JyRJ2bBcCO|2G5W^;z`&S`5yd4zq>Hg@VY`UxP z1EwDd%WWL*upGAmUz!7oyVaW~yj?n-c5sS=(S0k8e}bh82r*`ZBLXw6aM}(lhy(UF zB7t9Ls5R8;JvR5}x}+BmPk-whbU-C`o>h84tiYRb5wR1aVw9IW%_GtoIxOW4tQ&7= zEl@CO^JpX#!zjWje8&9g>14zA*-km>{`GwHeNtSFrBMP(&vztY?vc!usS_ICi^_P=0l)pFEiGV<~?kp1BJwT;Y#z@ zK|IE_A^C*+P_M-DjO83lJ4~=35(LiMAFCb?!cSQ8m1DBSe#=20V<6} z1)&|KDNsDJ0LdQ{XktUUfzrDV#k223(L;_hg%K`C?B`#Ljt!&X3?9yk5Mo`yhuuI}Z}S0ueq=pjdUBxip2BqheeWajFeFu^N4?L*5bygYNbY z)4IG*gKC>d9sBjuuymZh(mEVbsq1>xr9{@1Xn}$tHNsAwXra2^1)==rqW-P?>VD9v zY{~a4G!F46nCCucWcF*<;8bcn1$(tWz@_y@+EOXl>IDtCxX84cH4HH-!taz948*zG z*%qHdn)!&A&b8WO`w2)zMi$55MeQyn!?Wg1isrF$w5R3sw*^pFJ#XlL4Ovj@A^$Eq zxpn*NFya$tGV+rV(N+_i7KZiljKKxLa4x;nLE%CoVaYELvZz4-9bU^7X^n2n^aOHz zf%rOSfSEd)H2j+ZIL2#4kJyJLF`&-& z`}`|*@G3p_GH6I7g%epDX4Aa1C_TG?`u$3oG<-m};^@B+M#FrGf3?r#Q2K*fv$tU8 z`x$rINkZx7yXVakR;bVD{Bs^+kxLrdpL;flcu?I##fwXS`Y+xbQ|z}ey5(FYiD0LM?(fQ;dBJobaayVnQ;KO*WJCq1^0n{iXGc`fY$np$k8NEFwN$?n4YeJ z3Z!ojL;wzgp?%w!%Q(bn4!yHGA)}rvum70P0)_%ag1yjTX|~;y;l+0=^{tMoTJrQ_ zHX7L>+_o<3MaJ2A&M(KfQyYM%4dW3M7b4OxtQSozG{9T!pG8SaVt{m1#zp^##85SP z6|qO*5_}F7GkVvV7(#r9$5g?O?OZw!#h`xXkX?|j+bPE+ZhIlxsk3sBlm(HbK7voE zFJlB%7m|n^5jHPy+FQbgoGSVy^{nb-?)6DGc-SsVdEkI_mRHjCx9T*mmWF9GB6 z9=y`C`dA{3p`&hOm>sy-9qYFl&O?|c8b!`+2_mMT;)Ex;`bu`I+3wUHaKfsEtKoWS zG@jw0pFTzh=I0GvV!TD(30EUs^|Q527cA;`gAY%6AapB<^sqy7H2T>Mk_Ho60=`bm{&9EPx7 zG!A_!6uz5_YCxEKQTCVx3DS-6RX@x`0`|s0#w8$TC}dNo|4Klmq+Kn|UNi(;8X}3w zpIQ$#IEu&Ox==L7718G)ymfx_L34Oq4Pm8o8bBk$XR%T%_q#9P+Pfx<4GY)Z$ZiDD zLNp7w;W%W__XCACbkMDq6se!Z4p`>gVhOlkZz)Q=VTuZWTmL==g2B2F3~~X;!FgXfVBq?QQm0pJgx(P(0ykU)P}Z&R!+VNI5&+O3d=l8V#Op~ha6FqH1{yoqUiXs+B@g8JXvMx z#WkX}T0nE7^5>6qc@c?Aat>Do9;6*(1l)~Ca3rUjv!8#N_}37|)ygLy%U_Tbsz*}XAH<@nOy5+EVu=TIEVP&Ss_*wATe zj>`SiA&-@VcKBro$(R&z4r%Nv&UT~72jYS$M+$RRr>Nl*PNCdkQQZxPVVH#2FF5c~ zD&Jw`!u>vyPuXotE zJM-0q)$BA6Fn@v8y|h<%Qtec?t}+f4_I>m_rz>N$fF@Nk2E{Mu+pTp`)Do zgx!sw!+TnAPFSzlzuqGsS#{g#|LP0Qfn6Ya`*>bbdBN-EvU)tl`YE}y-|qrjIYoI% zO@6m4d){~7 zYC^yDJTAFy2EUCrg{7HX^eK&Yefd>7O(Y}itSeNkg~yiDU2NTdV*)#YBk2pSbAfsK zIG675HSpxt^i6<27<^ZdY@S%3LGy3@f{vsf%P`Dccb1$UCBs$^^oOaUe=jD@{%vJB z@x-odGP%VRp`_V0eE8Lj^InN}8dAjJRAj=kEUSGzm^qtSgCZnX<&26Yq(>IKs-fPu z*|W^=$3s0)YB`z6gj?9%CYg#J%o*-fe7!SeTYdu-APXM@@r*q@yRSm7fLrJ*uCWsE zrs@b$xUiWMgwDuHdPypDVEp3vZ~Ouv53M)1bs#^ZR##3Iy`mti|HUr|&F{C&5)VRYW2S!%W5J<@ zM*`_Z`choQ!a0t3(O7xrb%cbb#Pn*iuq4uC( z#CjC6-zY@nC(9g%{?dzIB~o#JZVoui8UEETwoMKqf-;94ULr7&1r@O_cDpm3s3a!Z z_&_5NUhFixORJE{?lGe&{v*hJYGPyX@x@Q@5H!K@hk!D z#rP3quoUPAMXyVXR=+g;Ezn*J%9w9XI4^c`k;YJFB~+)}Q)A^S*3tepr4Nv3g z8I*=>|)=yMO+NqfmxxvR^S2A!k= ziuQX}hzVCF$`Z99h*T|IYloo;Vhgs!J{@$pW*s*HLQEMtuhzhAE1*k!DMP*E(D0e1 zD+=M+aF6NBSHw#Z(0tAD^0Uyfb$_@TJ2>!x6x|>+@!G^A{IHHa!dW3Vr2DyzkuScJ z!RZVtJutJBC8kr-sG@EhV1uYaU>XtHbZvVecZ0V6bsiFVlEy5dL_0;4aMOMT7fDa1 z>O7BHKJ^R2e#r-#$?X(EKwLaOdu zzOr}2q|xJGr?XODjV8c2Z!KNm(?ix^wH1 z&v1EEJXv|OTW`w3T&!w4G8Wn@@o!B2DDYt*1auwH3C(Y=vcM9}r5C*e$A%JzOzTsO zhNi|N_~LPfD_4iv@##a|*Z~1ZtjYVsmg8NCCU})#h^90r}@R$!M00j$^Dp31$y&GL5o1;)`N#;dhOM%Gl zb<}6;mM$yRz6&E7TS9wRbXl*hfj(<8UX;bJbH@A|E-jo%k4%p;W^Q5^k;?z*MWq$i zjS15C@jlgEOM(-E68@-eX{Mjh@fc3>XcEmzUToE7Q2>e%nP5i0U5j2II!H}dYS3Z<^2PU4KxIpo@_BZ*+iQOK)o>d5{zm`* zR=+?y_>cMpUhCib1&mKp+yAOx2>eJDNlJ31;(;0tD6IcXS{uBoZta+nm%(W}8$xNK zZl@3DL>biiyqbNT2~G8EfquBgKh~H!EO`~^k{!wL+^ix3fh+lHT&iTbhRG&B%sh?( z>PY_-(d}&7O?;W(~Lky`W&5wiRoXu@;V12v6z`Eb+q(#2N^mX=$ z1`1PG(-=WO)G;aDfy!{P66Y_yxXmog8J9W~$N5Ju{9e)tytZy6gpa=$bDN{Ra&Hm8>S1 z{OC?qm+lC$;D(=P%~+@qK+)^ z4`J;wI)4LJ%<|4+VE;lDlE0PCi7{VP1}~r&lmP!(vvX}R;%==i*~vMZYe>MG93P~^ z3Pi>7_F%spqbIew((i7Ipdm&u)erB}zvX@KAXX=HMHsq6I|x){SFh{0snfRi<-)cu zaYmKg!Z26J05@&WBB*Nr63uG{n?W*7Pnp8M{>7|OJLI;U=tO)&snvj_^ad_S!e%|P zErs&b#e#kYNG#hj+Xsli{p0(qgy~zRROy;d|M&xlbM8pY$R(e~Ov=GmEn;~SPwDj) zmO@ye49r??3-M7RdEKS;*ZD_HJIXN7ie0zemOz4if*-$$D>qF0ooq_jy}jfW$JCUa z-8&%W25kZu(*k*F0RdoQ^NC@MXIvq&{!VZXb$P!`uKWi_pHYV$ApV?N>;o+5%C(Wb zcJNkC>A2!9ubsKI4g}XedGhriOT8G9 zUwj$x`v|LfT?_rZixnI|aF70c|9sB<1Q*2eeZ2kz{HMFzdXRR%7VK|{f1A9i^7+V6 zhuoebtW#?McIu@0KI!b;d#NrmrhdJ}Y3&#C;!%+Wr)3i6A|fqmOEYKrcJ^htN8+q7 z#LL&<8zf%6DiaaW?!N)^n-PV9SLxF!b&JwaMwZIPqld`JqQ~US?p79u$bCtOcEpmx zVf>#@63C}_(f!-6Sy$Ye7k9YV?d`x89Qx4wfV=i95e3|>)(ebJo*srb zGeZ-mo%n14<&{cTPf6mCwbT#|H5ssD+e1qAV6`DACirsAX~8ZvTTwbhL6{l@2A|!Q zQ$cJ_K_}gdo<0S{pPb6A+^35U@LLY#w`S#Cm#x2;==7`OKeujmI;n|q34*QQkPgh1C^X!(wZg^C3#!$%9e;KQDb8jdd`e??qSM6!A_B7zrg*QU7Sp1ytu@jZC1AP}g%wcv)0C4HTD z7k~yFND4f0gPDyS)+kH!II&W1`tW=fCOCk=>0x(!I3cvo%%l7Dcqr)x4>={=JY(NH zZkI~$HQBbmZ#f=BgEN3}>OL2iv`h9J+lJWdmS^6}biuf4_o_81s>`0e;QDwy)g z_`=qIb2;$IBbUI=XKrk_92yJs7uSLct3T3l>#xwRjHi#bv%+(N4HZVO^H{Xvt}F@h zB1etjWD<1GVIB{y$vZQ+plI!iMX3CTVOtZEV}N&Bjg|CvBWGw$<3S zZQHi(rhBGcYwi8*KQIo*!MMir-iqLkjqTo+--Kx%`snN?L;Om2(d7b0U<*TaG4FYd zk4=U3yi)Gn24M;B4qeq;>w8wERJf2ve{sPegoz4^;QP0teRW1p@-s%`?y)q;_~sNb zLbVmJrmuD_2_e+_`5L~Gwrx`{Z&UTJWMT6mS)5M`en=MCUspsIFwTvN zMCr!EIe)TpW6LX!e{W2De`ynJ{^TFT|L11XNo^)KBc`{|I`n7$nV`vnrcG=AI{Y6P zoV7*-IbQ3FbJUEWUS45r0fpn&PWsms0Sx$W44*Tb@th-@``X!-zK%y9f>hj$LpHS` z*mwgsl9Vg)kGZfCE?lsHYcd39G?a0( zA*%RulD=dw+qB~WR!o*d$}yP5XLbaqRfW!T!*h;8%_S_x|H;Ypa2OmMb_g*4eF*jG zx$Ty5=Kbp{c-!v)XRIi@zxjo2HNa6K>F|H7JEN%gOdg0m7&+_2D6UAkT zMbtfhP10yh;{?B<>kXw2LJ&+TwsU9MM5Y0nQL7z-m1y#)E)wU}YK(-}|BU`c^>5BIyINfcqb0(PU;%Q<^4SFhx`Dg6*r>57D~K2FR;na4np>G6U?}9UJnS;=eAd13 zUIR;lGDQ)N0w|jqy}~oL{eUdwy+oI{lR639m-8b@xixNhdc?30v;6{913Jv4+UU1} z9^i74RXAamzTF(~%GdMA#eOr{x1X;LUQ9l_jeD-zvNx_9wKlsO_uy4`wcf<ymwuH#OL4Lap2 z1KO;J<{QeiGr}ztwx-N~6}-|=t-P!2VBs{V+RH8D=^x`n9BXGgX8J=(n`t0#Dl*;& zB95J%k`e{pInKIoqI)T`M`Y&uZhIL;CkfsSn+jlyg1VWOx@fWW7Lh(G)2}3BEJ7!I z*&};5ODhe$7plG}1giym4~Up8a_jOkGL?&3g%r7=IP7Xlrhw?ickgrzFOl_?r+;BM1k1h8+s-KX#E>u z1medzsR1Jl<;e|ICC+lOaciVcL-jbla-1E$PrwMH@Lz;sk9-kffpCHKxZ^RK;3-eE z)f(bdgRrfz?Z-KcU_XGt*0r{_oIhYulk_{3}7!YO8I&}-t0ddBi&=g{&%%S<&zg*yy5>t3{#_J|jw?Ka3(A#>* zKgE}+d2`+e#V~DcB(VqOI~4ch7WUKNAk!wB4d+s!{m;BQ2o%H}f{v`$)u)=*)j0mx z3VuDiZw*?UOR*E>)&e0R%Aep&Kpg|C**pa@s{D z6|4Q1vyg{UN`f$m4+FaS=a zZMjYjiZAeoa{;bnri8=qtmH7?m8nATP!`&{UTp*|8Q!L!PpE{tN6m1-gqgP(0!<&N zT9`1&+-jvy_0U7oWAjE%gB`w`nh!04teQYdMagG`kokH*Gqzqn_~ESZ8V>63FZhVR z#>>wyPN<@HJxC2}<8=gTYzV}w3I7W*k`_gY14Gl-hWgd4FKZl8h9E<5iF5ZOt#z)M zfEtqe7H?UD`W@I(#Ff@q0fz1Ec$e_Xq1KI9O(f!e$zu0^Jn+ULU;jQDV^iJX8Rz6)dmNPRI~HGr7P+ zM%(*LOAu<@*_mVpX9i0~Q_o%nr(7_c89Mub>J$CWDnVSx(*+_r%`a8mvLcdwWI z{4&jlXt4(DFrptUpx_3L8m6p#;FAi^YCKM2lxyuZhqbBZVfT2+X091PF^n$-Achyo z)~&E@p>#BF^cn<}ucpDI=}R<8m_X@&)&(Z7ZQL;EAE*yK7X~+%-zPBt6D=I;_+ANc zD3PqhhK#P7A+VJV5c~y%4fEI8go!mnbb6Os0=>`?d zr;oY9jv9ltg;dI$n|=3a*eCLsZ)QtQoU^^~NP$~SK8+p1(8UQ#V9pp^Oq@4Xq7t7# zEgDKHmYsMajMBf!H3V2$D)Kw%>^nAaHZ{S)Y!ztXrkzLWoFKr3IDrwWxZ!T_E>_X) z3DKELw2p3_dngq9G+z=Y>zRDX))Zy9foo=Qw9-QZf`Ag|NXp))UIYa7S0 zo3S!lz8Oa%!TQ*Okyz0BqZ!9ph!V0D@R(*Id2BqvWLSqE!IYMBnQB}G9k3)C#QJ1Z8M-&}6r>`eFlFG$rWIZ|T58`Z}%Vj`7NCltG@ zSilwF7Ob6YK!{6IE6E{;@+d%#W`PZcqQ`e5V1q#=u!a=%+MbmJU!&SJk5d_4)NEv5 zkZhEU%fU!}REz-BEWmM7nu*^Nk992IR$5NnqVWGU7zrbvgNstu-1niZ+l|iPpE@hS za7t$EiEfst!Iu2ac7O8eG{5c9ns+{B{c$sBA0@YBaKYsarP|VF*!>$}SSDgOsb;>W zs#TFNL)mILZkQ=)^{$_kmOloFjVx0eNinY?e{dEXj^7B^Twp`v9f#lrb*v&i>FA=U ze#LJi>oZ*To;)ehb_3dL*|kPpKPB?7L$BR+^6?D=R^5LRb<5J2;lp=r2s1z3WOk?$$?XC6h$f!XVYZe|gK7HGf20Tjl^L>pRq|s*6-ngvroUtgmcUgh4L$9Onk;?zl98@E|}a zDL*6*fS72?PglMr4!Cb$pU~v5F;5xux5(HbQ+$C#9prM(wAxFx2q4>nwgOEtP()3$ zI#iPlGa)Hi%S#WVVcXDew#)AjmEo8DN!WjnE9S_(aWzQKPxx?*Kh$uhdMaU6-^PSe zf?Q|4v2=X5-JG}raLw*ngB>Edn(2$NQ0Rl6a?~Ynzq-KSt2#F+pzY;SwRef<3!ej=C^_7RQ*Qs(hg86P6dpZnczn*!T)&{+KENV z3h;MU6Hsk>Qu{UFphLm>N>NFxxbM{N%d^#&zVRXM5>74; zeIoP`9~DM|D86Mvk5TsszhBdx*?%hxcau|rnZFfAN(&|@k#hWsi>>GQil=mfQ49)b zg7UI}8#ySw9X&~ouCPZB)UOx5zZFJ*r9LD-9_5RN^lwsQeHwBC31EeBhy@OUtc~wO zP+KVgv-bJxjrVKv+LzWDFk7lzpD-~?YAS2OgO~3(XQ!h$XLhbfUTg!-Ru}ZiFV#O0 zMX2Njg6B({!u&2x=(2F#(*kC?Zavuvfu2RHIPRIG#D{0$u;QFl-B$PM>9)QaAcf=U zUv$UW!Xhbbyl$N-6b^wc$K`*qY>Bn3``5G37Ujy{@E>iXiyF4Wpt>eO_{N+k^Yk<3 z)Wr7cXZ&B!A~Xui%>VzbFyxFh{ecz6_~qXUgZ4*hwi^;0eQojxC-xz*!jRx={#RkV z06mLH)Kd&6pl1=z8jo+ZNw%ta@=kAG>FAJi|LNCNwIRK7ve34GDB3q*g@GSQqw}}I zSSUZJuAk99)%ox&bOA}N4vSH`zzQRu>7QqT0+>ez(f=H6Xj_hBw~|D{{5Z1WaZNJ< z^ek#+oIX5@SppPS>pud-S4Bi_6`VYdpIgUNifI0N7WKp*p2aQC?2tnrIRSSB^r-nk z^eVK}CYAq-G_7u9`t3~17UriSmz1D8(3*q4o`qsY-q?;bRMKfeyOC6J8rXIOm+^Ao zr*d{rFOaIz`~Op6+>d-z7+OpeP$rqhpL?uwUAWRx#&0-sh5+^Qg!S*)k^4Wq)s#4~ z&#g;F>xieSTPA3`n-LjL@Mc=}&s*}pt$%nH#TgA^*y@`F(Hy`EqjVdf#o+d<{I2*s zFKg3dwY#Z(K_?H*Nos}YL_3fc^`pX=&v3P|xUXT>-ZeY^QdS5BJniwy7+7J{04t2j zzZHgfMH))1@~(llVc!=JK9;0t5PFVpYT?N^->AP{A`c*r*toBkU7V`D?9uvdF7p6- z?pp(MX5eI~`pcB?>kN}g$1H~1XhLDK4l08C2@(Z#b3@E2NTploE@2;9oNe{np54y$ z_I(n_rz#Psvf`-)cf-3ZJP`#D-qcS5;j602D}bN{byruYhU9ksR=B7%^#fa3@+w5@JD=;2qk4t9JY}v)TX?`RH$ZzFQ!GK?KDQLL z(8&F;cik0Oo3*_twMx-~;KV4nOSi77-k5*BtXpVea+%nN|Hv??31rMQcYREwiUY=C zuq1(?Mf{I_Jm*nHjYSMqX7Eoa3BwV0z5M#R=cA zm3C_23^2pkNmu?A>MVV+Ma#`TgH+XI*bKkb^$bq?zYIea;er?q0khqX457Ro0av?_a5)!eoiMT5IMenmO+Ke_vr4>oBisMkaQOF`Jiu5;a!g6?r_EX*ek!Ai zs1TNSAQB``4h3Kd7NutOhR0D)lSk_cxx&*IcV|?4QtpKAvG=#hLv~lwc)>ht5(ZL` z8r76|^!cwZzzV~;%bwUeX8VP#8BRvptenS`o*3Y>FPkmC zg+mLIvYh4aq}@5+e=c1LXvE%Yu(w~a_^wY89dcRCzUY6>buhXMVOs1he#3SuT};{9 zXST$<0QnR_&kP=Hl|N>wgQUzGytg<`aGnrzZJjd8BZBsY7mBEc##$-Q7j6}@O3Jf$iKdT3F8C0~1F(dIu=;$3}a zVl`ZCtLZg3Xx~vtKVD{jA2`sXE9*__7reH)_*-E(pbA-A6=OUTQ?n*%EoB~*0YZh) zY^-Fy{N*gvKVf`S7|fbDY(x4ovoYQva5qc&WxuSbIBLDJyyFxdy={ZH3ja@q!JJjG z4$>puGmM$U;7k^zwcVC>v~xdOww9oLh;&|cZjJX+=CY1*Z*}vau5)8u>wk{hMYjya z-fe5QMO{pa8XOndSfiILoMG@iXiY~+Bi2`Vv9_-1A&qCT=YrjNnABp{Nwd4CRm zb6HF=k>3Vp|GBr@7Lq@9jE>E>a6&D017coIeu%(QJO##c-f|nKg z`g>k?L!$7m`8UcV&!eJ`O%kOF!IgY)A=oFGuO%C-Fgrs`yR;%nY+ASJO_c2O8eaZf zqPARPAzilo2VXbK7x}<_8o-ekz7Cz`t77G*wKl+?+o%|(Kq5Ue zF^Qk^6x3RJ8`ETvXeuAA&s#e&TE0Rv)ovS*4%xVBD z3<`pO6$WJ1z-VL1CbHM~LukW!*ualzB5CeyJ+RJkYx=3SGQaiJDV5?0#siDr9##?# z#{1d75QsTSIYqKy_^cjD)EB(B$%DxHd&4hPLF}pvqpCTK2QK4S^&@57oU_GP0 zhPAl!Ey6kgH4AK95KaG>(~;K^YQ~dRacypmZC4ywWp&H{Y8HhRrc^Pa@z9Y-Wu(pd z^G)CMIQ+3+LvJ^yAAU|Z;E8CTB-PZDI-IrHHZec)xdixB6qFZmy=WK*b9SSMq0CPB zom!mLd&$2nKBPVbvWGX`7l|qhSLhir{YSIN>t9b}1UDCH;E{L$<2h)Z!@k{9vdg&F zC*2@Osl&hjNyH`MAdL%Z47tlRuaYKhKki^DK#&HF=Ka~gP-?MatC}1lt?3RB+6BPW zdW=BZ^HJ*#`({Gb2|BAJ&nq5hLR82K19oajI)+SMuIa`+C0-`#D(`(kelL#X($u7V zz@fgLe6CQ#IMlsAD>-_MD!qGG$j{Ps(_NZu!!*6xx8`r{5GGFZ=~y(}7uQ^}C#9XBqy%&pPTMGKF zWAMTyO#fH27%9Jf{J)w7X^kXzLdwH|2kb;y9!(n_`7F%bcT1W8d;Q)Di$MxmfR)Nq zjTya(TOBS(2e<-%GEx)s@nTvYU*iX7q3TRTo}4gYEBZBhq+FRn4VMeHo1DUdhGwbW zgbor~Dv4z}G3-0Lwz-h|GDfPusEWSyMwIu{gCNhqZ#Zz6+aJLNl_GAM=$ZW>lQjei>a5+Nhdpr%LU z;VCY)mq$mP-*GkP;Q|Z)_;YF@&JLMXPWsq`h)y-DQ~Rw0IVwJU0j}ISdMdN5obO== z3-<|m%5Ae2R)IoChQh&YO9m8VbG=uuKd-&l_S$?0`E1Du5EZG~eHLxED6=)vD!Il1 z%e_z_0g>k$I1|P_IA$18OsLm6a$?)}8Sl*e4<<*lIDElj=x~3zpsR}~8YQ7}w*UHh zJ9#?7KICv_S0T@SxppeKct)Z?m}wf0l{x7G)+$u;t(k7m8OURxR1j$*nP5gfALO@lE4GQc%9{PxSfuuj>kb*M-Y-%{%5tZ$&O@~;S1rN**+2bEH| zf$MJvi2caC*udv$VSMTqwLC&+tj|wWUaoS2F)(5bgu>+0l^C3Ju1z41*Fj2Ex1oV9 zn_nXLTHi;1=B};Ar|DhAeWH}Vj>U961x)TNU<%nS5UX4l(4Fjfq*7hIl0(lKfcTH9 zR%m~gc(DG}`|5UFvkIyLRZ`(b5*+}}C4TPJ3jofa*S>7n1kw((f;wJtMP@`ZtO!owk(#=mpR(lBK12+{~QUdvo`%T6~fUJw0j@J+R3;;MD?-2(}V zUj5X^z{e0Rc~A%aTT2B-nT9Q`b*S5AvN}X|PrcE25P=gRPY~*3*%_QFjR5D^-wwP#rx4nj5J^ zS9lJze_;e;pre4A&;)kbtFEQ|wqjgeA;tTs z&sF459ij>SF~tlL$BqaVya28&baxvlL60e1^W{AOq*QncB-sI=GRIOxU*{ylzL4M4 zSsgLU_vJq{407pJ7!4hGL#ZS0NR9^CkRTw0A9{-BH7|92@)Wj}Al*^PuVH(K{p_#7 zNz>tv?|_u(j+%x0oCs5P*g=~SA8aVIcZi`3Rg_%(8N#04ZMh@5*7uvv#+}BXn}Ha^ z@j|m1s1GD^6#$?!l}GCz7jMm(WW$`mW$C{!WxYmrh-#*N$9q?`{Z&%j!ZI?CSaZA} zV(oKul6he`ZRYn44w;Y`3{8KKhURdo~k$T(C6wMuIx~z^@=13Ei~m=yf@Pb5K=WS3}%;*~!V6 z)R>nIs7lJ1PW^pHP)A;V+hJpWuy{tdC1!)P*Wi!<3Z@9F$rpyuJm@Ykv7}79%(yr!m{ZP z#RAufu5oib_euwJ4sq+D0D|0J z4l?C(SbV_Umj?06`9VAhE?UT{z#cX~pC=pXph*e)xbmb|$OB=WfiPb)y}0iS78vwN zSM8spR9!Q|_A|BE1kj{0TB|)R?z)AF%NUUJU*Q6$tUx2qAcP*{6YwtCcs@@mCATh3 zBAx5EWo^&cTvKwSw_+2xvcFwVc4p2TUiE9X>UT1TpwMGhNEQ^|{YJ8(f3D)~NZR#MU&;C7{k%|Fcf0T&%t4fg@6S2m;SXNCm-fz% z55l5Cw2#IKF;eOx14+~yN)t9`7mR6qC;R%2)dV$>UfN(m;0AZeu~DNlYa+ZCNhOPY z_wkq*59<%{FNABy?wkjPKx5>Xb`asd-B_SdGWG2gmWbIO45C4SGRsUA-jKkoghtZo zU4Sc0Um_r?fRul~_nQKbt6qGcX{v7=xxS|C-IVML}9_0Xa{f?^#S@b{{>GeF1y$PrR&*JwPROG`ia#kf%5(rl_ z+tU4NBPjHX(sBQN#|(Jf*_crXuF_=p*fn9x?t^8?57wZFyaS zKq2{YWFeI}11xo6>`Evk!`Hb9wZ;u&8vA)osbSvV0;PZW(pdO)9K0}iI}}1Bbl~uP zM%#jP%54`Js8rR~tryt5@|H_Aty9%21)6kXimY+amMM$$Llk;Kx26TP2mRO%JlpZ#>dWMtpS)h`{s9)>fPh7e zIuyWM68%Szj#T!*QevDApr}z4YX+4F+YNOiHwwwr!VRsu@HFuvQzL`lo|RieVLGiA z6)CX`Tbq})i~N>B3=Z##p0V}=u*miKL3io4A^t;o%mV{nM85W{_r~iCukRx)Z?RtS)Gd4(#AzwwmahAuA^u@c zH&1ptY&20Kl;5(3kxE!HK3?(27>a8#`I8(+;3yo&_x+7%GKyF(kig$9uLx(XEemxk zynxZ9W0S8#0Mg);E^{|bSm=H&H4}c711KP1p^Syqu!jQ#EHXqc1=h&_L_@VW6=hwB z{THwhjppNIby5o@YN#0&93$fFc83-*bk6j<$tiT zP8c~&H1e)l)SN+5;VjJ6Cf{rAs~%sokzR-9>Wx2X?De(wQb``ycu|c08rmhtkVYm^ z(y^C{kg$_xgV1VL2rgTfYI(__KC2B?P=ZH3!-U~?*ECT;n+FF{_kOxu5bzHGweJevLkurPo=V>JWKd00r41WB2oId^SbPi0|? ztA}HD(No*|Imcl-&sTA5&e>K9iuf(Ln1)|X`yzuTxA3R&r%kZ;owHB>01LoU8#6bX zJvFrz8GyXA1Q65+V`etWt0Kw0e7!?)P|l0EpnO2E9m2>CN?2~2$wXlWdU1h%EyuQ0 zAVQ7agyGc{CTn=8Ryyi(4+Jb;ph$wvw$}#H&sOzTxEa^82u_bHTHAlM1vl$+wNg9k z$Jcm1mA#ngwno!CA!#EN;Hcj!JaU{H-l_UA@`RKnJH>L;M6BdG@ESv~Q(6m0Df+kF zg6B@zSd-SnEEfBN)8b0{D}{i3eL`cOdi*szZh38iSGFTXC09x}_4xXj@?y&MAHQM) z;Q75M>CuwUqbSLi>BdBB?f_4(+h4%r^uPqqjw^=Y3q|w%!sAw#YV@+F;8E_F%@MY| zr>eeUCD5-RZbi$Bz^w{&;L6v@myT3kj;g(T^n@p|skN?Z6eOSpgkwwatH~vnHGSToy}H zH(l<GN2*ZKW!G zGvwc%8)V-0Fj9=lfaN0sZY%IU-f|mIjiR7`*18wp3pTC1F0!Zy6fD*vQ|%hVFMlOl zc@O>-EX<;|zniEa0tJix55Yn~s?sc-mM7cNuodCZ!@~C0vRXY@7Wnc$-WB4ElIe$F zp|H;yI34_p>Zsc!#S?~HYX=$v;p%8;aA&a&~_w7k?EqkxME5t8z9kliQe|iF^(>k z4>J&MdEEuqfUDxp%T0c!-Ax&x^$irg20-?!h>OVg!{*Qimcb!d2dY`+ory$ZS&*4J zpK(cMDJX}XmV=GLjzJG@K{yTkPTWrPJBmjlQUt?uHq=Zj?(*$bCqJc%*qq)~@?<*O zPhQ<XcRe_BL4*}Lc$=?Y5f5-auZP;AAp5CH9+22ao%GI^>9eftlQTss!&># zmjUZ5!p~(R3A8{dbRb}XQg1_+&Ek%c!wv*2U>NcXJ*Txlt$gxipl38L7sm`rg{Uqn zs1XlhY@ZO6?C+*cs3@1rZlL$$DNFCmfdJ*kz?)JUd<0kN_{Q#1vq1QMEAF+v$@fI@b^JaU<#qJ+q3baQoZSSS<1S*g;?LK)w=p|IW`v1(19UHv&ipCy-croa4Yu~f#$N+t(E9dQ_tmRCR4YxyZ2OjGkJ3*g1}-Zt zj%*^oVC)T0ehe;~5&WKutKTwaNZv^Zyu~Db+0rD!*9tPu`0k;|A)b(EDOkb9|0z+= z7i&wj`sDd1s96`gWxrj!^N`l3NzC-tj34?3$^v@5+nhfz8*jZ{IL-Kb!?tIASy{6P zo#2T!3m9nAC?`5)LHwon-9ByHJqs6Z7BDu1$JxJ&Sv?I5p@uB}xUIdhsFlmbSbD}U z9La*TgVN>egleKrAG=y3<+(UxiU{?yhk26bC6vy?&evdGKX?!YiN0xMMc9F8buf8T z-)j!J3b_5%r5r5ndjsN$vgtFzQDpZ=xqXi8Y>dUkam3RR;g_;LRV=U@?hz?K7j30ube(2vTXltE7mBK16i2wGqf5n= zK{(f*I=F8{q7aaQl|0mNF?3AarH%`tmx8w#QZJK-cInyZ;`GI0jj8b}ufFq^SM9K9 z7)OMbdUb=3wFSn<%*emdY}C-Xtp{dEbz7zSG$-DSX5D%y?6R7mQhnS1{jKGsLdH!y zKnlRciT1hMP%uy20N3B@ztu!5@mZ}%OS7N}`jlV=UFj1UQG#yVZP4Pvn%(8pCG20d zf`%QaRy-UTqyyE8XO43ct1y>pzSg-Ead_LZFfd26f%HDdjPOEe(@t&nAKn|`Yk}Ck zS->4#PU_?7mZ5EBHs?O2his8B=7vq6cvqZF$ZS~R8x1S+^f$6b-JtN>8^N77Wf$p=CNf*ZxbB3*v z=%hMuw_v^9Q@r0KxOWf!{@Pg8M~>&_wI}C(nUmRf=&ItVK&S8NE97US5W$@Xny$96 zld8lF4(mZEv*6zX$W?HTR5V@uTK9=*IV+&*6hfFOPP`D&3^l=4v;|eUfjUD#byeMn&1nz7X)F$3|=wO*y}5s{%q}t__yy^?5ko3rpQqH z0&Bvi*!BpicHD*IX|U7IE^Qi>fuVw^l?L=C-7rI`DsH z#cJWP5nJMFavIYE&AN|DM0}Wb`p-89}WnQ~Sl7q~fkU-IA#UkhN`u{W& zdf1DLuIiic0(dg6rAoa2zhM~TDp5$0aGw!03{Cue&5p?D!Z>*H*BJL%>AG)-i zo0DK_qFv&CE3^)vhFyOiDRoHTouOA4-^w)TtLm`YPrYvIX9{O)N_#Eg&3kT++jzB| zc?HQG9YW9M76rM(R~E2E6V1-?Yob!f6s;&Cd=j=++@=YPyD*Aw?zVobV! zOy5=;`+^{W95`D8hujRbw-#t|i}PdVRu7h*pB*O4jMg1voQ=s#TeTPBH4?s>41kfW z`9eREwU3>2WeVUolh}9%m?#eW|Ax;=z`0FVk*U7qOSrK+fo%OBd@%%vJpV7dI6;WS z91gI3%b>sF@XEA5G8WGYyZQA2U#NI8S^Ew(sFk^s1qp#FZtyK_bVY1o6&I=hx@zd{>GB;qKD=|k+Bi8m$FKo7%R|Wo zf&P>hi59Zu#JM|?M+3F7OrR}CKBC2vHYnfBB2ki+TY>V$#i6cp0Jt`{+Qdji%~5uj z(`1k7Fef$a+)?$HOHCur;+)TD-ta~Bn!S;do86C(rul<^(#QDB53`{zWX(UKi=3Kc zsdjOsGcKnQRTtz#1^gMq0TdZUmo6h~L-4Wj44o3Wxb`z;s-TQXrmAhiiyc6rSd{BY zw@ACucAko&gx~#ioZ_`bIKEExoWLaM6H3+PSf8kh%(g;Gcw%|kp$?q)-@CLJ~_j#cu%zLROMqv)aZL^=H^t!(Y& zEf=4;9~==oEJ^_P{RUeDN=zb8%McGagg&rR?GwU`>Hk^AaXht(50~QwmIO#&i0Qeg zG6ycMK&*+JD8V{a7|*qmPA{doxaU6QSwD^kiDW-+KV*FmLGtS|^{ zF2)`7Pj5b&3&(h1bK%s55MSd%_q9qkWp{ww@0k2Q&BY0)c3fXMSGrbX_K$ehN@XpZ zTYYu|Ko2mvIGe3NiwcvtDz1{`Do?B@;Y7~eMg>o`NM}`}8WoNH9TX9IweO`GcDg83 zA${FK*83e{%>*H~VLHt^(9at>yi`hl8{}yfC5@t`f5Gg5&3E7g4})WS6?Q#D-F<@Q z=pJ>+o4wpqTmUfjBa+p>vWcp}V1)K+h8qWc${p2DqZ}Qz-9%V>MLfir(g@vDmuSP$$)*viZQKOVTc_Rai4E7*46Qw*O7|%Mm|7mqpQ}+Luv21s`XJ* zFs@3D(?tm_Pl_hqS9kTA@k(tOc0*_!Av#R`J5>MvD(itOM#Hhdv-j5R=TFW93gAZm z@_2F^GU$KAYf>rFmca0y8Y6awwxc8`3j}Gq5bgEOf4K-4s{o}R$~j+?S?lux=4s)M za9v?gGQ4c3YT3pF@yWl%g`Hy+@8yg=Zl4#?{(=$|?~O)DLG12;mP1|`%XP$%m;vrw z?`;Bjq7FW1DoHi)U)t3TXltFtb&!cZ2S&ZOIi<=`uO2OrX|bl~PJNDOZm?G@5WeWv zo^ZnOG}lklJ1KmlSi~>ZvRacUhEDw`F5(ee@VJmt5`jw+X`p5KWb2B+;=(~xsEnfI z)XGxk@=#A3H}jlo0ffji51kRoxqAV7$O2L%a&dNmNL}Aeb+DsYKwP!Dx~+XU{^i}2 zuj$0Pz!(;UZr@uGZHErs9AWjNxDbF#8r-Y#I2-ZRq|ubrriy^wBVC*RC@$(PFeb)-FB0&nZsTPWAl2= zDV;mEcd}+Htxj>^vms@(bLp6)1{OG_fs8LTEwC9DUqG}liLwL_T>;qBI?{G=y`#u6-aRwCp z;+dp;F4mW@5BGv?ZW2$uS;q!}j!qb&sd!<)^p*5}%@?#T?5mSxE_1w zg2}Cwphl%@E$T|DvW8UZ!@bZ*l~|)io0YxB02UX_>X3hni?L6V#gzj0;K1U7ufDQ~ z4bf>|khC`BUvc5M-r)KZL|^;kIJ-COHz^F$=+Q(Y!PS ztTMSk#SyC>)dXf1=wK8^dGq4{xa%YHUoy7gv7m{VnIv>qSy#99EYLaMpQ&FV5y!av zh|s^ff_UWPvV_cR@rB1nY`A-Z58SMaa8we+{me@IeSs%$J$ZBu|0sQwOP))Z-HU(L z+|5se3<{JvP{(6Pb{ecVS9i;Gr5j7w5; zhb8dpM7>V#(785`I4V;>S2=TQ}rC_R?Vf`^VNe6273UvS~; zK3jfuF6GhYhXB=yqCsarW}W*Ge)Fk?a*OOs0+ndl%?)c+gm#Y{-Cy>?{3E!~1qK)O zz~F*?jq@Y8Xjv(dj-eSLL7lDF#+_@?(9l}){#F@AOR5PH1@1eS+}6)1pt;~wM%`&< zuh-np6{U0md34PM3@&0QzJTQ#XK+o{DjDKX!f^Cx36N{39Oq#6mpEJ}hd{A2=97d) zJgQ%47hlHA$}8`PyZ;V~S&L+Udmo()_Vxfo(t6Hw?P$@K2l!b+(5A7wxW8PfNT2)P z6hgZ~eMK&t83G0uB9P|I6+iW!uAm9~9++km4KtuPv`r#+K)&R}gp4@jey|sFidNEc zP%rAOn5({QK=$HXdEqa60deoZ0Aw#RL9%cxgZ=OU2Bv5+e4`*8ILmow={u<~)qKZN zW6(mFXq}_VhnC;h6U$x@iuSrxM5G8eP9ZWt*tY9wroNQeYQ|>hS!U}yv2EQeQS~E0 z5D}insfnJ~ymed+n`^^60`G;N@Q35nI6xn{H&%XEOnIC(S_xpc!OX*jc80H8*6BWCY z{N)F)yOLjQkGWWvsGCP%q@WE#W|VtpHFM0I_c)WrKr5{mPXMErkEK>KXHW) zmPH2Apr!YWK=n>=r&(F$H!e^Da|;Ylg1_j+M{ZG%P>iXxWg?d&;QP(}C+ZMGy;=nO zIdv}6<4EoO&d;5lZyd5rJOKUGB_cfZ@ zZf3J-W3w!5Pg$agq7C&>c)e3R{i3V!z8FWEpgcA4t3?JE3{!2=N!tE|*fLXCtFeyP zj*{0d8&P3-Nv=du?06N6#O$ow%jro3%pY?_Dr;5l?i?o(M+hc$zNq6VhZq-xEJM^|CnIYhXx3LO`b z6rIV5%5HTAI_Uit+*S#yqM2Lz>4O$1)aYOw$&XKr^+&hjA37}bAPxGr0_6GKwt0X;#Z?pg!k$iBuUmrE8r_! zVUN7CWxJcPOKSRHPAzyqv8ZR*_HD1?PxT@dxCptWt)}ftpJf~do~&&M6GX)D*(HkM z;CYDSFrHa$OxjMgc*$(0?6Y?D@9;5sw#G+>DK^Ml>xdOy4e23ySyXe;<(6-E;yO#4 z)U{9`255V!u<)gt_R!V~MN#k73rQ;w=uuhX#%r5^)tiGg$YPvjAtP$`n|672+Y^U* zwI-9rVrZlH>IHZ9?BJb+9jG1m_w`Tvu>3E{jX zmbs_^&|74J;mI=sy#*}LTQDnVh-=Z@f0%3QgnxXTt%+#?yx4mt@fhhXn@k-hQ=$LU zTTDe%1*AiRp?5nj@Jt8)LQAn|(7AI+v;ME@#gAEMQ~kTWbKU2Nw?~VYt+BP&`{`tW?LI|P=q5xpY|J^M#MJ;U){-~K2^5DTz}AtkrXz*MPFT> zJ#+Z+v^eFv1Z(SNV>8LzVU6;&_s*GR4%`9vYKPNX-F!`A)xA2hh)MLxo zWZkALRy_=iVMZ~~W94vSH4$?xs%cn=*s#C?#HWOVGn-iuQwev~Y<;T1l{1^tL_jhh zI8s_d4#7&;N3!@WcCdB&*6!(yi)R1oX7gaKg-+)bt}sDdG!UGePAN8awd;>|Wp$N=3&nJj zM`S2FmVVB~dZ$o{K&M!0Aq|XP$lzwl!w4*CaG*cLlKtTp4Qhxuex{4FYQX44B&2Ia z?NfT|>*|QnPNl#rvy9jcDE(K%glbV8CSN8%!~$DU^r0jdM91|5uSR=B!jW&LjtPxh z{!|?{|9#;6!{%obyr?1-_A^qKi$^mR^POo9Vy9k5Rs?sImQ$n~&BI%^_-zgo=tH2l z_ze}O*T8ljH!mLq`dd;2_y!)|_+V&Or6NtGV@m0#{ATN% zr%U)jmvWHWZ%aLSYO&1gT)`m5<6TiUqu=sKOVU;sv80vHtH-7Qhm+3$LUUQ_R5POl|4SVEu~X; z0<@r(rVLUkKg+~OHRqkxagQ}}7D^v*jp5}WLW@dRDN?Y2`$UZRzrF~zLFT_iuqi*O z#4IJ0jJCKLVAV;SLT3x<{#=q2~aW0F-Yg@b8hZZC5I zl0i7gFRzvZxS(0VKRdmY;mxBvNoZ`a#V46}OcDgH?;WVUS1;m zd^1ahBBoI!KMMY;UL4vR(I)0DFdhG0y+GVwW$l?nzyVe-hO?+@I1pjJ_>W6q{qYvg z#KBr}T1bDY7k|7(vM0fP^6`81!uP#;;Rvi=9I;ll5fm7s9Dqn_)9StdTm)ENWrS%305sB64WQf>m2=`*2whXRAz>lAz7I z!u8vglI-@j#)AGgAcQ51066&v9ZQOmEqI5L;Q|hqc#3sN?^MRMV;O@^lNOyT4=PbL z=}B-+S3x7D+mzRQ=K1_sQ$|+u!ib#0{DcC+{Ow>27_BHFuJqC?T1XAi!B9dFC$oA1 zF@kHJ-IDqda8#doumoSB<6&nLpU^z6x5HCV5ALp`ne#;ssS?bUoQ;3AS_M>gaQ%Zb z(!N>@%Hj9lkU_b!EvN1!ZEnE7M}>?7qbM#@0*`(|R4SnH`vIs%vm~7o)kEaWu2}qq z)v`2UzO7#>9x0%4=#1ukGZ(tDI#4O_{NO}Qz*M=QuvY7LWqSPv=Mn2?Ze?2sqPWZo%m34FN0atzZ{ z*1+S==?3Uf51oI-R^tOH#FzT8?03B+tstA@l5}vLdc`kJPnEV3Tu2aCtoT6%+Xcl( zQqF*eyV3%n1^Y=!XOg%<=@KzV5P9fG$rRyNVY_lGe#OQT^o1S`zQL>;Prd-{RbKV} z7mPz&I4X4`Atmcp#}$Ss+^=;(195$9WRd1$)mIqyJ1fQy${R-|dkPgV^a$L7ukg=9 z*1yu8c=Y!GUt{o8`OjUPcjKnBVdkz$@Te1#$-iX+qZJ)TnxG(@Bx#yrf!Y4gpxvV^ zG?p3cpFtNi%)Iwc%4!FLv{gdgH;QhynXyihi^{~-2p8CC;^x5ZiXLsPE}jIqZ5cI~ zYO4hV-D>L}=R*uF*Twj^+{Y;Sv(yX(L%6`d!GheM;@wh`o`Bc(&Ge!k&)52jS&Zm8 z7B*Oj+U%?dv($&m1o(f z{T{*i-mJ)6S=H=49sH|V(bDP=QbRm4MF?zGFj>G`nJQahZ}aNEO*42Ql$XZ5wA0^E zH4twQ2n|X7cE7DvgxYkn)T&Q)fT;mrM(4ytpph4J#Je%(pKCYSl6s=l^uRIZbA!om zHY#>{<9=A`*4Kq|;4~F7!_9)Q=Yba>2AShvyy5x;2xKX-8({_$LERg!D=LL=##1TN zD?C8P5zxL3c}`vSr@BFq*xB+4GOK4Bnb$8M^FTXRz%r9yqEB9s;C1t5}kv>z`<6XDs; z&{+X>Ue~`+hP`3nEb&l!JJZ za;Kd+P$cH%Zu6f{`W&O~x2A=NrjRkeiq210GO8?J%bXCx*6=_lpx5>5FVLbr^GT z7Hi1Jm(9!sV^3jJ!O!!?ew=%-OPa-DOQ0cgemxKf%QlmYxq4T4;P?=~3R$>Wj?UeO>q4%Y{MI%C^>jL5^ox>;YIBK4?f%)4Ocy^Zqv_t_t zhqk|p*_2@2w&=*B@tD1ZrzXbJ_u}Zb4KjZkIK(!q*W)~Qed%BlCH6FFNvm+}Ujd;b zCnZ=Q^F>ZiFOGG1wLWYmKH7x!_GMraEA`(iPgjKC>{J&sB*ZAM8?{3|uEUkVw0>GJ zuZ@_WsogXCq9KjM!A&(F40N&sue$h>_A|AE<@EZq zlE=|JUbuwHfW&urVe(p^WZkMKiHKCC{vK1z5{X6HVzv3OK8FCWSbvt@_$bS{T1!c?UM*p7q(f!#5OpLe17ay z_bkPN*zoo(1rd4+RnTW~i!Juf#~z#{y|(G=Sz(oGE^*P9P(P8AVE8eFv%kpte)#R$ zWPNN`;fk0djCZ;N_!{hgp`>3-Q>Fk#@_{o6%EBPyexTCX!8?OZ8c)TZn&{ZJ1pLc6 zmD5hQp8s!T?^ZSL_1WP2p)tDj2SHD zgoN^{*&Vi`E%9e&?ghOBbi(d5&|D}tR!G%|63Z#sDq-t@_?Cfx&6!RyA`a~9zlU;# zJca1T?B7$e^3-7)*s$8+x^=+GJ&Z2d(Wn)N+CHT4<+FqafLUlQIfK9i^PoB)n2keu zb&Ae_D+*jx2Hr-`AGd+Jr>+#MPsproOJlYiGI6X1Vk#Y>POX%wFY zxZ^o~78!>TxSnRQ|FLRk|x}4MowkyEK&0DIxf$XA2L0z9v@(vR=YYq%+ zp=#$6M>!lZ1wRHoX;|CROzw%z+N{xD|EC1Pp1=P9JVM9YRmEN{=TC>_)47V_sQsOq zqtDL#_-zB9c-UXrB54aj+K)zk{omQeF`pId)F_E7VNzY^#vaw`?pv(F(!73C&OR_+ zF)qDQQdcyj;(yYsX!%>It>?6adE*dvu((K_yXwrEwS>0?UGHUaE|u?X%etV)ucJ)$ zo@(>rf$!Dhb!TJw%pGzpCD!wSUod8vhn=R$Nf_-0)5!P}E;_wALM677F5tN5(irLb zuXsiN&4Ae`yOh9!!4e7vm#UO|` zjS}a+`iMVs1dnojF9%=L%%&>rMh@t2x*K{OUN@VF5b&vZWE)$kann(cEZ{)HjG-l@ zLn;$`t`K+TW1TfUa=xi*TJ#-)akN* z0PdW+v*oR?D)I%g*VMs35$)0~Qf?oyl?%Wy9@8tJ4y;#f<>KZ}=;m_rz&=Bp6T7x; z6KBb7_7Q-0_zplJ8A}+8X!WVC&!LQ+I4zGqY4s-7sy3#JeaI} zN*utYHeL3>z-fPkPGcR}x%4GFj5yJf@2nQsyqm`}QkpU)ssvia#Jj(O6)io67*?&J zsb0v`?tC4fMTAmOXeq_3m5S zPm%qd-`#}@7_=$Fw`Z(ck3yn=~&8}gH}50;%Osy$j$G?r=ZyCb^4nO4dvr^c}_M>_nHAmIQ}yaMb55wnHBKQc_kVv_N;^19TTM?%jLhk?t94eV44-rF0jZ zEx>q1fio~(;fl`Dl++B2SBQU8%LhHRA;88*)n~$cF^V*Le0LY*tZdqE z4iyNME_tn_si#HM2{nIw3@Y&XQZ*L~5xA(SNeXI|eA2ME;%G5BFF*Uad)`Goid14N zk>&2kh+lkn0MvPBaMJFjVcpK^Z${VD`T9|$#8DS^J+1Rkmbx;!F5et1*Hu(z0}&)V zW>7I!$ZNOX3}+s&giLeI^9A(Uh-e$;#=w9shaz(L+-6C?70_)J4kGho)L$(*YuT{kW)*y9sNrw@j+X zFN63bc_DGTnc~-)YF~8oqvZv=@MN3F{e%hAeu|}LrLa+9{^c$%jLv}WV$j&|K&K=k znfKQFWxHHJs8bXCD2~K%%u+JmyS{Ix&|gh9`*RSuD9z&FU-1f~5x1nGL9Y08zA?nd zH}?;;;dplk41DgL&zXF0hRdhT9_Ivzxnl4O&L?pOWP0=@rvr%6cS$bav<((8D&ngrN=hp*|2zRAk zwb~25T%s7}a7~{Fwk!I$K^*5m@`p!K5=zqV+v<&95Z?w2XD{|H`TEzY7GDjn2CRmU zGktk9g+Sip6{a;!l^u77YFYv#v-uY}G8;Cd5}6JlacUNE?$R9Ez<9+`GG}HxPs9-9 zA9um5KQUd;>Jw|`4$eQRc`5KCdl2r9@3!-;v zC%6w_83BQH*oEw~Du`w|?CakZcQ+iXH?Hy&$sKN zWalo~H?a?IH6V3qyH$R-HO_b)Y#g3B`9tzn2=jaX9XE3sW1ii%Q_&P&tAu#u?eFjc zTbk%qz(ILjn~=h5Mi(vT_B!QWVkS24YbeE**wGvNiPavJ$_(sSfd z-R_oRGNug6gIndeisEO3uX}9X`1t4E)vU1#S1J5?B0C>gjH&k6bkBQ|FSTehe3hvK zV$Zjtc1maMESWFIl(}^+Hg-p_??0|m8cfLWonJ8RBoxn>+{a{c67KO0cBo)^U>Lf* z9#ySCW?<=bTk_s4F5ol0*BDU~bNtN8^U{@gQQ!ONv=D0yDYg_1Y&Iaz zi^RRgX3mqznpeANzA*UbR3Rnt&gxKKLZz)xmJ~(Dh4GGUkurhKM#EXzvU$`gzCXq~ zOGE-KsNKhVyFnO*QN+R@s@tNVA7dMrl)LG3p)h=?sNOtG^EghGOg>+ z**xa#@u%pal05s6r>RybduZe?5ZpWymU_~fDb4-Lu=g{?QnF_f4?T9FK7B4VCzZR9vP76*_OC$jPSl)oWR*-N1QyA)5_|m-vZwC=KdyiWkW2;6(cWTJ5vrP8v30dE|<`j*&+2g4T9phll z3#avA$A~B-5;fo1ML%>b_Wf@lyWq6QpX|vu!AYOGk6r!3R>q`yIQ;0LMK;J%UUeVv z{j~BN%{rW{-B!WF#>wGe{@^+DG|g3uS4J4G8W|dSVHOvX0itvUDo~Xanzc4w-QY?F zH!np~9J}6fLwxVGi%mVPhtxu^1hgLLE^0UxgsukBtiKtn;hx!ut{YKPp14emDN3?o zUmm8E4p3749G9glJw<@Ej>y{dR!3M7uT=NSsg7qL&m}1N_Jd+xbkRE=3{jkoMM(wp z%keea09%*IadIhJ>&^7bE!xZJ{`L109o|IjK>~#qPWC+$DA1|Umchm77PSoRL#Z4n zw)9X+<+?~aLd0Vu?g5skp2vqHK>jwZ6z1zQfNxCs;PMM@H^a}N{3JCgyy{`j5-YZq zmGg}CPWQd8r~n?qb@z1t5n!)^lH&C~!FVmX-@psOq!)Q6dM{CO*+NKa_M;g>*a91U z_W^C~O%_b$MC0>m|=+655T4@-X>`Iqf)a?xWd{`-2n)zr%-{<+^5CT(boP|~eJ(wRv5 zG#W5B&q1--crL~G0ADSYeD)$Q9O`9&W#6q?dt%uR>u!Dmk8Blxv8WV@s$7*sSmSDE zt(0<3DREu09NabsX%YUn%vaZeMQaBtZcB;A494%I!rx>1U%Yg8xlk~10EhWtsMbFr zgdLg3(+8L${m}#r@RdO5P}&ng_YD$tZzdbt+d3Y<4-m-{k6UV6W_h3s)x>#N5eQ_F^pCbe}Tv{_X31c z%{iE#7>L`0nLK8{Hzq3uF_ zw;^@bYq-CGwF+m}^uk}_s3qf$LxKlfzhQQM1s`C3LX-S}MW|Z7$PqUw`K|44rSuL| zG$D$T-$@DNx{M){^)fquLX`X4>Y!;-P;flSQhgQCtfFP!NLh(LBE}6AQ2|!8wYf{-=%wapY_J%t6d{8Q_i=u9FWYP1J=QLBKK-L6L3I_X1zu2=oM3DNVm+G;5xeMNk+R0K za_P{9FO+1f6g-O7t10iV6>P@U7$`_!s=|!_a1UcwtG@A6qR=NS!)pSKSE*r!G#;eb zzjw4OwV4YDiUD{4OO8M2)RGi&V@Hk5& zsfg~0SY|+N{%oZD1+o2>dRnNPLa3R%r9ukCN>UHRt`eQbSn{*W9Lh%LYI^I3qGRX9=;Y!3Hj!o+CBxChR5PN;s8XEk8CtS(uk zXq_crCsjzuwol3z11|~zqnDTg5o5`lQ{4k;6gyUhOv56n4wIMSiqF1P?vhvtZVu6& zTVna0(pQ6rDVgRx%%KOZq0W!a$f&(+zVv?~6XrlNfx`MvGBF7x6BO!2vF~I8=FRNO z-(;d{!6m6*-7v3S3u3`~zVL(YsH%gh2hDafN`<80@m{C)E`b>~&5#QDd_ZSou{{=| zOos%kynRU7*s&E@*bE1?O@9NbYiz}3s@eDvS>=<5#$C7;P0p zX7kJ|Qiv*zkTk&btu2>3~}%pqeK0TnUrHFbj=uw=c<7 z)K?YM{Us(C{)h<~pqS9HSNTvK3DC^cWgarj$TCEgZ<6stk?{2jN6}p56}JAF*Ue> z@Vr0Ro0ycJ@qe3VTN=RGY_G8f69rI{YNtTWfbeyDu}mYFhDsR8bNg{tS|*pR*yrnE zE`Ohs1A&3w#~Bf^+L>UI+rm;l#b3y>Z0q;BnfqfVcHhl}txQ(#e>W3Kz5k1u@X3^W z8doTs2x!xA9#*Ki?X?gIQMsKZ)<2!_ZAjgtCPmb;oRZXz!{2Ep(zXc0rijaLa&VzQ z-tpxPKoHJ1t_Zv{0kNPEcLLsrmD7s)L=}Aan2a~oBJyL#|65Bi3&9#Qe6U{3s)g1dCK#!ULgm;r8Ar}}-j;vU<5D)aVq zdApO9@Q9gZua8kJx!+trw7s-k(0UQZYZh|wTdcv1fGG3aIB>mUkfu(EF+@{Dp&+%;J|q@6kGw@|`xxoWy=Q3Hf*;yd6~l&)z%Ma9D8?v*rg; z&jL)^NKA#(mIeOGR1`}wE8X#s*p~)iZT3TUjRj;LO1)X5>v~PI8xYrt8gU2@d@;D{nV#s>2 zNx7EX=U+)e!ym3=fb{ribrcSdx55fWSKZk`;zf1sAVsQf%Kd6`BmI zYp;&~$W*+%XDWyjoJ0wriA3}cF*Au~(_M8e;;I?P68j{j3^)k4NWuM~#zzS}ExSIh zznCxP97TX%ARs1nz+AN7(1&lm5uZo+cY6hQwL*FP${ zCPZVr1p#uCS;`C=$`0qDUGeSyW%pr?W(aykj5}}LNCGytJeeyCr;j}?$47q$f}g?J zB!xVYL4`$E5;ju&H%R7K%lV7U&O_4PtLNnFhQIUj*-I-VkWdz)gnvV@zlXIRrAhS$vU?6w{}=l z(|CXQsD2$-J-F%!vPU`VhlS7YnF>$OPi+9PX}x3CXoc57^Y=`}-)Ms3zoUtY{|!yV zzM}~;mkgNoWcxA5`XZ%#ta9hBR>YE~S1K${1RvUQx=lYT9O_?AQp)~SsW{1O_nqJJu937oM*ZR^iF9pcSz6D& zwQLxw1gR{1nC{@pAB7oQ%38-1-PqLa$m;b9$ z0cchEe?=456*=G4VLG??30O$2e|(gSzrnd0I>Ss={a!Je6YB=*+8RzfrAa&#)VZ%# zFnU!wohT{+7G8-a2ZIJ*bs$=0uEkB7-6t(oG-$B(68EHX=(c@56?-qQ)1gn?umum) zJXiV|tKQ!LI(6ZVDw0%LnOFjV-7xKRUhWx%r%VuYF7bwq7B@xoNECTcjdF_|bYAXm z=&H8iT4S{W$WfJ~9QMv2Q{rsfmHs32%jv%x72uQ{m8k!{QBkZJ zZ&Z+iwLg~%@7xwEQ3Y&N3^eCr(#>GM#;Gh^0UH$&fi8h|j>N3glpwlcACiU-Y7>87 zS4j*8>0lku%IQ#tkWR-|K(cBbFtJPWap1dsDi0vCm6feWc;@CGW`~S6b&Ud}6e+SQ zsGlosYfw8tp@1#K0YG(AAvwFaAw@0Q1&+ymD#o8Wb5~Q$_IRSa-}pMwpm~T7`Lrp& z>3s&p>Z$+_B5dgZ;wse+_F|n9`TOp~u;0?54{}*a6ck+8X=A>vuBEGg~a!aBzP>WR$9<({h=)d5r*J#Wd_RaGhq@Ff1ylE zIR?O@#Vcc|A8+3D7(RP)Z-0_Fywst_1(xHp5&JIYWqKJ9#P~G~wmR1;=T7bMG!7qK zCSHFp`fR<~$t*O~%gJEdCJc$6H`lcYX0GtFaMZsKOeWxx8dnZ!pDQ>I$4Fmf;rWNm z6Jktu-dP+9V)TYFnj#0;7EU!f<^-7^EbCYJ=*%&M@B8yr-;=?7I`U`b9LL+m>tm*0 z{!Ua-6`lXkdrwr%b%s*!ljGHJqE*Y;z*1p<?3eDzM?2truI0BM&Z5Gp>wwq8^fH9n2|cGMSR6wY0mY?Qnu!oN*(_o=ArB}id? z!h8K;cw@q#8X)CYpUrbTO00@qjeF?FEXx$0E0oaa2!#~&J4om|kx_XWqiOr}rbC3C zjvMX$47gH@l+YuH`jyuvtaF2@w1UY6iSMSXFhD+Fz6`d<9{w9qtnK<#%kw^aq#)%Qk4Rhm*x=wt(f@aVkn!|r(y1QcCu9B)I~ z^+8z!Zs^ipa&WA{ssY8|qY4rrFs!M|;!38azR`6dsO+NV8hIA*SEGW1jH;tIWZ=;{ z@W9wWUaUCfHHzs-Pcv&18w8&t?i1)g8x_Q7!RrB1b*dptaTa_kOR?_e2L-SlKT;(-BZbcXNGT8mo`%q`jP$5y0X`L)9ti2}24eO| zIXxNKj8^u#dnL+^fC$EG5RAXD1KD_v@F^ak1g=MK8)TBucYtWlhOphXJmP+%WkTzN z6(Z*v%sQ`jw(ww~Wub-1Rd9*0=ZvnB@OPqOPEBz0YpAe}k(6tPZFn;Y{H)znYSf{l zhC_*Pf@SrV-86i;$MCf@=)scVU4qJ=L`5>v-RXjR^jtkVTp6fWVjo9=Alwn!N|&ai zdF~gzA3X}#o!(c-Ftj|&Sx)YcPTrKzcb_ofWZJAz!nNFRSyjrD`VT>q;7qL%A_|$^ z2k?x)9kjYrjYu{;P`f_ix-lQ)awg*AHD%0AbtTH>Mi>Q0{b^MEi<#JW{0flzp_wi! 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 z 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%0A0S>kBlGD-u&sxDNd0f5~>oWGlEC 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

+12OlagooYSlrx%b}z~sf?)+@CQNt47UqoPq; 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�qq5W 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Π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

wgT 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%0D7`xuREf7XiLah1D1NDZs03~Zq z;cY>0{FI?o@d*F;8D4IH#5}kbL#&FVA8%~B)?sACP?j|CboZCRh*dd&< z03D!GM-o2tH&MUoRjSd>dL!>4MA4+Jp)9@bZOb&A@oCXbR(bSjFD!nNj|@Pa0KiGR z7a^}1q}>9bqKZ}T(;adNdgBPuZus?^rFO|Pq))(`g?di{r7j!e65%baexg)f{TITX zW4OZ1t~xA{8*)lAU|TkzEJ6b|@LIrAF|awrxATmXdARJ>!WBdE`LvXh`&u6O5y_g4 z(j!=y(!0a*AcQA|^u`WZ!vyyWu$nm6L4mY;hkSzMV8$qMi8LbO7LqbmTKa5;ppn@o zB^cNWmRRUsF}$&NIlVPS)>kFqPxu_6g~iaHg38$oQ6x5=-Wn z)b|J`=wLxXP?l&pPjZ>5K22ChLpDU8;6P&GBd9Cd^)SZJ+iCee%V7qI3X>$~@1q={ zp6j_r16Qmlf`r=ZS-{mN>dgaLg&~gI($Wm?qsNa}fg8DpdH0(^$_CX1jZwBPl8m31 zE})}#&>C4{U_m>@-3}=2ZpdJ!4L%*;CO2_q=Ep4HUP{v)mQ2!awKQPK*$r++0F*R( zI2I{*@oK;`REYv^)o~@DbhS5_mZ!oGUG0MI*54_gbEIG#(}yfsf7tz8-unwV z;!*2T+DMyJ-7rG4?*vC^=QD?{x5^G{^>>bQ-UpY!*aiZFyX3e#;V`VABZSh}d7tJm zaZEaUKyq$II8;-pC`k@0J*f|f`p?2SI6-n~ltCSgp97GjI0XQyMe9vk7PE^E)XGAf zFb>0qcX=GI_7#$O(kOQMcUe@?6Gw`Ec$Ep$1%w1f7Gb1G+Xdwg8NxASvRb>WEA8|X z2C|tH81|ZPW@ezMJ7Inj(;VPVNwHua)n^!7|L`lqu2zzJsv$fQ7fsQ~LdXxIZotHXxhE^KmAZdQ;R$V<~ispd{(b(X2 zIWv=RYza$v-JhGwPj&{!hnXl+g*OK@XjL38hDQNU=~Eh&66kbeaM|LHEtsYu29c-9BrWId z1=05Se_bj?8sO(*a5~fsWHVEWkT~ti+o1tTOO_N5R7eT4he*sK-1`y<=c}K4j zG+D^_ch9`4d)#sX+ZzZw9Pj?|6aB6w|17NXxE~g|2wG%F=!dV3B}?!OwurWL@ELDx z3NzJ0!b>1Ptz8~7NEpwxtk2ubm5nf-yP5HdJPC44>QODc@6gfSP*herX)IeVqOOh( zl5=ejr({0G0tw6O(^;g?#(i)yB-w}l0FA8`9V(1IERC)vjf~tt(r3>V7>%LBe5Zne zbsTYtljRiITlx zH_!lVYgPH=`XB=tB8CXCF}>0})PqND!W~1%=1!QF6QG>WlhH-A+Xh&9=o!+~!xI8N zR1et$qB57u7Fh-_An%{y?rnfG1%jz)SIo^aMD?S`VD%No5_l&822_^o9)Kz)m;u4t z?l4yHBg*H^7Q_@t-Za2-{69Chdw$7NeaW^ zDE#c&obbHj{^Tb2O_|Zy1KeE0!WazvVJ{GAe>7^xqoW~k$EtDmQ5^Ck$Afe^gsm?c? zquoFmp}vY8<$2u2UEA|rOHqrL`qFNRmaFKFkl-9|^RN=y)M83crzx&4O=>GE)x%#6 zWRKA$c^qUVD-DSe?S{#*6K@qijfJ^E+mdo2X2o6DLDw+{ylj=1j^o1ZgklN$?TGqZ zz@R3tch@k9E;hlRq7|7~AJfp8SlTfGuf0^^4$t6eU{OTKV=fS3Z#Sd2?JkhCw<*U$ z^wV=%v8j<>OdwFFH}{BWvN=EYI~{kt^2(|h6asxdC40NAz&jc#w?@q*_gXj;A3H(f zV$QI<5#E#ggQAltz&AJvX&-hQ@GTchM)?lag>>P9Ui9NQ=IW969?pGl$jaZ|G|6A9 zTGFHmQe-7}uYwS`X5?8=MR;q2W3}Tk#eu5zj)Cp8I^?!u*Y2YqDEK~Nfkq{s*^w5L z{g)P=BDB(RIHK7RB$*6Mi`=BR`~wIg3S#1U3ryP~(lM-WM|1#|2fd9fMd(2zjjr}u zKDS7uiffDFB%W?k0sWF3^mK@VGEHjh%1|~q?x$S&(q7R4gBF2&b}jpuX1xx7ef zpq6nHfkt5w)ZeLn7u0Ap;d4U|a=dzosS+m2)SQ?IAg1R{&W9tgK#xP#ddz*i#G*8H zamnnaX!5704=qEI5DDn2J-~UzYM@gu&*Bt(ZR``hgvXwmUx$|@ zb_6_DEm0Mn@;{)*p+51d1x5d>a+Ago^dsF8+eh~PP#cz01@D$_f47xr(D>u1+?4O}SpCQP? z@EL`Esm8r`^av0CE5e9_T30bGDc+rR$e= zV$BgZw{8176O;Urdoc47b;U@MZYUG9DCm#FL1_2(?7BbzFdf3hUPTatGBkPwB6?&C zqpZr!ZHqRxvm?5gc6e?118jvs3GTNz(AP zhROop2b5c6N7!zV@7X2lw;ID*q*akb2`NHa!-${Cbs)fF5k&Gsc$fEz{)^>k`CMm=Pie(#q+tA&Vf z32QyyK;^;W9m~w%jz~-P7a0wys_yBNo?3wSw(baBd%TA(*Rd|)p@q^oqQyt8SE|&x zR$X1_#>sMEhH=Xw?>fhi1SLTth|JVW@cfDFfT6QDNDD?#X&L(kx(OK>hzp*?Hq|(m zUR+Y@G(}d=ZVv?p9s)>p+yo@J+=3Rg6=@m`zqur;V$qRF zatsJaceD*hu$pCJKy2ou#wZS3&k`PSp3*TFVa5~_DB1T8l!r=8v#^!s@6XF`2weUq z*M!@br5fBq?UJeiQBVXaVw~fj#fXNQOLu;QZypcPLfXJ7VE!JQGn&f~z$#^Q z+PW6v29XZtaF~ahJp=$R@9j zY0kskIpcDKXz%=`L8HJmKRj0ni_oobNvEf*^e4OLAF z!hO=PhB(&UB|y#}NR5^mrlJU2kv^BmTx7eE=_srH;!SeuS6aU*g=-m3ix!XQI0OO{ zu^RaMFxCQ>%paXXJC)x!+u;WL9G9T7;M2HF2aDU(XOYORY_3cHV8k! zOn*TR2j$a?J-tAYc&!P0dq(Y%L0fYDq!IKeTYH%_fMiyd&Srx(UfAppikr6YH(LfE-kX})v-5E4>*`R2tSB=4{GKNRdn0JY-5qD zKIG&GGErQ|;I2A9leplL$h@~!nVJ)S=iLoQSPHH~r;I$Yg|pzuT)*2cmuwbbDreX^ zEs_kl14Ro%5fRbTo`XE|To`yBJWhZr24Her+L2mzA&H5gm3yV8cXU^Ijo{>Nau6^z zq2%<7wS(R;sEa0pKA&;|({4D!g-@+uPxcOPA{eKdc2)92&hDV8mTAjf&Hob>gyYr# z5nvEe=L?*}e>pZw*EwUn$W$+(czS{uOy6v1iYQi0NusUryf96)XOwNWWGr7`La1LD zj(5nZO?t}2u$??v3XOy!!}?H09q^lhs$L)>gc%4)BKO9~2rZ>_2ke4QLu#$>cE`hB zTmu$RIc4dE1Zdw5i@WO{F-OkuwNt)~h95<7pLewL9)QDn2gyf4fR^a92P6DcF<^O_ zbatGeBY++`M`#7V&{-o)K;Pe{e!4-J`=t^Ni0~FcrXhIYH*6+sfVI0iLs(NHr(L%p z=B2c9#BP8LhuG~@-t+BUlJb?P5;=7+k)us`Ckfl>E}C;q*#q3TID+2+Lu8A4kjaaC zO0LDoWS)=Sd_~i3`(HU9F&2iOB+s!qLVp>^C^ek)lRdjWg}k->9t8}PCz{X6Ta~mP ziTqf=hC?lOj)HhVwsDjoObDrV!LbReB&eLc{JOddwDy1ySiQ4ds~S`V;plB!M4m}h zpe}T&mB-hz8cj(if2dD7ObdRx`g{D6Xx5`=j~!G1Au;G;OVO_{Z7aFZU9*6dJUsC< za>^yNc_N)ffX3}IN_+uZC7b2dJ4X=C4Li<-Y?19w>RzGP<|&c=CVJs)T*ssmWEpyD zwsvklBw|zu%7?%Jd_aT0652dm8Z$1}H07O+BLv$3_ zf_c4n?t6)zzyUae*2n-Iu15F6V>=5IC0?;*m!Vk6rO&RIu5tz#mOi=qaG_{o!JZBX zda5IwND*uYb_Ci4BX9N|`4*FBP=U{T-+qWG!nqthqls#T7Nj8nIk7|PA%`V2O@g>t z=?r2=3QM$DA7kg zSRq82KAzpc`Le@PjyKvR2OtJ=@BE@nlK{fP4c6 z2vWe|N#b)b$KYAG0BH?SUzb@#SqkW@=Y@F*UUJ?PWgJYjn z_C$@F*e>}lV;Kh{G>P3zmy-wvJ7`W!cKsO1u9%CrZJfr#TUlKuAS^(sFa6f1`udc6 zJ;Gvi{aw$1V*Sn|Ifq)VNy%{u*DK@_(2l&A(@z}{KC`UmQ`QQ^*2{f(E~TYtM7RAlZ7=dI7rX#6-e`E>>-!dMJhZvwbOLXYZY#MldE4?rLn1RQ<` zqz;Rbd*CQLx8rX4jA#Xznl`qvF?fCMGS~PG_zgk_7r6>n0fuyG4XgeOJ(BX3kP@9y zJk6!ebeC0w!-6a~kel|#nh%jk;U579df`*-uyJC!Z)LalSopA@922~1N(gAsEr4@x zrM@#n>yo}>8-^$ZeR5gJ|;H9!zN9a=EYbet&G%S6E-ae?$Suw2w#1g(w(12MZ z1Wm#XB`pt_BLrd*n1g*s3=HXE1}Fy?)vh4G03C>;A1q`*HE^;co`ydUV;j`!)Tuec zL~sd!7Gh?&CM0z8NuuJjDjBlakgl`_#vXmBBEiD=DLQa!AEiiD3SSRVkX{1TiY7T_ z2m8*?J|kK>{mmyZ=)J)5Cn^L$hO`dx@j%}&cLtYe*=COfPMVe&qlEP^#+`KBa=#2& zh4!b~D_{|vwn=uTM$HU4BJjR6-;SlT=F_W1)?HeKKqJ;=e@GM35H7LD7cSFVH-Z`Vn>C-t zd~~a>*3AnmJ8pYP2?)gSo{{X6XB=}KW|^|tjz@S(mPp&Nf&d5|lvKI9^fxLgN&Wn} zeE*zX&2WYK8nlnM8eF>AHqAVV8L25i+@0meUu#+wdWW0M{@_)M-jl z8(}l_{VD(Wv$PfXyO6{%Be!(R8=ImdG;tZnh9pXKbYU*~Fee1nK;K@>;~^419r-II zW|TuUb@RSK>Vmdty+PUoMmDSXim|zR~1? zn^QysSfj6}vnDFzv)3U_SjL1X6$BDmAR3v5R_CZ5;)M^FEd0G$N&aYZBiEHheAXX=|3IYVOfN0Tx?XA zd3>j2!OgzJl#ar3`DvfgPl0BGLMLKdF%f1+b4VS;%jG0aFQDwFly?jTNecyP3vu5oLJ3ar_r zH5R51nMMQrUx|vZ-HQbdlwmZH0;a202GU*OS_$ftlU28BU4_m9JCwuNL+TRPF4J5` z>5_NL>7tZKLW)uZxuDhPn!b=wXBt1LRifKK4hSGk4E~jVVmv{`2AIvKoZ>2x(;vZH z80uR{B(BFOsuF~|qz$%^1CqF1Iuyaafs;Q4cjzGlNo>Zs8+9Xxe8}Gc7{;j4@0yF? zAOj2^z01D>*bqNpLKsl;;G__JyXFV*d6NGrF zSo#`*IAFey!_B7`2Wj1sD9CWBM6>Sk94@FDMH_Psf-JG>QG%uJ@Hj z)eTfcCuRP4c=JXm^A0INikP)W&hR$7IiNU!P9rW~fD(y<*atag@3DjtaH1|#`PuH~CSf1BwNj@Uo$q3>Gb`30L2vWBX5qxkR=;{7;foEg!-lE@7q%<^$l)Tj=4pa0cYDBw2}-~;ds31b1A%RB9pCQndQUpD^> zngM>Gb1`c?^Fp_Zy%iSEiXH8yL2pljX$UIOC5J~iX!qld+f$YW0}XOdKOfIfKp3cl z^V~W2+Y`7?wS5R*`S1)9w`%W($u zD40&7Jm}X16t0vdySEc##vh1;xR8aMcd(6t8|&i@0Dg73T5kgfH1~BnVB#$Cu%ze(w%U`!3Scgm8h~fWHLOtP$rYAt* zGC*BpuM=5Gfh*s~0niP?74y=%qGTndUfwA|JxcVj<}z?!y$vjF#}eR-_9?&_xOd`- z1`KS52)kz=Z0~eKmv-g?9N2L~CZ1}rq?=d@+M<2IMsr|SX)2=m=+Io~x-uZ56Xeu1 zwl5^xar31WxAc&9llR=IBAE?e7YWh@jAn0~VL`M70}E?mno?{)5oMi|`mlPhAvGXZ zWO=&Sx!yQo_Ar;Bp+oev;`cKDMMFZfXwq;+uhss0*eR}Fi{`N}kGKCM&9Ue~?^xk- z769}vL&HrGknsn_?6IfTBowZ#?yw#T;FOnRu5UIZhL-xw@CjUz&tkgCv2YkoW;jq@+;;Vv^TmsX2;NnBxorQ!;!^gzCAG&6%hbwU2IWP* zBUbc)&)ByP@{`K4iaNZr#DYiO^?!W&)6c*B@}Ix{{LBAKuuzA@{`c|c&wu;;>;KfB z{m0M0{r1^1lfVD^pPxVd>7W1lx4-`VbNn}p2Y>$gpX}I|pQJCoxXuTohtL0q)LTFQ z{I@Usgnh)Xpa1pezyI}r*~hk@ij3p&7qlO0(|&0B5803W`}&Ctfrws_En&5vuvF!r z{`&X-{ny_<|M~O(^PfNe>!1G5fByMjfBS5a@c8pT|NF1MeE#jLzexS5;mt0ADYq%-0G)(JCO13-pe}Iw{fitw$sc7>0wUkZb^QL<_+Njugz;a$ z`fH@0VDnQuS0*f$p|96;eUHYRiPC9?HbU&B78OM-(jfF05Jl>4_J^FKflPlo@@ zR^I;>zy1B!&%gcl4ZEtI(p3O*1tHCT{dl_=8WqcXnNhO;{hRMF=mi~w7CIM}6yCn* z{tou^#A)U=GDbi&^qp^!zV&S6pU|Y=5w;|IfPViL@BP5T$v^@GV%P9lQ?FWfSso9@`4d%xMD-ZuTju-vWFVr05D8-j@X4=^1_AlV zUEYvQ;?(bck8eC0)t(ZtDpE*vIP3Z1Y#`u7#gqWW&HnmyFbl?LJ8P)^@^BRGN~#SJ z1>cWT`CHFM{fVBV`U`OfA7icnU3J|Bz>oT$i_<7oZ;3nQ(Lr=+UzeSSI?kRfrMXeeiW^c}wWSfI(>m5TtF zdOQ@xJs|1wp;47zeFv)vNyIg4$S6O&I1<|J66X9#|4NDuL^RU;X0_jgO2{oPJ6kuZk%h6ew6=cNsjRwD)+202?aOo2S*lVBmY@SQ*VYeR36ZAdeRdLV(6m z2dUQAsiM{J&;b;(00zCxO)y*rPX(nFjNbQ4vHDMkbdUk!K$nRw=B=zP$iR|ABFCG? zt8-!@A&a>MKN1?l>kR9_N}D;lU6_zW^B>r`%Fkizou7E8cZF{2Q1v+9>0NExRf=^olSUa6L?OuA*X73)c4*2-x*_ZQ9aAi59Lc48aZr8^Rqy=7 z!!d8mrlg8Zob!vT14ShyL4gz4<=eh*ij~z9Z5VIB&8^RegMKU`LWtLt*N3D0gjP1~ z^CIHv>rsJ#Nho32_dLe;%dgr`_Wr;^!WV)t@nZahk-R_vjL+UFJz&GhwYW+4;N^Ef zR;Eb1sDUQ`e)*OCdU-L~jYSkX=hMj;2!c{c3)K2{Jocu50!0tzoT7KWY%s{?7RL-) zW&Qo$G#S=!fB*UK|Ecd0{|Ug-fBfs`zuR}ZCWwE2`z?R@`ImqB{OAAt+b{p}^WXmG z{mcLQ+YOB^xD%VOZWO_v|KszofByN`f8!4i@z#I+`9JK>e!E7Le`;m?GXK*5f}(9o zznsTsnC1W6>+yNif5t=N7t7Ut?(Hw7{_`*AFaPv&nLndo`ZI#rx&Fx;bAPJspMUxJ zpX^rnOKbC&@lWHI&%OLo?4y1z|5QHza(@1WAeDY;^Dk&wo^uKFgl}^PhkIkH7x;*Yc<9i!OxMZ=ZPue@gZr|K;aj|MI_o{`K>p|N6JT zfByA<*=zpO|M`Dy;MehnwQp~i7ZGpkw}1Qdzx~Vq$9u5i7mS8&Gm9FFO80M{_unQU zML;#|kALBFZGZgy+rR(q&;R!GZ~wR6m&6~Qk8xENcsIo;z??}rSV-KX?*lZ<^7ej0?I!2_`=eq z4<9PM_fYdwnfHfEFSpa{rPEjae(&eQM@b*OpF{5tw@)j2f7~*o3RQN9>_zWcMJ z`?Hj!W#vby*`Gs5Jk9edn#h?~TcK)Fox_wg&`m~eQ z@BL8u-G?gwkQ+WfJkt4J3P#_x&iMG5zK{rAOP7A!GkqZ{onMGbf5g(2AA8L{K1=_W zD(u*6_T!%EOJV5;ty%xam17@2OZlN$tUXG(Kg#%)DD(&2AmyWH`a%@?V=BatU(=5* z$3A?N@)h?+pWi)+eO$5mbwNl^@<(0yA3oEUg3wN9>yLY;9~^`}e3l;@gdQIy9p4g# z{-6uvx_seT@(;a2K7N*eP&9gasPZk*DE+`^`6vkK z8sh~W?cLq{y>`%7H>`Pzd>U3^ibo!V^A935R~@n^&j|5KQ=-7_*u$VWU~qY^^bk1 zukK!VZ}hQf^N(G$`7MaX8M{0Gz!&v3!AY;I|G+m@K3=^mIHf=Iq4HNZw0W5Rg<|_V zEnhyqp=$dH7w!^TUVwLU5{I2u|N?_3}3ar$6Wp{`i@`rmWM8YJcoQm4AE& z_3<*r26QwM8YoOz9rG z4s^lE4s)#I2ocx>XW70}c1u;9PSDx!*pj*MG>WhjiCTAELu4==RRXr|=YYO>#?>)( zNpwHI51E%WELQSFpVhrCF$$F3a|uJ06W6XZ5w%Wr{Sl^C_NdbJcTs=z#k&-HvAPfE zW_t@0Blhg38b}>A-eAWwa*5pHGjN3Iqc_;hID;x zH4NGg2-G<5g$#L4k}#^av6gvG&-hwNF(Yq*cKd}$u;R<%V%F$;q>yon!wa_DT=bt8O zz0`wUJ^PR!au%EYkX_T!5MYuG0#2>*6&qgVET=p3W~p3Ydv%04U&7_BV-ugkVF%Yw zjA=R=L+hvP_t`c=FWuhkN2=!C)}bN8j-TRP)qJ9Rj9Pxv{9LlU8|W8z?eciHegyb^tDx#=D#w7OG>eNf3A_Yj$WxVkzr)3*3h-e210 z_9k%8;g?*NMc7`C%Si)qE!+MLN1qVbmbl5p818T{8MM_q1`={6U+Vc7D-j8J^PgU< z^ZF?Jj#UQmF1g)?+)BD+VEnUW1(5H?bnx;E7Pg$KaQm$C3|PL$;l6DrymEK+Flsn$ z_aU`0!rmDlFMJQ#obEw`4;2C=7O%rWx7+(gaA?YP$|dX**0F@1+L!SB#Hk9Oq+^>B zE{{$`ruOnkiwUK6%zRcP7zYZ3=xJ?(Ui6?bxGA#PP2s&~=h?Px+J17`z6S;o9S^7B z{yzwgAWN6RIR@`x`}|_RrMaIYJJ*)F*U=)nCcKAEnG^fP)B17&MLx%ULUEu&jBOmT zig^E`nnU~y&qEBkaTd0HXuIp1?N*Mj^ra=3VOWf@minZTnV@`)7=aYuu2{o{Lr>xy zvIe~ju<^D=j1!B&H&!c8e}~rwQN`Xs#*}TW_lbTMIu9x5xaD-fri@McvKt)B#=aos zG~DmA+Z8H9@tNI@%kH;~?kfiNr+cxXOV^R)IdJlFcNE*)m0JDPoOw*kkM33K#%x)&sA8MYl5 z)n@Kcu0s4~?49<4hHmU_%t15$z~O^qcN?ycSl_tmh_sIEleit-J{$oOoEx}h;)u)h znSboAPY3#m2yqive7%ZPh?h#GXGWFvS<$AXP&~ZQ>j2(e~)eeYm)(pe2t7+a1xh+`}av9|TMBEOl7d9IEulHrXoF>B)@! zcH5k!et4#Za|PxrxPnD;hMTy(6%3DN*lP}5es;avh8!OzCHS9GE+mSHTbw}DGT|WA zhEj~3lwjLgIp@nu{t6UwuRYnUC~Q53iif|&a>Ih4#CBI)T@IOe*LOrlx2sw~2hkSw za+e?2aty3_3!WjK$6_9mWWBMni;3+lcbX7X^El6rR=zPf^UAJfp&kYN80_7Zu0dQbqh- zG1>5xr`st%F}kDFxO>c$FxIy8c}d=eQ?i8;iWXE|{hq+>6xFkV6tV{bjHB>8Zk}@wS-zY| zV@@~Zwt$Zt7}oB|i^nbvU_Pd9)29RbDCCvx7cZB%MACx&hsC)tVNw~ImQ1R9bXTbq z(im`)b-QT75y%aD2i6;Tr;WcaBl*CS*6y>Wg{=4iyeWSw-Z=?O#KFhbxeuoJK1F`80Wec;#r}$s&OT_p`))v?wvLshwz@>Uz!ZQ;<| zRng>TYVWvvib}@-ZE*~+-7gG(Pt1*MnbY>R!`|QSEB9pX+W-${Wc8i$?#4XhPd_TQ)Oe)5y6O zT~0wq%yKr))o%y4b1Yt`{KCH0E`sD8ZcH-J~B-OyP1Uh%^^cJ9e(e1D)Uvv}2#p;bz>O_vqx+11-7$m}$NwuK#g zx-8KO;$`8Id+b+lx9q9h=yFgU@)@=>((CmPErQb-r!VHYJ7udawgsYjhE4QS;xcis z!^VA(1G?euIF=H$d%de8LC?Sz(~7XU9qw^Q_x6S-w-kY?t&}j12}R+!{DDtao}$L; z>Tudj1x?`d`h|~&V43b(^?8P^bCgjM8@>HLT1J$C+xVC8iME_8x1yfWMStUbjWGITby=dz`kF(H-Y&&7W%GmeHCD8p zP)$=H+K$8!4&z9EjlcbfwGy@;vBs7)pj$B8&sdq85yka1#a7C)5JXMS*iV>|yO!M+43(Ut4UPfc;C`X0@vj`*{Re{VG&p)lt6o&3!UpvelUSWfygGb@lvJE!rH$|A$`G&%mgv7XFAFYLYLS-JeZWl{=T20ZlYbEALkQ3! znVtPUB}bt(V7JOD6tLsW$UD;xTXCCSCd&O;etMpa(gK|LK)OLC62o+hNCk>t*NE_A zt7H$G{8D36ltZ1u7#d&>iSH@(!g}YOdX28rlJs7G)a5!eaanNN;ij8{BOje)%Qesw zMzlHku*iRdsrF| zdN4R~_%Me?K_Xo&R08FLjD#BWL>8QVoNr^^fl@bx8w&I3o{-onvJ~xD_w^Mdth}B& zBCBe98zdUd>vp=cpKmD2QFjvcPU*vE=-1&R#6>0J^z}!$!r7;dTw*e-`WN$8EXvkC zApNw=yl<2F&Urb|?hYUG6JIv6q@zWD-}VEA@5EEbXDxP`uwAs<^hEc0b?!B;wXM@V zmpn<1k;Fga^0AXc0+Hlyz5W0jAttw11L(jw+*Y^m%)>53e4gzYs}*wq-p7+o}mQE4pdd? zu+F}fQKxskJZ;0Pp1NKZ4c;ecEM`Sld#z{3F?3SM$V1xS3ob7f1h@MwC*iQ1ji}iD zwzX@vQY{b~R}{9RLHcFi2TvY%LuU?21#9(Tr1Y1e@p^WPk-T=id!x-_A*dwMgs~?* zLI*IW(Qu-VvJTfbw@1>~K}jqe zTV7PB3?=)##TfMM=@(Iicp4c23U)m~AX?G0cAES(2h4MzJeozM8 z=``h}Bq3{{)|b>Xiy>k1t1K#r;TI zTFNmX?>JUjLX|EVds=icny@9t1e*&EpJ=HgNA(BY8QrNjiIVVkvhcY^1(NMt`7qgs1+mZsV(#*m_V>UJnCq;qrlOo2?;A|MUo!*{%( zEr3ESoO;AKfg9ODVP@jkA_i57mLM%zZ?tK~ac)!lvuW7CTeCvNZ<5kG9_{72;p}Dvd&fqLi4@uP#QclI!oM+@ zrDdea6CnFe#3(g7yA1{ObzfKll>k@oz>U02(i4mJbP4? z%lRuil>u&OVX;ITWRktnsI5u}PX!748i_zz7uw}{KWlg3;ZlT<^DaJdt< zmMrqe98i(h9+Xz`%AqR;l2o3N&?$J^cGNNU+~c{OLHmeiQ@8k*;}QfFkw_V%*JO2% zC1NLIV>Va-Vov5qdFL^_P*zl^$CkgnHIlv(L6R|+*INV1b5BS(<`oM#MzU{uBU)5m zgaB?=8ycL@Q_s25E1m#x#83+JjdMGxzDgko=zx8~7Cm%Hr!uD|UFwRjNG9iiH}# z-pH~k_81>@Zg z>7Wm68ZN5`&D7~l%L?Aa>H<8Hyc`-b?`0Z&?w-`3>I7$dl*kw?A~9XH8f%3_p;$OR zIY!~OM?u7NOh+T%dV7{uYmR0Mp18;C-X@~|#wH;P8&U584acf8`-q-wVh&EWVX&`CIYC*gR!H`hQ|WHo)}M>89~IQ?S_ZZ+N8s21Q8&~@AS%g1sTFM=v- z0N>xtc1sp=4d5-W=OH1nH#HbzRn4z`OhCYIfGPz*c>atvw`IP;bsIHK1J|9|Q?&Ua zW45G3qx|Wa1h`X{Azh7)rsST2!V(z&tg7FxNaWCTyRp#eTFa<{tw&!DrzTxHo)^(`OCy6T z3aBnN=tXv&4kE#O5z{E#FTMY2`A%Y2sa5PvpiB}HC47{KcB_)wfWbDc9d^V~VWvvT1YY7!YZ^}>)0~0UpLV@O|gp>$#Z7b*lt4XbCVT=YxjFTCY zj1Kf_!(HeB0CUr>Oi>!q%PEi|942m0n%UJpgo>$00{*HoQQ$7v!o-=4%cV*w;F0U} zPF`d8*@ZgJv0JBjHQP?xp9J*Dj!?CaIjhgT?ZN40C!rb~ERh)f?TcEKMKtmxH5bEu5Hq6Vc%mnPTIx3;k zexC#e`zO zh(82Y=A`84V_Pn1Yi%2(c=b~Xzs+`5ibo|v(PL$>P)0OgF-O+m-a`g`6=GzCyt1k^ zE@G@c33XoP6UTrK9MM0-Pi|dA0AwHVKMJkj_=Xlp zt(+arhlms>cKHICbex+l1Q-%~fu}=R2JI;#AE(nxN1@!K7$_86!Mi%Ph0K9CR=&+D7wnQ zgQl3~0y(fsB}W*um&XvGfDx&lC3KQA`?TI7jkG0UL`olSI1o57fx^qxZUfKZY_$OX z5WMI}#NS6YS%!+A8oY_|44q{F_ z_A1kvYzs>euiymdZRg&$gm=_$+#O#A@;T}i_+?%f3bb&F$>+^J;+}oq36OgCvLQa% z67IzXKFVqtyD4c)*;O>(nfTb#v72mf&m-s?m<4l%YJTN+ zj{RrL&lWx8eCM;e=t7iHROsumte$wlZ9%zcfD~#CK+QqL2QbOr{`7BCX-E&8A{}*U z2b{@Zxe;>6U{$Y_=EMY(+@BV9Fgq+>}OAy^UxQaYXy<>rXsf5WKVr?Q-(l ziaZiXm@wEY`BQvuLt}AIjS>xEW`6w!&LMKcc6D^C+WIks>^-mwjef|L{gIa2!$T#U zv6BSL1>I~%Iy)oPHYG&Wi|a(ls=yFrW*)Qk-iXNHi;mbyr^@yrsP}uQ;->wUPBqr% z?;GHh4+c2&=?;j7&`s|(P^KSLXbD)B^=5!0PL>#@7rjsQ;2`(4RG!)FQ@_OS-mYP~ z{V(q|GHhki*=O76K{9rhJb8vYz_lLApX^-wh1IxFz%3>3eAr?!Z4ll%?Wtvj__1gP z(e$+dI+OZpo|oFUBO;$1gBVekqINWMgk!^$Y&U0M48caDiGWsYTm=G0biTp0XUZz!jI6a%If~mlOQ0h&fhr_hev_?%#ay&f8 zq-aU@Pe^QH+RaB-!KjXy;y}d#xdpw<(VFs5hm`CMT01RvJr4lJmJEKx2(~1V_c2y$ z`qnn->ctQM!OD;O7{~H=65$ogZXu%*L#u$n6l9NW6BXvc3-Lh!xw=4=5G$_hrqSL;$V8nh-h5woB;%J^5w}}e2J}s zu$qEth|_@^RkUr}saB3BiIyuQr?aF0ae%p^Cz`!r#d&z!YIdSG1i9LbTfsCz_FWOp>`iF0>GHuWGwxbF)Ff z;UmsK*Z+vNImufWcqTxZ@PjQ?grMU1#6hIXO`WjhgBuQy=L$2892*P{N*0uDNu-NbxVgGLNU| zRhFj50z3mGcBf>8Cu(((!PZhUeLJb9XWy9Z1{;}q%0`JR`L6zYzP)Rbzf!0~Iv23< zfl1vPw3Zwpb3o01mb*|%2GXBsppsDTKx4^1F$CgD<=j358uUSERURb>EREp@6*l$D z3L=vW6#QSI;B$^ihaX`lhMOf;KPAAV;EesVPGC|xWXb360F5UA>H{!eu&z0us9n%c zbQm}B+yXM~JAd<)!H{L#wvyicWh!91t;E&A1qO$g50Cnnl9gsM^wsFg(|ZBJ(E^oX z)iO}2qSQ8^sNCBi5RM*0ND#&d4U_=2*)0xyiu)@H32Jv(){(oQ*1<>@E|K?G3(;1k zokioAM;DqVEPD1Hp=H~Hq6C1ISCML)TR2q{COPLni=f`Q8sj-F^gy)@)XLkfu^x(o zngAGOdRGrex;S$!F;^Nh5ZXA0#~s*U7TYcH={|yoEMut}EgH+FOVkFVTMtF5T7OU;2gBP(xo0&^f=8zgDkSzLzRO0wjuu#1k6ivc{rj73XbMC>I@urr`U?ad(_kba=2BVAIoX zGBgsf4{2u%o4}w$1*t8VKaYFE0b(?wH8M)hjz_)eWHJ%dl5W2ZEZrK5y_d8+^IZwt zy!EmWHlLoi;bLO)p!cp0szO#y&3?_!PG)rko-(2x#L$e`VfWI`MSTZ3tApwD67>Y?M3R1lSQ0pT(daED@w=1kGV$3t4)3X9x^2(rk_x z5rJ5ubrk>JTuW9a9ReG9x={R(Qv}2%e?SSO`_O~nD_ymNUSlZgWGN+(Ry6O}FA)i* z;mMl?loFF1u5-$Bppf;dpqIt~n{4Y~%#s3t3B(ReU<2{(`AJ(tdpab}2odoPjJW1C zu8lX7?mtlIe&tvaM}=>7oR2`#iOve3nbWT&-Y6wcM%BX)7_>(aJq*(Q&L!8h5K~$_ zXNR6({~chncS9_H0{1UIhuA&8Ywk)aLf`U8Mh>1Na64wV7`4;BES5`?bG+rzi? z>=NUhMwcdr5|ot{;hHm$LIpuM$dgufeVB_d)16UImU=@WHZrF>Ux;SP6TMnZX|+y)Z%g_tT>3LmHlO%my{W(Z=w8uTP{74$TUAX;cM zuf9!SevXA7C_yg*56_7J)8?$CzV+wgf^Kjy{X0j)r-@7ZK*5Crf72yng~t$LJ-QBz zsX;CFtAPPfn4ZZs#d`5Zi3SPLmbMv*2WU3?cWB!A>KpumU^^4tY=a44t!bb?r2X~ zSJ-fs8WKGtPj*3%kOJucZqzT6&`$T&QNN@cl(As40`N%uLFghxtA;>mbXp**`HWP0 zH%lEP>OtTRiO->L9YbKt2$GuRE&;%QMNv$c5Knm!hJdy;f|nNKuaPT;y;>qdo-|%o|eQ6c98wnP|`Y2 z0m6WIN87M-Nq$9KuP8uzCg27V+m>a6ifT+;@wm;M%>Ixy=s%qe> zCRp9w*&Fm`?T>&OxH5=Ef^rD9ce<1Yb;6*LV|Qx|ou6|adn)z_O_9T4I>@JjeJvp7 z-{A-Ir9rqOz1qB5KH;)iP@+fSZ^nK#GYzUySBd589JWolgPc?Y{*%jJOt{dj1iyc9 zHulO3MAIb-=RFHL7BtK@HA8qoCXkIwa6}?o)ZQ6Az%>waY^~2#PpyYYP!@+YD+Ah( z!qYKeIt9vDb4ofvGzw#`@#d_qJB2=)rjyRt>a=lAL}<@1c1f~iTF#{#cJGqtcm^Zl z3Kn9}0O_H^%C}$v*c;9c2LaE~hs1=p+wWXN6zkwjl^b2P=UaO{_K-xHk8yD%>0z9x z5pEHyL9MXpd}rBRF6nDz;o73*iYSe1q^&!KhO87FV+;U{g2ds@^5`@JS%dS^O%Y1A z(gY7$3EI6?>`(LN33q$;THA9w+6JPk z#QfP(OlTHMOvNvER?!~d+*IsFJYm#`LZctT$q=WdO%{?`U`=mWx}7En^X$#Gg|bIu zsBFbFxc3y4W9*LA(8wIo-WH9@v#NWe&=x||c6=eVUb?=Vt_HW^mV{W&LVO~6_l?3> z{l{DRPuL;pwDYy$Jc;>d5`4o09eFU5>`RUHgv2PNxPX1otVSgv1KtWqT|y!I7<8Z_ z(vigVS}!pd2pDz>#hBXSAcsb*`BL$F!K`Xo>PZN3+1tBpZVyJBTmXBW>%mKm@6>Dn32waGlVIM zjX;b)PzOQtJu)0t6RbU8=h8Qc7G+nyP-L@q!HM{fpwo;D=Rmv@`b2lME8%q|)fb;f zjRTN~O zkZ4|DO~#&yVFHsgZ?i15Q_4^8XiFdve161yZWs8$phSI{lU^yUD&TbM2q;K)0n}F0 z2*Jq0jBSDn_p`$Wau*Ng>`Y|aV3YZz9Dq#)w`z|bGvisL-E4pEawmW>l%iSI;9Xh)d2N5vCkq&4 z6CeSdz}-qikKW$P2tow|8%>-f$P**#iSfcIj*O!Ux*FcXE_o#706jp$zY>}fmk*8c zqCxl2B7aQ4VJAadSLgZOEg9fgY$Mnz+=Yw|3B(?JTWGYmt}08%mAi_(hd5Ey5;)Mk zJ3{*B8Nl$2_c(?3fT4b*IDT(`(dvUJmva^OPcNQx^)4j*BVJz)on|>x*ej$Z;}E4s zY6E($h~SqkwniTfDDkC`MSqqt@XQ;-N~;R$@J++2fe9hEN2%G@lTXRf*70^CLBmc- z2~;cN19F7htpsn^uCf?gc*BoBf%!rk)}K8s?}lqc!D&EFE-MLg`JX~2g9LJb{2_Az z&UTE^>NnK&?RI-Z(*cY0g?C%y&;ams<=r5^TOD+lOKpPKkV0&j-cW-m-|)-GpwRIg zS4x7sB#DwM)A@Y>#0Bkxa)ip6gxqMDGdYhIX4g@cR>=xF1td(m3z3PU3C}M3{2z(y z8S~2#{utwjTHEF-G z)Rm6Y`_C~-B(WmnE|+4TM6KwlZ*cE}jsi9Yiq1z5eDtN%=~V5<;Uz8lcmy zzmZFW@DKY;<|uFaB;1izf?sOZZj37+B|-UZBR>JwG=V?VgL85j+)rd1sM!NDWMSu| zIGK{V_Om)9g$`jQ?e=7$ZDx@%B1lz}zpdtNj0_HetL*=UFrHoUP;fZ}?F<_Txi3&7 zMrVN^q2^BKrjMMI=4x%$Xcod0rb~uikM}SUyFUa=&M|DLJeh#dp&1Dtof{OPdT-1< zywZgT*8~SvX{xT+C-pTlg3SuDeFjv|-s>4#7j*@+(Wp{F{fGuLm_~~9PcN3rF)zxA z$wwUCA^he<*ZvJ$ZuBBu|>qpc4g%2ZxO8u|Sy{CwO@24c_Ej#T8Q(|2nd*;ofsQCs-O)si({9 z&;#bd(cN(ohCy-y4-Qm6 zH0q#`c1V5sUp2uw&=Odg^+ytMQu612jTY=D38{ zSw0yLIdW!wPws#Ec4bd+px;6us~foiP!cmKNtH)2JLG6pw&Fc~j;Y4F9>b>_+;I)X z3HO89yNzNx!4X~U~rYu_q%>$Q|E%MO)JQ=rMHW<;s9M; zJl#&$%IC!KmL@;RP z6ZyupN6wH{3(ALxJB<)0p^15G58+5tc=N|5azmtR*JHReBI#y8Kz++KnI)|!^F}eU z9lgTa^9ux&BP(*tI-VOGyvr%Z)e#gkguIYl@JU}>4d`RoIXFY|P6}y*gCn<7XC2f#5P8{M;$F0l$)$o5(uBMyzRDQ^%Lfk&SeUmD8lStE%DyhF&% zF-FIvLRx6Z9R`WCF`z-3_z3tKdY+>$m|)C@38WN3SRMG-NPc}M^T#NHSbqK~opQfh zaiW70I1sS(!^n+fk5SGD8z4w0+Vc$NoeYmYn-l>%WUsco&0ml9&?fP zE%JyjNWowzU&C}V>W{d#3%kXV$D9DHToG zvh&c85G;5h@w}n`hK7S+dCgZJXlNCx6BPyzK&Xd+Y&{)U0ZS3AA6K!rkiiu*4@w|n zLyZr|s)>{>V3N>K%2{4u6dJ+irq4msHhX$!r;_^<8Iv~lv=LGu>ZY-i7zU!@C)uLF zsL~zR`VZ%iTcO0b&VpRuumWB=Sv1g=-4lXss?;fONZRUh>5s?K zhdUSpN%1Vu6iCkk!=?8BC_^c43{I|i!4!v;0)Q(q>C@M!D}tlr3#p+NPaF`gh= zKgNqgB|cz|poS2U5$m3k`C9u5Y{6LiBq4AFEA~P-vuKU$Qim7asjBf9NxTUi{q#qV4W>$B@*|C>- zJ!wb6yWWRAwEU8zd0WJ%$Nm8rQ<`@-HI1gu8FoC|-leH3T0ltWZk!64NF#~+>5dl? zodf9RSs-Pf)AxMPQZ-!atMd_P+DY$|j^6b7SryBa3o{>%gy}+2Sabrs=}VZTu`FP) z<7*#wj6PlY*L3*v3b*#31o#;d#VS?*DEI4EEGH_kKHM(^M-e<`EZ7GA^tnCJ(NBVd zd-OBXgeR)a3)wl9-po12wgq?rAa3g7iB=9)#kJJ17s|EWz$D^On$~dvZ%^b}d^$j|^0rnR>PK@(|FX>A znVEcmFM+T$>55}zb%&QETwPFTm$}|etx+6Wt_8ZKSDcYnI}L#;V&s#OT9Qov0zX7O zIx(*xMnq>I;h`p8X31Nxk<4x=zLXe+AQ&&?PU!3c;$S?BKVsB43vWe9A9n|umHX}vsr*hCE#>mw`i|a!nXIv7*b-K)?-AC zSrd&*P^dwNKTcHjQO?;2t|hhUJ$gp6n!sMNCRQ9UCS{x-+Vtqo;Kd;LV%dI8R8qX3 zV63oyylCJ|rxVkem1NLw8-{}}iN>1&EghisF=6gK=AS4?GblwgF`f!-M8JjipHTnZ;z1<#x|ntADiQa@rb3Y^p0Fm&+a=Y;#rRt zEGQaKONeLf#K&Xni8Q4<73J}<$h>OP1I<3*UvI1^xU*~Y%C9H^g9NYZv{Hs!^y447hwDR`Q~_q-6mujom_E@ZE*IYoPi*ZV?OUWgU?=Y7vl zEE{60-`FCkEuuy)fr+)(YhN`UoZuTG2iaI&=W zFQf_R3n=m=t+75pXh3JBJ-+BP@$3{pliRfyddan|HjdYSZ#Uz5sRgOC^8zE`RVBZT z%XE><5nFghx3QCmPT2+M9i@PkIi1qfBeSr(o$SW8%2wiEUU0UGITp6c*9p)_+m_hU zxJ5$ZatzjUEuL=<={>-AW%&bo{Y+P;BOrZxN4cxVwtvo}7$TNM5TCUp9uKgK^V3vR z_vAc(-yr7$u@Z9Bg2sDNZGCUfg2?~~Y!}WQT+i5w8`KUXyo8%zBLnXw4q|@7uu*1P zP;Sed&c%L6)j^)`)~{gBe!8j4?hsY(6toERx)cm!FqaQjwykR;r9fTh7SMFQk6iy z@mBHZY0=O_(29Pr6=ebF#f#^l)?(lj3Y>6j@VpBn*Cr=2prll}Z9jaKbjfOOJTJj| zEEq6$RD`*S&i!)Q;edt=sKrHrc%YLP-LHAYeVmWOwt3Yd&(*?UmUk2U3@1>G3|m+n4=9UT;<7$aDUQeDDoXryg&YC}znlDmZ?crH^Ym(euL+-^3cMVD~ zaJ=ein)pZ^VmlXU>J&KaK&@#X7UOEwFRqBp^MXD8M?NPUw zH>_}qKXh$;{DaGy-9PKjK0HQ~jb{jbF>xz69o=U3FIYdw@nJW&HQdp^pzz5QG&|^s+rCr`SPKn+Q6*M3>4nsnovE_@KeKY#=w3M(%+AwmdN5j{xE8QdB*4a@~C}Z<3+sj)i_Wrt24qt*91|w~G(pS=(Cb+Z!bH zD}g1#d$3v0<>-6mBgiWOUSec+k1~MkfPX9t*f*_MI^&02I-kgX4aOu|#5j65-%*NQ zC?-(nhYy9Ci5M$|v?o7h)ifrz_3~{a3^C3d-Bpd?Q{vt!HREXeCq<*t+_uCX0-4PP z)b{#>bm(BHgrZuGcR$H+1RQagDSq*`w-nE#;YU9Vsf`UuLB738y_BB5=j9Y`)cX#M zK;e{n0X&a;`1PuIL?>tV2%AJY>3}1s7!DHP|CVUEr}G_g6GfM`Z_seiWCA2i91J<| zFo2sia0#G6Y#AGcVN@}cKg1A*DL$Vd{Q#|t&q`!BMWPmf%!2s_l6=ukJVHptb&BU$ zW{4ub*&MD>h_fcWs8A8JJQtxU97)fN+frbmbc*|~E9c!L{_$6Vb40mw9w zywqqa0q)FXd0^dIbWiA2cBCgmx*kwdl7!XaX%JBwWCPIB5H*^((02Ojku*%*DsnFH zA>BbwrJ~p3a+^%`G$X-FF|-=q9;cN)%|$OiQVG2lP4mDC_{15>+9AmR(yu_4&_AcA z;QjmOkrw=;lgfi>xQi5I(0UTff~ER}u}u?Wdd-s1(vW>xc-hA=cww1=1_c(>4IBB`K!xq_l!3am@A5vY+$wHj=ZB$bblom?=c}i0L zQczOSk7rIx0@I$T5-10}lEN@Q7dO~Ncy|bBejo@4N99sOzB5bWw}Yl#!Y|Wzn4iTV zAYNM*C&Of3R6!sTvxWAEu?`$(-uP4nQ=hnkOT_N-^wI5Q4h@Hw@I?${qoJH7w5SUW zM%mN6;6KIfMxhoHdo)#u7SXjipAPL3L9u5*yb96aU0hN7GA^0HA!W<(7p_6cF@TUp zf)pd@q}dAhc)U$R;f~z2v9`cpfeUVhn0NroCpMdb6u+TbZi=FjQt~bv+uJ;o$PVj~ zt@Zkatf!v^#&E9l^x(ny^2`csiq_$m%+jxBlnLySAP_6iJ;k zGc{ix_;1kQ_ucze1x#lYZP^sXV#>~Ews$L~T$ z?|oJ<9%Ac#C<^uctVrVcqgxujgs{cms*LzY(sd);wH)ytE$q}@rA5vgTWtAI{IY$h z#144LBlZG$)?3j>80{sPumkBS{An)5`-sUG`xbI?S;~2DMuNMC!OHBs4@jLhiItlpYSPf4Pl27?b^(M`kIX6fIlY#XeA41_xHi zzI|5_E6G25gaRumi2&!abt7P=3+o8=PcaXG@5AgV2ThGTow5TSk>gts2FxO&DmJVb z%*~2qW#V~>0oABrQt@C$)Ajhaa@1w8)Fls!LJ%?8EPyOkiF1iG%AmG7$UDobj~>R1 zO3lNVWLxjclmvzBu%D=po>~$Lb|s;6T|N0}C>1fcfOmWF(}pVj!8^-7{Oz2X1*dYi zv84z9nn5VD$5}O>5jYP{k$D5!>R~5CZgSBi=>q?J`I}a-9FLW3y~B~HH1wluKOJY! zJd6p~U=rW2uni{oDGkkbv>6N)yKJcRQBILzOU;~g8@{O3vVMeQKj%=^LOs<=28Qg+ z3a8K#F)nt}aE1~k`!MN~H3ogl*^Tlgl7x6oTKPS<|x#a8PcJDw`b zF)EhWr&QVZmB?a?51AZ*r1JcK+b;otMk#yEq+P7u2mB3doEfGw(dEL3p>J2gdgALo z%@(3YIJCXq`K;;Ty)P$*it|H& zzd3Db~TIpO#D1U z5HqrdRO;t-(@Q_2m1hl>Y1pCJ+i(L&32_|>8lEn^e$9cF9Y8)rJ>M8^EX{4)@pf1f zn3)Sj7CYL0_`k9i_EPGDj3C(|$@9g+)OPdFl^ZEgZ*2XPKmaIG#1BW1@wz`fKl~;< zSgd2sH2IP~+!^%O_-9dEUXTCsM>PD0Cx`IV^9IMnmVjTEj`=kFUM#k8K6D=>h%qT& zPNX|*Viw&>$~yv%y+rX{n3iVMBvKH%e*YtFTuBo<9L&tp8r}6>Qd8m6LapZ}eOc=L z;~M7|TFEiiqYossY%)^*-&w-gc&Pt<6epR$L7D>QZCmL&{-?|~Mx4TEerVVj<;hUi zk1(U~M4VUyhWae8*&5JMaHvu16PlyG+3r(x1M`_@UTu1NLyrq#lAHrqE7Sw0>>3V! zC!~Ur8YOsqiS)gvoRv|nRPn+Q0V+?{uL{WehO#N_90!tvL##dLfRVo0`51HZCW-lf z=Axl-o_|*V9}z5dmP~~BNvV)#_sd)gYZ%9wPtzpbD}%jQ0U#p*fEp{4x@IRuetN)fVlCqCWqdUF@$awKYuuP_=tea5lzv|FOal}4|&uLv;pj* zOb(w&C{YhxmoX`*utO?7TYTkF?Dx<-GsDjwgHfKadkMzJ1yi1tnsl%+xXeX6cOsA( zxpvmw;IsG)o3Lr~9}Q87`RoBo{`vAgoaKK?Cr55~D6rF)BnpZXFO6A}g9;tAI^U<+ zqMg=QQu`7u8yS1z5SBB-LF>?xpJc}vG|&a3-x|V_|M~I)FQ9%>9yODM>(|nRriGBQ zm3Q|zFHTidwJLJ7zhq`9Gm}0p<;QWs--)|-p2Vne-+A*0W{3njUDkE&J+P!)Hij1o zh}a+|N5?~606wUcV7u>6>5%R`;3{`$$tJ)c==jIA`+l}YpzDYmbNBgjHAIa;%uJC|Bk8nY;{n__e$IJVa1icv*%In* z#y!Wg6v~RWfyA*(A!a2wh?I)rsUpM4i+O&`WV#f^{4vF`WF%eUEhIUtZqhAUu5@3& zRnpJ-8sek3;(HK7SvBMhO6w4i>$ry>P_!X7AJ;ts0*+f2z}89)PW3}kg>gTgpgODzU^J6J#v$-Gwvo6KPD+Ghb(2vSgAtI|yNzm* z4-k9}S!c}5VJ5Wk`G`}ng=S`Sesf48VDd8m<(Lw*l4yO?fhxsWQc^iz zq)!CYnXLlH9wJD~fHf2t@X#V9XOUbFfQqJ?t5+m^mfXBh&C%KOrvrtEC$uRmlFQRr zKmI~u<uUHgJKS&w(9H*9gHTF`z&tAvndYXm}d@PZ0l<{KQZHG;xnq%A5B0xIJCv- z>xV39)FdYBBw)7leCL&Ej<2ONmFCI2Kz5rd?Oe51fwR#0^+4nCQsaB-s2Wal3N%Gb z@`nCSoo7sa@+-hCeQHZOsnIODbeBDbB?4U^OziUUJS#XRi{LimV80y}Z~touCYdfg zD5^wwR%92C<-{cs_0vZnvsWz&f!Vy{&YSZLk^zHi4yh|?fxPOo)$V{huDD-fcmZd; z5`S`-?}l2jz)@+=NfYRmU4Gw86mn_>hb|i-re2>gl=*-6IK<@oTI1o-Wx6iqGP4R{A2}UAH@@!ZwL!u2E+zP{v!gaDo&2Zgh$gf+4<)q zaj$!=!BUZvG;h)_Y105n9z{q4Tg+(nRvLpzX!v>-?eqsJj_wb692AWF=gZ@^%xM65 zU+hN&ypqDEU4cDH;0)7BINDm@#-zAZ`}P206FT+c{2^tTmac8o?kPD_fb?QA%WXlE zygkL(4cX)~qAoUva)yu%w}nwvH2@60{y^JYB2wpjz1XoEl!sJ`m@7uqjQ92z)M=vU zL!BQVm)Mu}%)2hmdX#v@wiKLD7&^)w)X4RLGz+)uyp{g@#N_%riAhDE%-RD#?s%3a zMZ0~v5d_39!F=<0X7LE-Z11ol}KQf1YvYS3)4 zIpuK{_55;l5W5@EVVxmU9*NNK*FQ25eFTa<#FrVvl2o$dO;@gUJK zkPT{mu&h*wq>nxK<-0`Lo5DC=6)*$hn|Oip=gV`yOvH?-5Fej0hUMG3l$?$f@Z7sg zjgeBboRww-xT&zc!!ZlUOpCx&QBG7=!KCM!LrbD-QMTh513VI~=Ovw(x<-0I<7zl% zEI>6Lr6cl{1=IK)Rx)&epZa9SbBzPP1`qN=9lT`o0eS)Gp&9voQjliB@C}Ii2MYQk z(4;Mw{pBP9ROyWQJY=SpM&nDIKrqCLT4uh^8n)tCQ$M|u+&>i(aNY({*ogBM8LG4$ zZ9y9J6&P4&vJ`QO_&;KmL_@>OEbj!r_g{H6HgsC7{fB>2MGrqAtQ11Xfa+#!UNX0X z1G}@2KOZ1Z7??pkS3uk2Zj zsAdrAq?X+&>$ta{dx)xgR)p}l9IK*c!@S}QX0|n(E(?q+Q%m{`-1`pafGn$LfKX zBARfzOUx=)wH|Ap#d!3f{U9+4U5MmM$UDl88Kvn)JJQ1*sdF~-3Lzdd?1xi{s&_N8 z4v^>>Sw;vQ@acm&;r{6nMN02ie~>5UW-QM&zBD} zVp&-FV%*7ALo8vgD%omD7;zEGGY`*;N(MyL%qI?SxKJO%H#(zMnzeV+eikTh^hrAV zP=uMg0r*L56;P~!j^GPJk)QS?6E`Xd55YFOO}%_EtttU1swd5y=Uadidkv#00XqMn z#H4^ij2RT9;W&33(?y30=t$F~U;EyLZij#o#aO&j`CJ z7w_7YxW^rmL_@yWOCw?eRvw>yqFvjl;fyy6)H;E|^InRol0gq0M7PgEd}q?=WyOsL zbZDDL#7c}f-apB}gB&0!kQ|iuLsNaRM=nrWyAfIZn4lTM=^d9N*Bi&&Rh?A83THc) z0$&FUplPbte5}#Wu*JNi;nYpG{HW{rtNFGrn-#j?AhFRf@mjmDR&Jc{m$>L154@9h zS#WP4o0rvGxl7k`IbI8s18N_WdoPIwGeGhVG5pJ z0GT~jJypAIk~Ge77n7M4+JoXpHKX6I#8d4{=TKgf5{EF_1sf@pPc=HNNxWb-i% z`;+2g_|n6%jQ$Po$j-)Tva4gnDLej`aT3pb4z@~_gIO%OZeVIgsnb0=4=DPv45u^$ zo8NJg8;D-2r@g{1fJv*JKkR*w%_ybTSc8{`CH6QP`NC9G&CNc=}YITvH>Qr|g- zfiDTh034tI&XQnD3Ko0xzJHtfv~@MD$Bw Yuh0d@`hrP~9-aDS>7r_=|c2XHJL! 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

`X8lcX)%U~?*RT&tG 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

1s_n3{;6+m1#4y2Lpsb>4ke0ek-vb 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

  • @)D9 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 MAE26F8LO*B0HLCN(f|Me literal 0 HcmV?d00001 diff --git a/doc/development/ecs-edge-cohort-controlled-results.json b/doc/development/ecs-edge-cohort-controlled-results.json new file mode 100644 index 0000000000..2df9154603 --- /dev/null +++ b/doc/development/ecs-edge-cohort-controlled-results.json @@ -0,0 +1,4593 @@ +{ + "schema_version": 1, + "date": "2026-10-19", + "baseline_commit": "668b60cc2a9559f79abb9c33acd959833376344f", + "implementation_commit": "e8b6b78363a9c8cd0b178b99e6d18feda191cbf6", + "kernel_implementation_changed": false, + "source_sha256": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "2bf062b9bbb84e2fa4c3fd2132f3ca68e4c9cb91a093a70a600f1c1eb045b3a6", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474", + "source/tests/pt_expt/kernels/test_so2_edge_cohort.py": "e950f552d1b7012e58e7ff2190e1eeec565d9572a63d65111a527331a14c9737" + }, + "environment": { + "gpu": "RTX 5090", + "driver": "595.91.07", + "torch": "2.11.0+cu128", + "cuda": "12.8", + "triton": "3.6.0", + "so2_dtype": "float32", + "tf32": false, + "amp": false, + "model": "DPA4-Neo-OMat24-v20260627.pt", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d" + }, + "method": { + "inference_backend": "make_fx -> aot_module_simplified -> compile_fx_inner; no Dynamo inference frontend", + "normal_api": "ASE energy/forces/virial/stress including neighbor construction", + "primary_precision": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "no_global_clock_changes": true, + "thread_affinity": "GPU0 CPU8 + monitor16; GPU1 CPU40 + monitor48", + "uncertainty": "independent processes are replicates; frame counts and conditional block intervals do not prove population equivalence", + "rejected_rule": "a change below 3% is not automatically noise" + }, + "primary_same_context_normal_api": { + "processes": [ + { + "run": "same_api_r0", + "first": "BASE", + "blocks": 24, + "logmean": 0.0029942139334827957, + "change_percent": 0.2998701069386458, + "conditional_block_ci95_percent": [ + 0.2160580917410669, + 0.3741272750221055 + ], + "worst_error_ratio": 0.37667335116014933, + "wrappers": { + "BASE": "538c9d7d866411c60e2903f740e84f7607c562a75d34fc6cba39a4311a427024", + "ECS": "45fcab253d559c8b8ce73c33f7a3b3ec6ec80421c59d9763eea8d0e7ac205e4e" + } + }, + { + "run": "same_api_r1", + "first": "ECS", + "blocks": 24, + "logmean": -0.001537485774856499, + "change_percent": -0.1536304449103964, + "conditional_block_ci95_percent": [ + -0.25581785218645947, + -0.037210522754869704 + ], + "worst_error_ratio": 0.3327401297734396, + "wrappers": { + "ECS": "5628c96d17ffb942c8016f909521c78912d8d3cf707c9f8433304a94f2721cd4", + "BASE": "7173409f6cdca1de469a759b96d087c3969b656517d43f6930a265d43493cb1e" + } + }, + { + "run": "same_api_r2", + "first": "BASE", + "blocks": 24, + "logmean": 0.003649310407773332, + "change_percent": 0.36559772483228126, + "conditional_block_ci95_percent": [ + 0.2666125841077847, + 0.4668921301933525 + ], + "worst_error_ratio": 0.3075668823537886, + "wrappers": { + "BASE": "538c9d7d866411c60e2903f740e84f7607c562a75d34fc6cba39a4311a427024", + "ECS": "45fcab253d559c8b8ce73c33f7a3b3ec6ec80421c59d9763eea8d0e7ac205e4e" + } + }, + { + "run": "same_api_r3", + "first": "ECS", + "blocks": 24, + "logmean": -0.0019256500356109967, + "change_percent": -0.1923797161101289, + "conditional_block_ci95_percent": [ + -0.31158433170386357, + -0.09145138740206932 + ], + "worst_error_ratio": 0.3444816224895775, + "wrappers": { + "ECS": "5628c96d17ffb942c8016f909521c78912d8d3cf707c9f8433304a94f2721cd4", + "BASE": "7173409f6cdca1de469a759b96d087c3969b656517d43f6930a265d43493cb1e" + } + } + ], + "process_count": 4, + "mean_change_percent": 0.07954133062130357, + "process_t95_percent": [ + -0.38661480593790803, + 0.547878916422788 + ], + "confidence_note": "processes, not frames, are independent replicates; conditional block intervals do not establish population equivalence", + "stats": { + "BASE": { + "samples": 9600, + "p50_ms": 11.68358139693737, + "p90_ms": 11.911459197290242 + }, + "ECS": { + "samples": 9600, + "p50_ms": 11.708142468705773, + "p90_ms": 11.9329929118976 + } + }, + "scope": "normal full ASE API, both implementations in one CUDA context; two calculators, actual master and exact PR definitions; no Dynamo inference frontend" + }, + "clock_matched_sensitivity": { + "criteria": "block mean SM clock difference <=0.5%, both memory clocks 13801MHz, mean temperature difference <=2C", + "primary": false, + "caveat": "post-stratified sensitivity analysis; conditioning can change composition and does not prove constant clocks or replace full results", + "processes": [ + { + "run": "same_api_r0", + "retained_blocks": 22, + "blocks": [ + { + "block": 1, + "logratio": 0.0028716235008769964, + "sm_mhz": { + "BASE": 2822.4347826086955, + "ECS": 2823.6521739130435 + } + }, + { + "block": 2, + "logratio": 0.0030438794030094307, + "sm_mhz": { + "BASE": 2825.478260869565, + "ECS": 2823.3478260869565 + } + }, + { + "block": 3, + "logratio": 0.00512300455927317, + "sm_mhz": { + "BASE": 2824.6666666666665, + "ECS": 2820.9545454545455 + } + }, + { + "block": 4, + "logratio": 0.00436331614460439, + "sm_mhz": { + "BASE": 2823.0434782608695, + "ECS": 2823.36 + } + }, + { + "block": 5, + "logratio": 0.002686576010344055, + "sm_mhz": { + "BASE": 2822.1304347826085, + "ECS": 2820.913043478261 + } + }, + { + "block": 6, + "logratio": 0.0032964977581597665, + "sm_mhz": { + "BASE": 2824.8695652173915, + "ECS": 2823.9565217391305 + } + }, + { + "block": 7, + "logratio": 0.00285706276185671, + "sm_mhz": { + "BASE": 2824.2608695652175, + "ECS": 2823.9565217391305 + } + }, + { + "block": 8, + "logratio": 0.00545304911232547, + "sm_mhz": { + "BASE": 2813.0, + "ECS": 2822.5416666666665 + } + }, + { + "block": 9, + "logratio": 0.005008737542294028, + "sm_mhz": { + "BASE": 2824.2608695652175, + "ECS": 2824.2608695652175 + } + }, + { + "block": 10, + "logratio": 0.004794177562289725, + "sm_mhz": { + "BASE": 2821.75, + "ECS": 2824.2608695652175 + } + }, + { + "block": 11, + "logratio": -0.00033211149625334, + "sm_mhz": { + "BASE": 2824.0833333333335, + "ECS": 2827.0 + } + }, + { + "block": 12, + "logratio": 0.0012528738811403706, + "sm_mhz": { + "BASE": 2821.521739130435, + "ECS": 2827.0 + } + }, + { + "block": 13, + "logratio": -0.0032679309816510127, + "sm_mhz": { + "BASE": 2807.8695652173915, + "ECS": 2820.086956521739 + } + }, + { + "block": 14, + "logratio": 0.002271437985801761, + "sm_mhz": { + "BASE": 2806.8695652173915, + "ECS": 2812.3478260869565 + } + }, + { + "block": 15, + "logratio": 0.003913371256543119, + "sm_mhz": { + "BASE": 2800.0416666666665, + "ECS": 2811.6363636363635 + } + }, + { + "block": 16, + "logratio": 0.005391604122262805, + "sm_mhz": { + "BASE": 2817.5652173913045, + "ECS": 2811.7391304347825 + } + }, + { + "block": 17, + "logratio": 0.0021853364857458146, + "sm_mhz": { + "BASE": 2809.2608695652175, + "ECS": 2806.521739130435 + } + }, + { + "block": 18, + "logratio": 0.0019569929468001845, + "sm_mhz": { + "BASE": 2816.8695652173915, + "ECS": 2807.521739130435 + } + }, + { + "block": 19, + "logratio": 0.002051886273785719, + "sm_mhz": { + "BASE": 2809.6666666666665, + "ECS": 2803.782608695652 + } + }, + { + "block": 20, + "logratio": 0.0025069274817441922, + "sm_mhz": { + "BASE": 2815.3333333333335, + "ECS": 2809.304347826087 + } + }, + { + "block": 21, + "logratio": 0.001546512369963171, + "sm_mhz": { + "BASE": 2808.0833333333335, + "ECS": 2806.6363636363635 + } + }, + { + "block": 23, + "logratio": 0.004902387008157927, + "sm_mhz": { + "BASE": 2802.0833333333335, + "ECS": 2815.2727272727275 + } + } + ], + "mean_logratio": 0.002903509622230657 + }, + { + "run": "same_api_r1", + "retained_blocks": 23, + "blocks": [ + { + "block": 1, + "logratio": -0.001692171763402861, + "sm_mhz": { + "BASE": 2820.6363636363635, + "ECS": 2821.8260869565215 + } + }, + { + "block": 2, + "logratio": -0.003119901634812461, + "sm_mhz": { + "BASE": 2822.391304347826, + "ECS": 2820.0 + } + }, + { + "block": 3, + "logratio": -0.003127075701074844, + "sm_mhz": { + "BASE": 2820.9545454545455, + "ECS": 2823.2083333333335 + } + }, + { + "block": 4, + "logratio": -0.0011921761110076368, + "sm_mhz": { + "BASE": 2820.608695652174, + "ECS": 2822.2272727272725 + } + }, + { + "block": 5, + "logratio": -0.0028242601945085433, + "sm_mhz": { + "BASE": 2821.217391304348, + "ECS": 2822.4347826086955 + } + }, + { + "block": 6, + "logratio": -0.00033087293111089267, + "sm_mhz": { + "BASE": 2821.8260869565215, + "ECS": 2824.1363636363635 + } + }, + { + "block": 7, + "logratio": -0.002652198517723914, + "sm_mhz": { + "BASE": 2821.590909090909, + "ECS": 2814.1304347826085 + } + }, + { + "block": 8, + "logratio": -0.0027796612840966795, + "sm_mhz": { + "BASE": 2822.2272727272725, + "ECS": 2823.6521739130435 + } + }, + { + "block": 9, + "logratio": -0.0019142997925727379, + "sm_mhz": { + "BASE": 2822.1304347826085, + "ECS": 2821.217391304348 + } + }, + { + "block": 10, + "logratio": -6.280917832945931e-06, + "sm_mhz": { + "BASE": 2822.8636363636365, + "ECS": 2823.5 + } + }, + { + "block": 11, + "logratio": -0.0006008618137776089, + "sm_mhz": { + "BASE": 2821.5454545454545, + "ECS": 2820.1739130434785 + } + }, + { + "block": 12, + "logratio": -0.0010094126764426115, + "sm_mhz": { + "BASE": 2816.0, + "ECS": 2810.304347826087 + } + }, + { + "block": 13, + "logratio": -0.001004108681392335, + "sm_mhz": { + "BASE": 2812.625, + "ECS": 2805.318181818182 + } + }, + { + "block": 14, + "logratio": -0.001915763671719528, + "sm_mhz": { + "BASE": 2814.181818181818, + "ECS": 2801.6521739130435 + } + }, + { + "block": 15, + "logratio": -0.0008815817033833717, + "sm_mhz": { + "BASE": 2810.1739130434785, + "ECS": 2802.0 + } + }, + { + "block": 16, + "logratio": -0.0023973091176170414, + "sm_mhz": { + "BASE": 2817.090909090909, + "ECS": 2809.913043478261 + } + }, + { + "block": 17, + "logratio": -0.0019317493103976346, + "sm_mhz": { + "BASE": 2815.478260869565, + "ECS": 2806.590909090909 + } + }, + { + "block": 18, + "logratio": -0.0012067052487729768, + "sm_mhz": { + "BASE": 2814.3333333333335, + "ECS": 2806.8695652173915 + } + }, + { + "block": 19, + "logratio": 0.001191768296656015, + "sm_mhz": { + "BASE": 2815.1304347826085, + "ECS": 2806.590909090909 + } + }, + { + "block": 20, + "logratio": -0.0034599160200707857, + "sm_mhz": { + "BASE": 2814.5454545454545, + "ECS": 2807.1739130434785 + } + }, + { + "block": 21, + "logratio": -0.0007130708443980893, + "sm_mhz": { + "BASE": 2815.478260869565, + "ECS": 2807.1304347826085 + } + }, + { + "block": 22, + "logratio": 0.008316182510481163, + "sm_mhz": { + "BASE": 2803.6363636363635, + "ECS": 2803.695652173913 + } + }, + { + "block": 23, + "logratio": -0.0027600702727861304, + "sm_mhz": { + "BASE": 2812.0, + "ECS": 2800.2608695652175 + } + } + ], + "mean_logratio": -0.0012178911913810631 + }, + { + "run": "same_api_r2", + "retained_blocks": 22, + "blocks": [ + { + "block": 1, + "logratio": 0.00030360745578139614, + "sm_mhz": { + "BASE": 2821.217391304348, + "ECS": 2813.318181818182 + } + }, + { + "block": 2, + "logratio": 0.0027640250938403277, + "sm_mhz": { + "BASE": 2827.0, + "ECS": 2824.2608695652175 + } + }, + { + "block": 3, + "logratio": 0.00476690417308312, + "sm_mhz": { + "BASE": 2821.521739130435, + "ECS": 2827.0 + } + }, + { + "block": 4, + "logratio": 0.003795467883834558, + "sm_mhz": { + "BASE": 2821.217391304348, + "ECS": 2824.0833333333335 + } + }, + { + "block": 5, + "logratio": 0.005243957751577266, + "sm_mhz": { + "BASE": 2821.521739130435, + "ECS": 2827.0 + } + }, + { + "block": 6, + "logratio": 0.005282512547641449, + "sm_mhz": { + "BASE": 2821.590909090909, + "ECS": 2824.375 + } + }, + { + "block": 7, + "logratio": 0.0009754923947022931, + "sm_mhz": { + "BASE": 2821.8260869565215, + "ECS": 2827.0 + } + }, + { + "block": 8, + "logratio": 0.005503805628825464, + "sm_mhz": { + "BASE": 2819.0434782608695, + "ECS": 2813.125 + } + }, + { + "block": 9, + "logratio": 0.005127983554682025, + "sm_mhz": { + "BASE": 2821.8260869565215, + "ECS": 2827.0 + } + }, + { + "block": 10, + "logratio": 0.004281626313858311, + "sm_mhz": { + "BASE": 2814.9166666666665, + "ECS": 2816.7272727272725 + } + }, + { + "block": 11, + "logratio": 0.004748379827354654, + "sm_mhz": { + "BASE": 2808.5652173913045, + "ECS": 2814.4347826086955 + } + }, + { + "block": 12, + "logratio": 0.007345642096450611, + "sm_mhz": { + "BASE": 2807.608695652174, + "ECS": 2814.086956521739 + } + }, + { + "block": 13, + "logratio": 0.0031641393697432463, + "sm_mhz": { + "BASE": 2806.521739130435, + "ECS": 2813.4545454545455 + } + }, + { + "block": 14, + "logratio": 0.007282437362431615, + "sm_mhz": { + "BASE": 2807.608695652174, + "ECS": 2816.8695652173915 + } + }, + { + "block": 15, + "logratio": 0.00804012696889922, + "sm_mhz": { + "BASE": 2810.9565217391305, + "ECS": 2805.5652173913045 + } + }, + { + "block": 16, + "logratio": -0.0015884497173273004, + "sm_mhz": { + "BASE": 2803.6666666666665, + "ECS": 2809.8695652173915 + } + }, + { + "block": 17, + "logratio": 0.0014360026121025271, + "sm_mhz": { + "BASE": 2810.304347826087, + "ECS": 2813.818181818182 + } + }, + { + "block": 18, + "logratio": 0.0017863296332549794, + "sm_mhz": { + "BASE": 2811.7916666666665, + "ECS": 2815.2272727272725 + } + }, + { + "block": 19, + "logratio": 0.0013262146546848541, + "sm_mhz": { + "BASE": 2810.304347826087, + "ECS": 2811.608695652174 + } + }, + { + "block": 20, + "logratio": 0.0023870705192710062, + "sm_mhz": { + "BASE": 2812.090909090909, + "ECS": 2812.3478260869565 + } + }, + { + "block": 21, + "logratio": 0.007555590958148173, + "sm_mhz": { + "BASE": 2809.8636363636365, + "ECS": 2811.9583333333335 + } + }, + { + "block": 22, + "logratio": 0.004038440067853699, + "sm_mhz": { + "BASE": 2812.090909090909, + "ECS": 2812.3478260869565 + } + } + ], + "mean_logratio": 0.00388942305230425 + }, + { + "run": "same_api_r3", + "retained_blocks": 23, + "blocks": [ + { + "block": 1, + "logratio": -0.0018937283658861936, + "sm_mhz": { + "BASE": 2811.375, + "ECS": 2820.0 + } + }, + { + "block": 2, + "logratio": -0.001205954139682941, + "sm_mhz": { + "BASE": 2826.391304347826, + "ECS": 2824.5652173913045 + } + }, + { + "block": 3, + "logratio": 0.00017800684290980584, + "sm_mhz": { + "BASE": 2821.2727272727275, + "ECS": 2824.7727272727275 + } + }, + { + "block": 4, + "logratio": 0.00031133899935431586, + "sm_mhz": { + "BASE": 2821.217391304348, + "ECS": 2825.5416666666665 + } + }, + { + "block": 5, + "logratio": -0.0030884491935352365, + "sm_mhz": { + "BASE": 2824.7727272727275, + "ECS": 2818.695652173913 + } + }, + { + "block": 6, + "logratio": -0.0026627683583360096, + "sm_mhz": { + "BASE": 2821.217391304348, + "ECS": 2825.1739130434785 + } + }, + { + "block": 7, + "logratio": -0.003560797160056861, + "sm_mhz": { + "BASE": 2821.8260869565215, + "ECS": 2823.818181818182 + } + }, + { + "block": 8, + "logratio": -0.00043459720135929913, + "sm_mhz": { + "BASE": 2813.318181818182, + "ECS": 2826.391304347826 + } + }, + { + "block": 9, + "logratio": -0.0018848507038642381, + "sm_mhz": { + "BASE": 2822.1304347826085, + "ECS": 2825.318181818182 + } + }, + { + "block": 10, + "logratio": -3.078778059073528e-05, + "sm_mhz": { + "BASE": 2823.5, + "ECS": 2820.8695652173915 + } + }, + { + "block": 11, + "logratio": -0.000878554824469191, + "sm_mhz": { + "BASE": 2824.5652173913045, + "ECS": 2826.391304347826 + } + }, + { + "block": 12, + "logratio": -0.002552570345722316, + "sm_mhz": { + "BASE": 2823.818181818182, + "ECS": 2823.3478260869565 + } + }, + { + "block": 13, + "logratio": -0.0018164345564883888, + "sm_mhz": { + "BASE": 2807.4347826086955, + "ECS": 2815.681818181818 + } + }, + { + "block": 14, + "logratio": -0.002886310209198939, + "sm_mhz": { + "BASE": 2813.478260869565, + "ECS": 2812.1739130434785 + } + }, + { + "block": 15, + "logratio": -0.0020690075813396547, + "sm_mhz": { + "BASE": 2810.090909090909, + "ECS": 2807.7391304347825 + } + }, + { + "block": 16, + "logratio": -0.001544629854110191, + "sm_mhz": { + "BASE": 2813.2608695652175, + "ECS": 2800.7391304347825 + } + }, + { + "block": 17, + "logratio": -0.007062031584247563, + "sm_mhz": { + "BASE": 2810.1739130434785, + "ECS": 2805.2727272727275 + } + }, + { + "block": 18, + "logratio": -0.00148487694449706, + "sm_mhz": { + "BASE": 2814.608695652174, + "ECS": 2813.695652173913 + } + }, + { + "block": 19, + "logratio": -0.01194964260560294, + "sm_mhz": { + "BASE": 2810.5652173913045, + "ECS": 2806.875 + } + }, + { + "block": 20, + "logratio": 0.0004017897977548479, + "sm_mhz": { + "BASE": 2808.9565217391305, + "ECS": 2809.590909090909 + } + }, + { + "block": 21, + "logratio": -0.0002992433409829687, + "sm_mhz": { + "BASE": 2810.217391304348, + "ECS": 2809.9545454545455 + } + }, + { + "block": 22, + "logratio": 0.0006963888987554512, + "sm_mhz": { + "BASE": 2809.8636363636365, + "ECS": 2808.695652173913 + } + }, + { + "block": 23, + "logratio": -0.0033566099909112523, + "sm_mhz": { + "BASE": 2810.217391304348, + "ECS": 2801.1304347826085 + } + } + ], + "mean_logratio": -0.0021336660957438068 + } + ], + "mean_change_percent": 0.08607140487792889, + "process_t95_percent": [ + -0.38732511965011324, + 0.5617176859726369 + ] + }, + "primary_hardware": { + "BASE": { + "mean_sampled_sm_mhz": 2776.837494325919, + "sm_mhz_histogram": { + "2715": 12, + "2790": 21, + "2820": 899, + "2827": 410, + "2805": 295, + "2812": 414, + "2782": 18, + "2797": 81, + "2760": 10, + "345": 10, + "180": 12, + "2775": 10, + "247": 11 + }, + "memory_mhz_histogram": { + "13801": 2193, + "810": 10 + }, + "temperature_range": [ + 34, + 47 + ], + "clock_reason_masks": { + "0": 2203 + } + }, + "ECS": { + "mean_sampled_sm_mhz": 2815.979972690032, + "sm_mhz_histogram": { + "2715": 3, + "2820": 648, + "2790": 30, + "2827": 620, + "2805": 345, + "2812": 409, + "2797": 129, + "2782": 6, + "2775": 7 + }, + "memory_mhz_histogram": { + "13801": 2197 + }, + "temperature_range": [ + 37, + 47 + ], + "clock_reason_masks": { + "0": 2197 + } + } + }, + "focused_cuda_tests": { + "passed": 60, + "warnings": 14, + "duration_seconds": 50.53 + }, + "cache_choice_audit": { + "3_BASE": { + "total": 110, + "common": 110, + "different_choices": [ + { + "key": "481b5eaf0863a955bf1b27c409a89fd0d887ff775a2039c1180b50005f4c4e1b.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "c51f1450e2dbf2dfdf96f9d9a24d6579bb6960a8164477df47e8b1c671a59459.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "836d62b61967369445baa2170231545e08e0a9938083acf1b3f3284ea50ca8ff.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "fd3be0f38cb22b0c109696f9fd052b265fbd8b6d2806acb2699bada606fd076f.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "b3172f8129aef67ad36e287181de6d995b9d05aea55a90a7b044c8b95fd670bf.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "b6d4ffcbaaa98b6289e2370a45043c2f4e4a29b92cf93f81041fd65e1d67e1a1.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "ebd2121db585838b4e95dd8e7dec9afb1d8b48cf96d86da816bfd30229fd7bf1.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "b36a2e30e0670d43d45b75478f264edb08db48e71f22f5f17d4d62dfe1e76ce1.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "b6dd6527c8ddf285b834936424739fa571a64de224a4329b5f43cda711772458.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 8, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "5b0ae63dfc19df474953623475716f67725b542707068c4d440cf014a7abc1b4.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "d4e7f8b5c9c60e8ddff42c99e2abcc39328212b9195eb1a341ded6e4b4e60ceb.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "4deaa98b07ebbce15c84b15163845c95cb50cebda7a2c8511e07b087a6f4fed0.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 16, + "num_warps": 2, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 64, + "R0_BLOCK": 16, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "bfc8cb09ea2205974ae805cb215f9a392f95011525b3b27a7eba23d4bb7330f1.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "ff901bac30b8c1a6b91b7194f20e1f1378f416d5cc30d5ddfb370db0aa1dc279.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "0f7faa18e83debef805dcc204ab39b372086f6be3acff0dcffeed5ac5f90cd87.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "9a5a4df838b2562da0de02f5bb75f02e701f2ad67c376df51d9c57c4e7a4a704.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "73822a71e4fba4878426d5d9db88739689431f5ce3d5dde1d2ec6deccacefc69.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "e940946c2192fe6effbeabc81599cc404b7e3ac2cf668f567bf649ea1ee26335.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "9ee2e90762aea15ba75b7066a0ccb760a7213b13b1d72d722ddae66069634fe6.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "f1045689b61a9131e8c2836254cfc96ab9b5fc8d38f5600de8d985f624f4c1fc.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "df8aa099c1cdcce62217028c3bfea0c8a2d72ef4434a189c9c3da022255a6a51.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "bd9f0a5607f1338452d0c17fe2216abe364777b7bc9b8742febc86679d806075.best_config", + "baseline": { + "XBLOCK": 8, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "b02d67db585fb2f7ae2ab33c063df911a9175cd6536a16807ccf77b9138b54ee.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "0386e83d7a8a1d21f562c83aa7f7f79c521eaed41413a2642a24c56b9c76364a.best_config", + "baseline": { + "XBLOCK": 64, + "R0_BLOCK": 32, + "num_warps": 16, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "219198755ba0c9f4b1747c28d19aa2ffca4c373b8b9b7837abf615075c8e20f1.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "de7622f1795fc03138403ec8b8e230b2449ce1740e0e2f670b2f095de7064d38.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "8048c877e767aef1337331b0b5a18a24c2d59aa2daa150a5ae646baa2101fcb5.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "552d4af8fe08461f0c73becf7b87f0b5134dcdb04087bf51a747fd60d0a0e705.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 2, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "960b2e55b2e7ae9bb4f3a7a4e48aad6274a11b6caf56fa246d686c758463dbbe.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "3299b1127e4bbaa0405e041aa28616f33a76b3eae1efe07f88b2461e3c179ee7.best_config", + "baseline": { + "XBLOCK": 32, + "R0_BLOCK": 32, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "f3b6463f86a975601225ef85441966e1c9541c89c9d07251d2099401fc4ca02b.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "72eaa88a99ca86ae56ebf17c92028523b09e8ff5fe9f219a1822b1b9475be3eb.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "f230d872f307eb986ae8fd07adccb04ce4468ebadafd4cdfc4d6753ac8d8c51e.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "64d91eb4dc4173d1a37f7eeed8887d2d6d8b99cfe0c22322b38f511763bbaa5a.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "ab79b3b58e2842c35da9b3af4e2ac29421eb0cfedd742ff32d57b65d5c3661e9.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "a23b7ee84cdf77c88130163f9ffb50a572c972c123a400fe5b3afe6b1f1c6e44.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 64, + "R0_BLOCK": 4, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "757fe12a6d4c4cb12ad657afcdcf0e1174cd69791886c70dbf0a4e111ba9b290.best_config", + "baseline": { + "XBLOCK": 64, + "R0_BLOCK": 32, + "num_warps": 16, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 8, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "c71ce21bb17bf7e4f0034c7ab97ac60ffa9954db2436c6556e5935eb7b575872.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "ef39c45cded32a95c94657c3fee9b23e9b4332f2d03b1ee3a922ecb0c56ec85a.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 8, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "ceaf0da3a2fa15e02b5e2a28a93b4ee256b9577559d55bd1581bdae332b16629.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "4cba4393ab0c05df7b88e4a6f38db04dfb8150933ca0ff938751a8741fb62eac.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "2c91452b7e8f35c92f5ca857c8e8b9bce56cd891240faddff298291e5532834d.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "6f84bcac51dc18e4488956c6159735d214b610943ae941a4100763b5e38898eb.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "d0969a1eac3a93ee40e7c260e97edbd734dc22507307416a0920cc2030f990fa.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "db98a6c58bcede96e8fff3bc418d7e15828d9c3ed94b02ac60d601d35d1b321e.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 32, + "R0_BLOCK": 32, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "024904826d32817024ef178f0f7221c1115ae5768592a69ff7b7b3227ff4b7ef.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "7822ec213930d270d22fd09e8b3e4b811330036a07ea06bf38bde4a6c094a1fb.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 32, + "R0_BLOCK": 32, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "317b7d1c393c9afb4c237f577fb9930a3866c6b94e69b116855b15a5380e6b3b.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + } + ] + }, + "2_FIXED": { + "total": 110, + "common": 109, + "different_choices": [ + { + "key": "95d97949ac3bf784e65ee78b8cb2d0dd44d228fd57f3c18c3849632892b47324.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "dee7675c1ad83c56eb456e91a902abd51b37a6d91b48bf06d997fb6e4b509819.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "fd3be0f38cb22b0c109696f9fd052b265fbd8b6d2806acb2699bada606fd076f.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "b3172f8129aef67ad36e287181de6d995b9d05aea55a90a7b044c8b95fd670bf.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "bfc8cb09ea2205974ae805cb215f9a392f95011525b3b27a7eba23d4bb7330f1.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "18b14c8c502b362c2eb73e71c5e29805842bfcab6e91448029bae59d9bb93f92.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "0f7faa18e83debef805dcc204ab39b372086f6be3acff0dcffeed5ac5f90cd87.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "e302bb8b28f3d225b64c718f3d0b671894e36903aa34e48cba920757270bac91.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "195032f505d67c19b1998cce1746de12e705f019f3c4c02aaca3395e53cacc27.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 2, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "73822a71e4fba4878426d5d9db88739689431f5ce3d5dde1d2ec6deccacefc69.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "9ee2e90762aea15ba75b7066a0ccb760a7213b13b1d72d722ddae66069634fe6.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "e6f241463ab8a643f746bfa5ab176a9bd66350be542adbdf7c546c670147936e.best_config", + "baseline": { + "XBLOCK": 2, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 8, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "f1045689b61a9131e8c2836254cfc96ab9b5fc8d38f5600de8d985f624f4c1fc.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "8e56757bfe2e14a26f1bd4619a5148469bb8c66d785f84f04a72e1d9c987c2ad.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "df8aa099c1cdcce62217028c3bfea0c8a2d72ef4434a189c9c3da022255a6a51.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "b02d67db585fb2f7ae2ab33c063df911a9175cd6536a16807ccf77b9138b54ee.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "0386e83d7a8a1d21f562c83aa7f7f79c521eaed41413a2642a24c56b9c76364a.best_config", + "baseline": { + "XBLOCK": 64, + "R0_BLOCK": 32, + "num_warps": 16, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "adf31de99adcc0b7d983bdb5e39ae3394d3e023d40f99c4602e63091fc670769.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "8048c877e767aef1337331b0b5a18a24c2d59aa2daa150a5ae646baa2101fcb5.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "552d4af8fe08461f0c73becf7b87f0b5134dcdb04087bf51a747fd60d0a0e705.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 2, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "960b2e55b2e7ae9bb4f3a7a4e48aad6274a11b6caf56fa246d686c758463dbbe.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "3299b1127e4bbaa0405e041aa28616f33a76b3eae1efe07f88b2461e3c179ee7.best_config", + "baseline": { + "XBLOCK": 32, + "R0_BLOCK": 32, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "e6284c4b3b46e7d476636adf41769e87dadcb31974567528c0c743a7c2373302.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "0ab62ca7938c98b3744d6172b7c1802170738f8cee426ef6c6136b5d511e27b0.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 8, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "72eaa88a99ca86ae56ebf17c92028523b09e8ff5fe9f219a1822b1b9475be3eb.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "64d91eb4dc4173d1a37f7eeed8887d2d6d8b99cfe0c22322b38f511763bbaa5a.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "a2fc7b54fa34e55ca1f008c75273b872dc32a27856a0ab6fe8b2e1670106fd7f.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "56d8b1a34f6147f7e24fa355df1b05068021cb3f5053c0a504c041c0874d9b67.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "ab79b3b58e2842c35da9b3af4e2ac29421eb0cfedd742ff32d57b65d5c3661e9.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "128e14dc2ee731f9d2db3cefeb5ebee1c935712cab339048ca337b803e18745c.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "757fe12a6d4c4cb12ad657afcdcf0e1174cd69791886c70dbf0a4e111ba9b290.best_config", + "baseline": { + "XBLOCK": 64, + "R0_BLOCK": 32, + "num_warps": 16, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 2, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "c71ce21bb17bf7e4f0034c7ab97ac60ffa9954db2436c6556e5935eb7b575872.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "ef39c45cded32a95c94657c3fee9b23e9b4332f2d03b1ee3a922ecb0c56ec85a.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 8, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "1a2f6422d8257011f515da151c0e0de1b8050b11ab084d5703b92a8f9f65c1ee.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "ceaf0da3a2fa15e02b5e2a28a93b4ee256b9577559d55bd1581bdae332b16629.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "9f0bb56290b8ae83d2a3bce8f029ac71b872a5ee9dcc8628a84b2fe28ee14c6d.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "09930e885216eadc8562324c49151556a48acde6568bc5dd46bafee438b016d2.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "2b1c974d10d420ef6da428de6dc1abe53185d6667e67e696544059c52d79ad68.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "78ff6b2def47f94a8640054d10a9f45ab6dadcbd39e98ef6275df5467d5f1aa8.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "d0969a1eac3a93ee40e7c260e97edbd734dc22507307416a0920cc2030f990fa.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "db98a6c58bcede96e8fff3bc418d7e15828d9c3ed94b02ac60d601d35d1b321e.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 32, + "R0_BLOCK": 32, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "024904826d32817024ef178f0f7221c1115ae5768592a69ff7b7b3227ff4b7ef.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "3442117b8da00b42a7f2ded30b96709073d95158c3505f7b9889e28d4497212b.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "952de5fdca6afca62174cb068f5e660f89a654fbcf5d95e2c392900f3411ec05.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + } + ] + }, + "1_FIXED": { + "total": 110, + "common": 109, + "different_choices": [ + { + "key": "95d97949ac3bf784e65ee78b8cb2d0dd44d228fd57f3c18c3849632892b47324.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "dee7675c1ad83c56eb456e91a902abd51b37a6d91b48bf06d997fb6e4b509819.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "836d62b61967369445baa2170231545e08e0a9938083acf1b3f3284ea50ca8ff.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "fd3be0f38cb22b0c109696f9fd052b265fbd8b6d2806acb2699bada606fd076f.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "d86f8cdc45dcf33c0524b21f773314b48e0dd78e6d1eaa550e9c18a3f8c00906.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "b6d4ffcbaaa98b6289e2370a45043c2f4e4a29b92cf93f81041fd65e1d67e1a1.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "f6fec06df63d7bf7d7db498b4e28b39007dc82f54a196cce47e7b81edc60885b.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "5b0ae63dfc19df474953623475716f67725b542707068c4d440cf014a7abc1b4.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "d4e7f8b5c9c60e8ddff42c99e2abcc39328212b9195eb1a341ded6e4b4e60ceb.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "bfc8cb09ea2205974ae805cb215f9a392f95011525b3b27a7eba23d4bb7330f1.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "18b14c8c502b362c2eb73e71c5e29805842bfcab6e91448029bae59d9bb93f92.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "34db1f3bb187bbc93a9d59062d213cdc3bf2a349fe5e5c6fd6c7c84468a5dc72.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "73822a71e4fba4878426d5d9db88739689431f5ce3d5dde1d2ec6deccacefc69.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "9ee2e90762aea15ba75b7066a0ccb760a7213b13b1d72d722ddae66069634fe6.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "f75022ae7a25845337de1ae8bf49ca2600d6fa77797ee807063d18072e958136.best_config", + "baseline": { + "XBLOCK": 2, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 8, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "df8aa099c1cdcce62217028c3bfea0c8a2d72ef4434a189c9c3da022255a6a51.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "0386e83d7a8a1d21f562c83aa7f7f79c521eaed41413a2642a24c56b9c76364a.best_config", + "baseline": { + "XBLOCK": 64, + "R0_BLOCK": 32, + "num_warps": 16, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 2, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "219198755ba0c9f4b1747c28d19aa2ffca4c373b8b9b7837abf615075c8e20f1.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "de7622f1795fc03138403ec8b8e230b2449ce1740e0e2f670b2f095de7064d38.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "8048c877e767aef1337331b0b5a18a24c2d59aa2daa150a5ae646baa2101fcb5.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "552d4af8fe08461f0c73becf7b87f0b5134dcdb04087bf51a747fd60d0a0e705.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 2, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "960b2e55b2e7ae9bb4f3a7a4e48aad6274a11b6caf56fa246d686c758463dbbe.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "3299b1127e4bbaa0405e041aa28616f33a76b3eae1efe07f88b2461e3c179ee7.best_config", + "baseline": { + "XBLOCK": 32, + "R0_BLOCK": 32, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "5d956c57a997cc5e1b9ec0c9a9faa578a44ae246f93ab9ba8e3996cbf56b6f2f.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "72eaa88a99ca86ae56ebf17c92028523b09e8ff5fe9f219a1822b1b9475be3eb.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "f230d872f307eb986ae8fd07adccb04ce4468ebadafd4cdfc4d6753ac8d8c51e.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "64d91eb4dc4173d1a37f7eeed8887d2d6d8b99cfe0c22322b38f511763bbaa5a.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "56d8b1a34f6147f7e24fa355df1b05068021cb3f5053c0a504c041c0874d9b67.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "bd9a4e6b44047511a8399c709045ef133066bd8236923f6063027d9c2a148278.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "0946b4617397d4b4aa5f8c7110d62d46f891e8539cacdb780cc2a0e72ada350c.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "a23b7ee84cdf77c88130163f9ffb50a572c972c123a400fe5b3afe6b1f1c6e44.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 64, + "R0_BLOCK": 4, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "757fe12a6d4c4cb12ad657afcdcf0e1174cd69791886c70dbf0a4e111ba9b290.best_config", + "baseline": { + "XBLOCK": 64, + "R0_BLOCK": 32, + "num_warps": 16, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 2, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "c71ce21bb17bf7e4f0034c7ab97ac60ffa9954db2436c6556e5935eb7b575872.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "ef39c45cded32a95c94657c3fee9b23e9b4332f2d03b1ee3a922ecb0c56ec85a.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 8, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "09930e885216eadc8562324c49151556a48acde6568bc5dd46bafee438b016d2.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "2c91452b7e8f35c92f5ca857c8e8b9bce56cd891240faddff298291e5532834d.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "2b1c974d10d420ef6da428de6dc1abe53185d6667e67e696544059c52d79ad68.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "78ff6b2def47f94a8640054d10a9f45ab6dadcbd39e98ef6275df5467d5f1aa8.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "d0969a1eac3a93ee40e7c260e97edbd734dc22507307416a0920cc2030f990fa.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "952de5fdca6afca62174cb068f5e660f89a654fbcf5d95e2c392900f3411ec05.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "317b7d1c393c9afb4c237f577fb9930a3866c6b94e69b116855b15a5380e6b3b.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + } + ] + }, + "4_BASE": { + "total": 110, + "common": 110, + "different_choices": [ + { + "key": "481b5eaf0863a955bf1b27c409a89fd0d887ff775a2039c1180b50005f4c4e1b.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "95d97949ac3bf784e65ee78b8cb2d0dd44d228fd57f3c18c3849632892b47324.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "c51f1450e2dbf2dfdf96f9d9a24d6579bb6960a8164477df47e8b1c671a59459.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "836d62b61967369445baa2170231545e08e0a9938083acf1b3f3284ea50ca8ff.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "fd3be0f38cb22b0c109696f9fd052b265fbd8b6d2806acb2699bada606fd076f.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "b6d4ffcbaaa98b6289e2370a45043c2f4e4a29b92cf93f81041fd65e1d67e1a1.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "f6fec06df63d7bf7d7db498b4e28b39007dc82f54a196cce47e7b81edc60885b.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "ebd2121db585838b4e95dd8e7dec9afb1d8b48cf96d86da816bfd30229fd7bf1.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "b6dd6527c8ddf285b834936424739fa571a64de224a4329b5f43cda711772458.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 32, + "R0_BLOCK": 32, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "8712a8732a73919b44f218afdeb3d2e92105b6c4a1b4ce85e066e8f3533afae0.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "4deaa98b07ebbce15c84b15163845c95cb50cebda7a2c8511e07b087a6f4fed0.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 16, + "num_warps": 2, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 32, + "R0_BLOCK": 16, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "18b14c8c502b362c2eb73e71c5e29805842bfcab6e91448029bae59d9bb93f92.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "0f7faa18e83debef805dcc204ab39b372086f6be3acff0dcffeed5ac5f90cd87.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "9a5a4df838b2562da0de02f5bb75f02e701f2ad67c376df51d9c57c4e7a4a704.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "195032f505d67c19b1998cce1746de12e705f019f3c4c02aaca3395e53cacc27.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 2, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "74c024d1bcb3860fce2b7e11a6278f949ee4c9c225af7f91996615f6f68bf258.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "73822a71e4fba4878426d5d9db88739689431f5ce3d5dde1d2ec6deccacefc69.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "b8481c85a1d6227393d043dab7b6fab092f6fe0ef8c79867aabb0587a586f30d.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "9ee2e90762aea15ba75b7066a0ccb760a7213b13b1d72d722ddae66069634fe6.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "f1045689b61a9131e8c2836254cfc96ab9b5fc8d38f5600de8d985f624f4c1fc.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "8e56757bfe2e14a26f1bd4619a5148469bb8c66d785f84f04a72e1d9c987c2ad.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "df8aa099c1cdcce62217028c3bfea0c8a2d72ef4434a189c9c3da022255a6a51.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "b78e464c8896ddd0922b6ecc98bb53cf8d76a7adf1bfeed3296cebf555aec41b.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "bd9f0a5607f1338452d0c17fe2216abe364777b7bc9b8742febc86679d806075.best_config", + "baseline": { + "XBLOCK": 8, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 64, + "R0_BLOCK": 4, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "0386e83d7a8a1d21f562c83aa7f7f79c521eaed41413a2642a24c56b9c76364a.best_config", + "baseline": { + "XBLOCK": 64, + "R0_BLOCK": 32, + "num_warps": 16, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "219198755ba0c9f4b1747c28d19aa2ffca4c373b8b9b7837abf615075c8e20f1.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "8048c877e767aef1337331b0b5a18a24c2d59aa2daa150a5ae646baa2101fcb5.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "552d4af8fe08461f0c73becf7b87f0b5134dcdb04087bf51a747fd60d0a0e705.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 2, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "960b2e55b2e7ae9bb4f3a7a4e48aad6274a11b6caf56fa246d686c758463dbbe.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "3299b1127e4bbaa0405e041aa28616f33a76b3eae1efe07f88b2461e3c179ee7.best_config", + "baseline": { + "XBLOCK": 32, + "R0_BLOCK": 32, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "474ce4e91c1502c672b011450ec7009fb7431cf11737680c4f6f56b73c9b8d7c.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "0ab62ca7938c98b3744d6172b7c1802170738f8cee426ef6c6136b5d511e27b0.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 8, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "5d956c57a997cc5e1b9ec0c9a9faa578a44ae246f93ab9ba8e3996cbf56b6f2f.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "f3b6463f86a975601225ef85441966e1c9541c89c9d07251d2099401fc4ca02b.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "f230d872f307eb986ae8fd07adccb04ce4468ebadafd4cdfc4d6753ac8d8c51e.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "64d91eb4dc4173d1a37f7eeed8887d2d6d8b99cfe0c22322b38f511763bbaa5a.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "bd9a4e6b44047511a8399c709045ef133066bd8236923f6063027d9c2a148278.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "a23b7ee84cdf77c88130163f9ffb50a572c972c123a400fe5b3afe6b1f1c6e44.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 64, + "R0_BLOCK": 32, + "num_warps": 16, + "num_stages": 1 + } + }, + { + "key": "7cefd1d389e586783d8d8e2fde058613935c8ad90a17cd007e73ed241c630b7c.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "757fe12a6d4c4cb12ad657afcdcf0e1174cd69791886c70dbf0a4e111ba9b290.best_config", + "baseline": { + "XBLOCK": 64, + "R0_BLOCK": 32, + "num_warps": 16, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 8, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "c71ce21bb17bf7e4f0034c7ab97ac60ffa9954db2436c6556e5935eb7b575872.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "ef39c45cded32a95c94657c3fee9b23e9b4332f2d03b1ee3a922ecb0c56ec85a.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 8, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "1a2f6422d8257011f515da151c0e0de1b8050b11ab084d5703b92a8f9f65c1ee.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "4cba4393ab0c05df7b88e4a6f38db04dfb8150933ca0ff938751a8741fb62eac.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "2b1c974d10d420ef6da428de6dc1abe53185d6667e67e696544059c52d79ad68.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "78ff6b2def47f94a8640054d10a9f45ab6dadcbd39e98ef6275df5467d5f1aa8.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "7ac06103d95122a8a5cdc8fa5704a4b2c529175822b3aee46523735919a7d912.best_config", + "baseline": { + "num_warps": 1, + "num_stages": 1 + }, + "candidate": { + "num_warps": 1, + "num_stages": 2 + } + } + ] + }, + "5_FIXED": { + "total": 110, + "common": 109, + "different_choices": [ + { + "key": "481b5eaf0863a955bf1b27c409a89fd0d887ff775a2039c1180b50005f4c4e1b.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "95d97949ac3bf784e65ee78b8cb2d0dd44d228fd57f3c18c3849632892b47324.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "836d62b61967369445baa2170231545e08e0a9938083acf1b3f3284ea50ca8ff.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "fd3be0f38cb22b0c109696f9fd052b265fbd8b6d2806acb2699bada606fd076f.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "d86f8cdc45dcf33c0524b21f773314b48e0dd78e6d1eaa550e9c18a3f8c00906.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "5a1160a1d21f810d24a085d43875cf658f1dd22cb5945fbfba7082cf83b51eed.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "b3172f8129aef67ad36e287181de6d995b9d05aea55a90a7b044c8b95fd670bf.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "2947964b2bba915e610e2a864a546a4577542c8c6005a145d3ae8971c32ac39d.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "ebd2121db585838b4e95dd8e7dec9afb1d8b48cf96d86da816bfd30229fd7bf1.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "b6dd6527c8ddf285b834936424739fa571a64de224a4329b5f43cda711772458.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 32, + "R0_BLOCK": 32, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "5b0ae63dfc19df474953623475716f67725b542707068c4d440cf014a7abc1b4.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "3f7678533e94378a570c1613f4717b6129e03e5befbf924e3b29e2c40af7aabc.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "18b14c8c502b362c2eb73e71c5e29805842bfcab6e91448029bae59d9bb93f92.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "a30d3467fd8fcb078fbe1a4b3d71525b6b0cccf27a2190bb8501de8af6b13e17.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "34db1f3bb187bbc93a9d59062d213cdc3bf2a349fe5e5c6fd6c7c84468a5dc72.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "195032f505d67c19b1998cce1746de12e705f019f3c4c02aaca3395e53cacc27.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 2, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "0549f73cb67250fb221c7c11505d05b263945cf13cf47edcaea0adc8fa08e814.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "e940946c2192fe6effbeabc81599cc404b7e3ac2cf668f567bf649ea1ee26335.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "ea9757ffc7a8ce4b8ee817c8b5e93203ba9ddb777d44b0f11d0cde30644a5c77.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "9ee2e90762aea15ba75b7066a0ccb760a7213b13b1d72d722ddae66069634fe6.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "4df032128c21c2506c450ba1963fe9b2dd17ae5671ada8888ca0a57f90616c51.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "df8aa099c1cdcce62217028c3bfea0c8a2d72ef4434a189c9c3da022255a6a51.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "b78e464c8896ddd0922b6ecc98bb53cf8d76a7adf1bfeed3296cebf555aec41b.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "b02d67db585fb2f7ae2ab33c063df911a9175cd6536a16807ccf77b9138b54ee.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "0386e83d7a8a1d21f562c83aa7f7f79c521eaed41413a2642a24c56b9c76364a.best_config", + "baseline": { + "XBLOCK": 64, + "R0_BLOCK": 32, + "num_warps": 16, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 8, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "219198755ba0c9f4b1747c28d19aa2ffca4c373b8b9b7837abf615075c8e20f1.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "de7622f1795fc03138403ec8b8e230b2449ce1740e0e2f670b2f095de7064d38.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "8048c877e767aef1337331b0b5a18a24c2d59aa2daa150a5ae646baa2101fcb5.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "552d4af8fe08461f0c73becf7b87f0b5134dcdb04087bf51a747fd60d0a0e705.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 64, + "R0_BLOCK": 32, + "num_warps": 16, + "num_stages": 1 + } + }, + { + "key": "3299b1127e4bbaa0405e041aa28616f33a76b3eae1efe07f88b2461e3c179ee7.best_config", + "baseline": { + "XBLOCK": 32, + "R0_BLOCK": 32, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "e6284c4b3b46e7d476636adf41769e87dadcb31974567528c0c743a7c2373302.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "474ce4e91c1502c672b011450ec7009fb7431cf11737680c4f6f56b73c9b8d7c.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "0ab62ca7938c98b3744d6172b7c1802170738f8cee426ef6c6136b5d511e27b0.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 2, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "5d956c57a997cc5e1b9ec0c9a9faa578a44ae246f93ab9ba8e3996cbf56b6f2f.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "72eaa88a99ca86ae56ebf17c92028523b09e8ff5fe9f219a1822b1b9475be3eb.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "46e77de3d24dde64ae3afd1635c5ea9905441067879b634677a93012403533f1.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "710b92c96f4174545e4793c6bcf83711d3b6a9bc3024d1f741beecf04749b296.best_config", + "baseline": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "0946b4617397d4b4aa5f8c7110d62d46f891e8539cacdb780cc2a0e72ada350c.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "a23b7ee84cdf77c88130163f9ffb50a572c972c123a400fe5b3afe6b1f1c6e44.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 64, + "R0_BLOCK": 4, + "num_warps": 8, + "num_stages": 1 + } + }, + { + "key": "757fe12a6d4c4cb12ad657afcdcf0e1174cd69791886c70dbf0a4e111ba9b290.best_config", + "baseline": { + "XBLOCK": 64, + "R0_BLOCK": 32, + "num_warps": 16, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "c71ce21bb17bf7e4f0034c7ab97ac60ffa9954db2436c6556e5935eb7b575872.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "ef39c45cded32a95c94657c3fee9b23e9b4332f2d03b1ee3a922ecb0c56ec85a.best_config", + "baseline": { + "XBLOCK": 16, + "R0_BLOCK": 32, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 8, + "R0_BLOCK": 32, + "num_warps": 2, + "num_stages": 1 + } + }, + { + "key": "09930e885216eadc8562324c49151556a48acde6568bc5dd46bafee438b016d2.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "2c91452b7e8f35c92f5ca857c8e8b9bce56cd891240faddff298291e5532834d.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 8, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 1024, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "6f84bcac51dc18e4488956c6159735d214b610943ae941a4100763b5e38898eb.best_config", + "baseline": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "d0969a1eac3a93ee40e7c260e97edbd734dc22507307416a0920cc2030f990fa.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "3442117b8da00b42a7f2ded30b96709073d95158c3505f7b9889e28d4497212b.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "952de5fdca6afca62174cb068f5e660f89a654fbcf5d95e2c392900f3411ec05.best_config", + "baseline": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 512, + "num_warps": 4, + "num_stages": 1 + } + }, + { + "key": "317b7d1c393c9afb4c237f577fb9930a3866c6b94e69b116855b15a5380e6b3b.best_config", + "baseline": { + "XBLOCK": 128, + "num_warps": 4, + "num_stages": 1 + }, + "candidate": { + "XBLOCK": 256, + "num_warps": 4, + "num_stages": 1 + } + } + ] + }, + "0_BASE": { + "total": 110, + "common": 110, + "different_choices": [] + }, + "frozen": { + "total": 111, + "common": 110, + "different_choices": [] + } + }, + "secondary_protocols": { + "controlled_main_r2": { + "arms": [ + "BASE", + "ECS" + ], + "process_pairs": 6, + "blocks": 72, + "paired_logmean_change_percent": 0.02058626570751996, + "mean_block_difference_ms": 0.002166914378499819, + "hierarchical_bootstrap_95_percent": [ + -0.912346628963445, + 0.989445600438023 + ], + "bootstrap_draws": 20000, + "bootstrap_seed": 20261019, + "process_pair_t_95_percent": [ + -1.429479090635824, + 1.4919834514687136 + ], + "process_pair_t_one_sided_upper95_percent": 1.172174308799368, + "t_interval_caveat": "t interval over independent process-pair means; n=2 is calibration only, not a precise population estimate", + "interval_method": "resample independent process pairs, then ABBA blocks within each selected pair; frame samples are not iid replicates", + "per_pair_change_percent": [ + -1.3588576917719564, + 1.5269476680395746, + -1.0409687146497932, + 0.9277401107158486, + -1.2770760196324105, + 1.394163852214109 + ], + "interpretation": "interval crosses zero: unresolved sign, not proof of zero cost", + "stats": { + "BASE": { + "rounds": 144, + "samples": 7200, + "median_of_round_medians_ms": 11.62086520344019, + "pooled_p50_ms": 11.628862586803734, + "pooled_p90_ms": 11.784044210799038, + "min_ms": 11.364558944478631, + "max_ms": 33.7275939527899, + "event_p50_ms": 11.60422420501709 + }, + "ECS": { + "rounds": 144, + "samples": 7200, + "median_of_round_medians_ms": 11.632081295829266, + "pooled_p50_ms": 11.632530018687248, + "pooled_p90_ms": 11.750231846235693, + "min_ms": 11.400016024708748, + "max_ms": 33.8139480445534, + "event_p50_ms": 11.607679843902588 + } + }, + "kernel_audits": [ + { + "pair": 0, + "shared_semantic_programs": 172, + "common_programs_identical_cubin": 31, + "different_configs": [], + "all_compiler_artifact_hashes_unchanged": true, + "fingerprinted_artifacts": 835 + }, + { + "pair": 1, + "shared_semantic_programs": 172, + "common_programs_identical_cubin": 31, + "different_configs": [], + "all_compiler_artifact_hashes_unchanged": true, + "fingerprinted_artifacts": 835 + }, + { + "pair": 2, + "shared_semantic_programs": 172, + "common_programs_identical_cubin": 31, + "different_configs": [], + "all_compiler_artifact_hashes_unchanged": true, + "fingerprinted_artifacts": 835 + }, + { + "pair": 3, + "shared_semantic_programs": 172, + "common_programs_identical_cubin": 31, + "different_configs": [], + "all_compiler_artifact_hashes_unchanged": true, + "fingerprinted_artifacts": 835 + }, + { + "pair": 4, + "shared_semantic_programs": 172, + "common_programs_identical_cubin": 31, + "different_configs": [], + "all_compiler_artifact_hashes_unchanged": true, + "fingerprinted_artifacts": 835 + }, + { + "pair": 5, + "shared_semantic_programs": 172, + "common_programs_identical_cubin": 31, + "different_configs": [], + "all_compiler_artifact_hashes_unchanged": true, + "fingerprinted_artifacts": 835 + } + ], + "monitor_errors": [], + "memory_scope": "resident timing only; retain independent cold-first/full-window capacity measurements separately" + }, + "controlled_native_r1": { + "arms": [ + "BASE", + "NATIVE" + ], + "process_pairs": 2, + "blocks": 16, + "paired_logmean_change_percent": 0.5091941213821622, + "mean_block_difference_ms": 0.06005537579767406, + "hierarchical_bootstrap_95_percent": [ + -0.7580916671069791, + 1.7542458933901175 + ], + "bootstrap_draws": 20000, + "bootstrap_seed": 20261019, + "interval_method": "resample independent process pairs, then ABBA blocks within each selected pair; frame samples are not iid replicates", + "per_pair_change_percent": [ + 1.690826169532391, + -0.6587075407557829 + ], + "interpretation": "interval crosses zero: unresolved sign, not proof of zero cost", + "stats": { + "BASE": { + "rounds": 32, + "samples": 1600, + "median_of_round_medians_ms": 11.722697759978473, + "pooled_p50_ms": 11.715475469827652, + "pooled_p90_ms": 11.856800084933639, + "min_ms": 11.545370100066066, + "max_ms": 15.718108974397182, + "event_p50_ms": 11.690415859222412 + }, + "NATIVE": { + "rounds": 32, + "samples": 1600, + "median_of_round_medians_ms": 11.78879226790741, + "pooled_p50_ms": 11.806232971139252, + "pooled_p90_ms": 11.99429426342249, + "min_ms": 11.468925047665834, + "max_ms": 21.098918979987502, + "event_p50_ms": 11.780960083007812 + } + }, + "kernel_audits": [ + { + "pair": 0, + "shared_semantic_programs": 172, + "common_programs_identical_cubin": 31, + "different_configs": [], + "all_compiler_artifact_hashes_unchanged": true, + "fingerprinted_artifacts": 830 + }, + { + "pair": 1, + "shared_semantic_programs": 172, + "common_programs_identical_cubin": 31, + "different_configs": [], + "all_compiler_artifact_hashes_unchanged": true, + "fingerprinted_artifacts": 830 + } + ], + "monitor_errors": [], + "memory_scope": "resident timing only; retain independent cold-first/full-window capacity measurements separately" + }, + "controlled_aa_r0": { + "arms": [ + "BASE", + "BASE2" + ], + "process_pairs": 2, + "blocks": 16, + "paired_logmean_change_percent": 0.35110862371332213, + "mean_block_difference_ms": 0.04091367736691609, + "hierarchical_bootstrap_95_percent": [ + -0.2119685661667238, + 0.9130768977863435 + ], + "bootstrap_draws": 20000, + "bootstrap_seed": 20261019, + "process_pair_t_95_percent": [ + -5.974273426474185, + 7.102017383865119 + ], + "t_interval_caveat": "t interval over independent process-pair means; n=2 is calibration only, not a precise population estimate", + "interval_method": "resample independent process pairs, then ABBA blocks within each selected pair; frame samples are not iid replicates", + "per_pair_change_percent": [ + 0.8666281125339586, + -0.1617760953293716 + ], + "interpretation": "interval crosses zero: unresolved sign, not proof of zero cost", + "stats": { + "BASE": { + "rounds": 32, + "samples": 1600, + "median_of_round_medians_ms": 11.606976855546236, + "pooled_p50_ms": 11.608579545281827, + "pooled_p90_ms": 11.749405972659588, + "min_ms": 11.476099025458097, + "max_ms": 18.376658903434873, + "event_p50_ms": 11.58292818069458 + }, + "BASE2": { + "rounds": 32, + "samples": 1600, + "median_of_round_medians_ms": 11.651177424937487, + "pooled_p50_ms": 11.66504097636789, + "pooled_p90_ms": 11.785010271705687, + "min_ms": 11.452123988419771, + "max_ms": 16.8201201595366, + "event_p50_ms": 11.63966417312622 + } + }, + "kernel_audits": [ + { + "pair": 0, + "shared_semantic_programs": 179, + "common_programs_identical_cubin": 38, + "different_configs": [], + "all_compiler_artifact_hashes_unchanged": true, + "fingerprinted_artifacts": 830 + }, + { + "pair": 1, + "shared_semantic_programs": 179, + "common_programs_identical_cubin": 38, + "different_configs": [], + "all_compiler_artifact_hashes_unchanged": true, + "fingerprinted_artifacts": 830 + } + ], + "monitor_errors": [], + "memory_scope": "resident timing only; retain independent cold-first/full-window capacity measurements separately" + }, + "serial_matched_r0": { + "scope": "normal API; one GPU0 process at a time; matched Python hash seeds; fixed cache and CPU8", + "pairs": [ + { + "seed": 0, + "arms": { + "BASE": { + "p50_ms": 11.655072448775172, + "p90_ms": 11.742073320783675, + "round_logmean_ms": 11.65466631448555, + "round_medians_ms": [ + 11.660026502795517, + 11.664921068586409, + 11.664274497888982, + 11.648745508864522, + 11.664624908007681, + 11.652737041004002, + 11.635109083727002, + 11.646926519460976 + ] + }, + "ECS": { + "p50_ms": 11.463750968687236, + "p90_ms": 11.575755872763693, + "round_logmean_ms": 11.466276711387163, + "round_medians_ms": [ + 11.484920978546143, + 11.46163686644286, + 11.506321025080979, + 11.441759415902197, + 11.443693074397743, + 11.46172743756324, + 11.468874872662127, + 11.461416608653963 + ] + } + }, + "logratio": -0.0162963744269935, + "percent": -1.6164306897764709 + }, + { + "seed": 1, + "arms": { + "BASE": { + "p50_ms": 11.755812563933432, + "p90_ms": 11.829267209395766, + "round_logmean_ms": 11.754112419677941, + "round_medians_ms": [ + 11.769437463954091, + 11.729583027772605, + 11.758126551285386, + 11.755166575312614, + 11.738269124180079, + 11.752361082471907, + 11.769573553465307, + 11.760441004298627 + ] + }, + "ECS": { + "p50_ms": 11.616128496825695, + "p90_ms": 11.690132855437696, + "round_logmean_ms": 11.61715565365439, + "round_medians_ms": [ + 11.616323958151042, + 11.610337533056736, + 11.611675610765815, + 11.614450486376882, + 11.617486015893519, + 11.61593315191567, + 11.640554526820779, + 11.610513087362051 + ] + } + }, + "logratio": -0.011720231297017492, + "percent": -1.1651816924455123 + }, + { + "seed": 2, + "arms": { + "BASE": { + "p50_ms": 11.435658088885248, + "p90_ms": 11.544119915924966, + "round_logmean_ms": 11.442691456269566, + "round_medians_ms": [ + 11.40038634184748, + 11.438753572292626, + 11.394820525310934, + 11.452439473941922, + 11.533723562024534, + 11.432531522586942, + 11.428103549405932, + 11.461345944553614 + ] + }, + "ECS": { + "p50_ms": 11.572300922125578, + "p90_ms": 11.684036930091679, + "round_logmean_ms": 11.574341032928734, + "round_medians_ms": [ + 11.634438531473279, + 11.537801125086844, + 11.549462447874248, + 11.647828505374491, + 11.539698927663267, + 11.531829135492444, + 11.597914039157331, + 11.556396028026938 + ] + } + }, + "logratio": 0.01143944271406605, + "percent": 1.150512334989468 + } + ], + "mean_change_percent": -0.5510482288227784, + "process_pair_t_95_percent": [ + -4.157432071093869, + 3.191037365799539 + ], + "stats": { + "BASE": { + "samples": 1200, + "p50_ms": 11.659641517326236, + "p90_ms": 11.789045156911016, + "min_ms": 11.306868866086006, + "max_ms": 22.86916086450219 + }, + "ECS": { + "samples": 1200, + "p50_ms": 11.57341303769499, + "p90_ms": 11.673081968910992, + "min_ms": 11.363105848431587, + "max_ms": 24.471957935020328 + } + }, + "compiler_artifacts": [ + { + "run": 0, + "unchanged": true, + "count": 835 + }, + { + "run": 1, + "unchanged": true, + "count": 835 + }, + { + "run": 2, + "unchanged": true, + "count": 835 + }, + { + "run": 3, + "unchanged": true, + "count": 835 + }, + { + "run": 4, + "unchanged": true, + "count": 835 + }, + { + "run": 5, + "unchanged": true, + "count": 835 + } + ], + "interpretation": "finite n=3 independent pairs; a confidence interval is not proof of zero cost", + "cold_peak": "separate existing cold-process measurement, not replaced" + }, + "compiled_graph_replay_diagnostic": { + "processes": 1, + "blocks": 24, + "paired_change_percent": 0.226145777601847, + "conditional_block_bootstrap95_percent": [ + 0.0706033734667633, + 0.38418086800490775 + ], + "scope": "compiled graph only on same captured real inputs and CUDA context; one process, not population/API acceptance", + "stats": { + "BASE": { + "p50_ms": 7.320728036575019, + "p90_ms": 7.417856063693762 + }, + "ECS": { + "p50_ms": 7.336758426390588, + "p90_ms": 7.425044267438352 + } + } + } + }, + "natural_stride_not_adopted": [ + { + "run": "natural_stride_r0", + "status": { + "status": "completed", + "correctness_cases": 21, + "dtype": "float32", + "tf32": false, + "scope": "single small-stack input backward only, no alpha or forward/model timing" + }, + "paired_change_percent": 0.06525239059100577, + "conditional_block95_percent": [ + -0.028697385654204866, + 0.14577425505556788 + ], + "p50_ms": { + "old": 0.3089229576289654, + "natural": 0.3091339021921158 + } + }, + { + "run": "natural_stride_r1", + "status": { + "status": "completed", + "correctness_cases": 21, + "dtype": "float32", + "tf32": false, + "scope": "single small-stack input backward only, no alpha or forward/model timing" + }, + "paired_change_percent": 0.03573459119047764, + "conditional_block95_percent": [ + -0.0006084065066323472, + 0.07264982019066607 + ], + "p50_ms": { + "old": 0.31001504976302385, + "natural": 0.3102158661931753 + } + } + ], + "kernel_counts": { + "full_model_per_frame": 657, + "so2_per_frame": 32, + "single_stack_forward": 8, + "single_stack_backward": 8, + "scope": "new representative profiler traces; time under profiler is not used for speed conclusions" + }, + "wrapper_equivalence": { + "real_pr_kernel_definitions": 191, + "in_process_kernel_definitions": 191, + "identical_kernel_body_multiset": true, + "same_call_after_symbol_renaming": true, + "real_call": "2eb42115a595ebef74c6ffd358fcb1a3cb9ef2f39461cc8b91cd9de89b71ebb7", + "in_process_call": "2eb42115a595ebef74c6ffd358fcb1a3cb9ef2f39461cc8b91cd9de89b71ebb7" + }, + "first_peak_capacity": { + "scope": "retained independent cold-process measurements; source unchanged; new timing protocols do not replace first peak", + "baseline": { + "first": { + "allocated": 498199552, + "reserved": 528482304 + }, + "complete": { + "allocated": 498199552, + "reserved": 528482304 + }, + "steady": { + "allocated": 397536256, + "reserved": 528482304 + } + }, + "candidate": { + "first": { + "allocated": 480156672, + "reserved": 507510784 + }, + "complete": { + "allocated": 480156672, + "reserved": 507510784 + }, + "steady": { + "allocated": 379493376, + "reserved": 507510784 + } + }, + "first_alloc_reduction_percent": 3.621617066407956, + "steady_alloc_reduction_percent": 4.538675335313314 + }, + "invalid_diagnostics": [ + "Two launcher-inspection failures before controlled timing; no comparative result used.", + "One own-worker initialization cancelled after inspection incompatibility was identified.", + "Two graph-replay setup failures (bound method / missing no_grad); not candidate numerical failures." + ], + "limitations": [ + "Neo N64 only; no new multi-model/PT2/large-edge acceptance.", + "Only partial Megakernels scheduling ideas are used, not its runtime or a cross-layer mega-kernel.", + "No stable speedup or exact zero-cost guarantee; initialization-order effect observed, low-level mechanism not uniquely attributed.", + "The natural-stride experiment was not adopted; it did not demonstrate a repeatable benefit.", + "Large-edge make_fx/AOT dispatch must be checked separately; Dynamo boundary unit tests are not AOT deployment acceptance." + ], + "raw_evidence": { + "file": "ecs-edge-cohort-controlled-raw.json.gz", + "sha256": "213178e9d326af552766ffb5b0f002b924e56a9ede703b4b7748bcde912e329d", + "compressed_bytes": 1311322 + } +} \ No newline at end of file diff --git a/doc/development/ecs-edge-cohort-controlled-timing.md b/doc/development/ecs-edge-cohort-controlled-timing.md new file mode 100644 index 0000000000..9f90018e0e --- /dev/null +++ b/doc/development/ecs-edge-cohort-controlled-timing.md @@ -0,0 +1,235 @@ +# ECS controlled timing follow-up + +This follow-up investigates the previously reported N64 latency increase of +1.2845%. The kernel implementation is unchanged. It replaces the earlier +"less than 3% means noise" interpretation with counterbalanced measurements +and process-level uncertainty. No stable speedup or exact zero-cost guarantee +is claimed. + +## Main finding + +Four independent processes each held both implementations in **one CUDA +context**, using normal ASE energy/force/virial/stress calls. Two Python hash +seeds (0, 1) were each tested with baseline-first and ECS-first compilation. +Each process ran 24 symmetric ABBA blocks, 50 calls per round, eight warmups +before each round: 9600 measured calls per arm, 96 blocks in total. + +| Metric | Baseline | ECS | +| --- | ---: | ---: | +| Pooled normal-API P50, ms | 11.683581 | 11.708142 | +| Pooled normal-API P90, ms | 11.911459 | 11.932993 | +| Direct ratio of pooled P50s | reference | +0.2102% latency | +| Mean process-level paired effect | reference | **+0.0795% latency** | +| 95% Student-t interval over four independent process effects | — | **[-0.3866%, +0.5479%]** | + +The paired estimate averages log ratios of matched block medians within each +process, then gives each process equal weight. It is not the ratio of pooled +medians; both are reported rather than choosing one favorable number. Frames +are correlated within processes and are not 19200 independent experiments. + +The measured interval does not support a persistent +1.2845% penalty under +these controlled conditions. It also does not establish exact zero overhead, +or equivalence on other models, sizes, compilers or hardware. Four processes +remain a finite sample. There is no fixed 3% significance rule. + +| Process | First compiled model | Hash seed | Paired ECS latency change | +| --- | --- | ---: | ---: | +| 0 | Baseline | 0 | +0.2999% | +| 1 | ECS | 0 | -0.1536% | +| 2 | Baseline | 1 | +0.3656% | +| 3 | ECS | 1 | -0.1924% | + +Compilation/initialization order is an observed confound, not a uniquely +identified low-level cause. No claim is made that a particular cache bank, +Python hash lookup or GPU clock policy explains the entire historical result. + +## Why the old result was not an isolated ECS comparison + +The earlier independent cold runs also independently autotuned other Inductor +kernels. Compared with the first baseline process, the first candidate had +**41 different launch choices among 109 matching cached programs**. Other +candidate runs had 44/49 changed choices; other baseline runs themselves had +48/47 among 110. These are actual XBLOCK/warp/stage changes, not differences +in recorded autotune duration. This does not quantify how much of the 1.28% +each change caused, but it prevents assigning the whole difference to ECS. + +The five SO(2) GEMM schedule values remained `(64,64,32,4,2)`. A source option +such as `max_autotune=False` does not mean every generated pointwise/reduction +kernel has no runtime choice. In the controlled cache, all 110 anchor choices +were preserved. Shared semantic programs used identical actual configs, and +835 autotune/PTX/cubin file hashes remained unchanged during each main timed +window. Nothing was retuned halfway through the comparison. + +## Controls, diagnostics and rejected explanations + +These protocols have different scopes; do not pool their absolute times or +call their confidence intervals interchangeable. + +| Protocol | Independent groups | Paired change | Process t 95% interval / limitation | +| --- | ---: | ---: | --- | +| Two resident workers, GPU0, 12 ABBA blocks/group | 6 | +0.0206% | [-1.4295%, +1.4920%]; initialization-order bias remained | +| One worker at a time, GPU0, matched seeds, 400 formal calls/process | 3 pairs | -0.5510% | [-4.1574%, +3.1910%]; too few groups for a tight conclusion | +| Identical baseline versus baseline clone, GPU1 | 2 | +0.3511% | pair effects +0.8666% / -0.1618%; calibration only | +| Candidate source with ECS disabled versus original baseline, GPU1 | 2 | +0.5092% | pair effects +1.6908% / -0.6587%; no stable compatibility-overhead attribution | +| Same-context compiled-graph replay, GPU1 | 1 | +0.2261% | conditional block interval [+0.0706%, +0.3842%], not population/API acceptance | + +The last diagnostic intentionally excludes ASE, neighbor preprocessing and the +AOT runtime shell. It provides a small-overhead observation, not a substitute +for complete API performance. This model's energy inference path is +`make_fx -> aot_module_simplified -> compile_fx_inner`, **bypassing Dynamo**; +it would be incorrect to attribute the observed cost to Dynamo inference guards. + +Both GPUs were checked for foreign work on the measured card. Only one worker +executed at a time; known resident workers in the resident diagnostic were +allowed to keep idle contexts. GPU0 workers used CPU8, monitor CPU16; GPU1 used +CPU40, monitor CPU48, on their respective local NUMA nodes. NVML sampled actual +timing intervals at 50 ms. SM clocks remained dynamic, not locked. Memory +clocks, temperature, power and available clock-reason data are retained. +Whole-process idle/compilation readings are not called timing-window clocks. +No driver settings, global GPU clocks, or other users' processes were changed. + +As an explicitly secondary, post-stratified check, 90/96 primary blocks meet +all of: mean sampled SM-clock difference <=0.5%, memory clock 13801 MHz in both +arms, mean temperature difference <=2 C. Their paired estimate is +0.0861%, +process t 95% interval [-0.3873%, +0.5617%], consistent with the full result. +This is a hardware-matching criterion, **not** a latency-noise cutoff. All 96 +blocks remain in the primary analysis. Selection changes composition and +does not prove constant per-kernel clocks. In the full primary sampling, +baseline SM mean was 2776.84 MHz and candidate 2815.98 MHz; ten baseline +samples reported memory idle-clock 810 MHz. These readings are not hidden. + +In the resident experiment, average sampled SM clocks for first/second +initialized workers were approximately 2776.89/2775.65 MHz. That near equality +does not support blaming the whole initialization-order bias on downclocking. +Dynamic per-round frequency variation still prevents claiming constant clocks. +Outliers were retained; some individual API calls exceeded 30 ms. + +## Same-context setup and validation + +The manual harness first compiles one normal calculator. It then copies the +exact three reviewed kernel definitions and registered backward into the +experiment process, clears the **module-level** SeZM compiled cache, and +compiles the other calculator. Each retains its separate model-local cache. +This is necessary: the shared cache key does not independently prove that the +second experimental mode produced a new graph. + +The harness asserts distinct compiled wrappers and the expected ECS marker, +keeps the first model's cache unchanged, and checks all three reference frames. +Runtime transplantation is **benchmark setup only**; the production proposal +uses ordinary checked-in functions and does not generate or rewrite kernel +source. No checkpoint or production file is modified by the harness. + +To audit this method against the real PR integration, the generated candidate +has the same multiset of 191 embedded function bodies and the same entire +`call` AST after symbolic-size renaming. Normalized call SHA-256: +`2eb42115a595ebef74c6ffd358fcb1a3cb9ef2f39461cc8b91cd9de89b71ebb7`. +This counts source definitions, not runtime launches. The baseline remains the +unmodified commit `668b60cc2a9559f79abb9c33acd959833376344f`. + +Every same-context process passes three-frame energy/force/virial/stress +comparisons against the pure-PyTorch reference and its paired baseline, using +`atol=1e-5, rtol=1e-4`; worst error/tolerance ratio across these runs is 0.376674. +All compared outputs are finite. The reference is one fresh pure-PyTorch +process with three self-repeats, not a new multi-process Torch matrix. +The 60 focused CUDA tests were rerun: 60 passed, 14 deprecation warnings. + +## Bounded specialization attempt: not adopted + +A full single cohort has `count == E`, `start == 0`. Four runtime +`saved_edges=E` / `output_edges=E` operands were experimentally replaced with +the natural-stride sentinel zero. No floating arithmetic, launch count or tile +was changed. Each of two processes checked 21 generated cases: +E=0/1/37/129/8193/10114/16384, random/zero/tiny legal alpha; input gradients +were bitwise equal, finite, and caller-owned inputs unchanged. + +| Small-stack input-backward only | Original P50 ms | Natural stride P50 ms | Paired change | +| --- | ---: | ---: | ---: | +| Process 0 | 0.308923 | 0.309134 | +0.0653% | +| Process 1 | 0.310015 | 0.310216 | +0.0357% | + +Conditional block intervals include zero. The selected binary sets differ, +so it is not established that the compiler erased every difference; nevertheless +there is no measured benefit. This attempt is **not adopted** and is not an +end-to-end speedup. Alpha backward itself was unchanged. + +## Memory and the extent of Megakernels use + +The unchanged implementation retains the earlier independent cold-process +capacity result: **first/complete allocated peak 498.199552 -> 480.156672 MB +(-3.6216%)**, reserved 528.482304 -> 507.510784 MB (-3.9683%). Steady allocated +397.536256 -> 379.493376 MB (-4.5387%) is secondary. JIT/first execution is not +removed from the primary peak. Dual-model resident capacity is not substituted +for this single-model measurement. + +Current ECS borrows bounded-workset/dependency scheduling ideas; it does not +integrate the HazyResearch runtime or retain the reverse chain wholly on chip. +The new representative traces show **657 GPU launches/frame in both arms, +including 32 SO(2) launches**: two stacks, each 8 forward and 8 backward kernels. +There is no mega-kernel launch-count reduction in this proposal. + +The reference [Megakernels implementation](https://github.com/HazyResearch/Megakernels/blob/main/include/megakernel.cuh) +uses device loader/consumer/storer/controller roles and synchronization. Those +mechanisms are not present here. Earlier single-CTA persistent PBS experiments +in this project regressed at E=158002 (baseline backward about 5.047 ms, best of +12 PBS configurations about 8.780 ms); that route was not promoted. Fusion can +lose column parallelism, increase registers/spill and synchronization costs. +Fewer buffers or launches alone do not establish faster execution. + +## Reproduce and inspect + +Use the same checkpoint/environment as the original protocol. Provide absolute +paths for `BASE_ROOT`, `PR_ROOT`, `MODEL`, `TORCH_REFERENCE` and fresh result dirs. +CPU numbers below are specific to the reported dual-socket server; select valid +GPU-local cores on another host. + +```bash +PY=/path/to/cuda-environment/bin/python +TOOLS=$PR_ROOT/source/tests/pt_expt/kernels + +# Initialize a shared cache using normal BASE and ECS benchmark calls first. +# A nonempty explicit cache requires --allow-warm-cache in the original CLI. +$PY "$TOOLS/benchmark_so2_edge_cohort.py" --mode base --source-root "$BASE_ROOT" \ + --gpu 0 --model "$MODEL" --reference "$TORCH_REFERENCE" \ + --cache-dir "$CACHE" --out "$PREP_BASE" +$PY "$TOOLS/benchmark_so2_edge_cohort.py" --mode ecs --source-root "$PR_ROOT" \ + --gpu 0 --model "$MODEL" --reference "$TORCH_REFERENCE" \ + --cache-dir "$CACHE" --allow-warm-cache --out "$PREP_ECS" + +# Main same-context normal API; repeat all four seed/order combinations. +PYTHONHASHSEED=0 $PY "$TOOLS/benchmark_so2_edge_cohort_same_context.py" \ + --baseline-root "$BASE_ROOT" --candidate-root "$PR_ROOT" \ + --model "$MODEL" --reference "$TORCH_REFERENCE" --cache "$CACHE" \ + --gpu 0 --cpu 8 --monitor-cpu 16 --first BASE --blocks 24 --out "$NEW_OUT" +# Other combinations: seed0/ECS-first, seed1/BASE-first, seed1/ECS-first. +$PY "$TOOLS/analyze_so2_edge_cohort_same_context.py" \ + "$OUT0" "$OUT1" "$OUT2" "$OUT3" --out "$SUMMARY" +$PY "$TOOLS/analyze_so2_edge_cohort_clocks.py" \ + "$OUT0" "$OUT1" "$OUT2" "$OUT3" --out "$CLOCK_SENSITIVITY" + +# Secondary serialized control (never two resident contexts on the card). +$PY "$TOOLS/benchmark_so2_edge_cohort_serial.py" \ + --baseline-root "$BASE_ROOT" --candidate-root "$PR_ROOT" \ + --model "$MODEL" --reference "$TORCH_REFERENCE" --cache "$CACHE" \ + --gpu 0 --cpu 8 --monitor-cpu 16 --seeds 0 1 2 --rounds 8 --samples 50 \ + --conditioning-samples 200 --out "$SERIAL_OUT" +$PY "$TOOLS/analyze_so2_edge_cohort_serial.py" "$SERIAL_OUT" +``` + +`benchmark_so2_edge_cohort_paired.py` and its analyzer reproduce the secondary +resident-worker ABBA experiment (`--pairs 6 --blocks 12 --profile`). It is not +the primary estimator because of the observed resident-process bias. +Original standalone CLI behavior remains unchanged when no control hook is +provided; the shared measurement body is AST-identical to the measured copy. + +[Summary JSON](ecs-edge-cohort-controlled-results.json) includes complete +configuration, uncertainty, cache-choice changes and limitations. +[Compressed raw JSON](ecs-edge-cohort-controlled-raw.json.gz) includes per-call +wall/Event samples, conditional experiments, correctness and representative +profile summaries. It excludes private manifests, model weights and compiler +caches. Its SHA-256 is recorded in the summary; decompress with `python -m gzip +-d` or read with Python's `gzip.open`. + +Unresolved gates remain: wider model/size matrices, large-edge make_fx/AOT +dispatch and deployment, PT2/C++ acceptance, and the exact low-level cause of +initialization bias. Passing a Dynamo boundary unit test is not an AOT runtime +bucket-dispatch acceptance test. Default-off draft status remains unchanged. diff --git a/source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_impl.py b/source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_impl.py index ad207e309a..2728d023b4 100644 --- a/source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_impl.py +++ b/source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_impl.py @@ -129,6 +129,8 @@ def compare(got, ref): torch.cuda.synchronize() wall.append(1000 * (time.perf_counter() - start)) gpu.append(s.elapsed_time(e)) + if globals().get("_controlled_rounds") is not None: + globals()["_controlled_rounds"](globals()) complete = { "allocated": torch.cuda.max_memory_allocated(), "reserved": torch.cuda.max_memory_reserved(), diff --git a/source/tests/pt_expt/kernels/_so2_edge_cohort_controlled_worker.py b/source/tests/pt_expt/kernels/_so2_edge_cohort_controlled_worker.py new file mode 100644 index 0000000000..3b21737f42 --- /dev/null +++ b/source/tests/pt_expt/kernels/_so2_edge_cohort_controlled_worker.py @@ -0,0 +1,245 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +# ruff: noqa: T201 -- manual benchmark CLI output +"""Resident worker preserving the public benchmark's pre-validation entry.""" + +import argparse +import ast +import hashlib +import json +import os +from pathlib import Path +import runpy +import subprocess +import sys +import time + +HERE = Path(__file__).resolve().parent +import _so2_edge_cohort_benchmark_common as common + +p = argparse.ArgumentParser() +p.add_argument("--baseline-root", type=Path, required=True) +p.add_argument("--candidate-root", type=Path, required=True) +p.add_argument("--model", type=Path, required=True) +p.add_argument("--reference", type=Path, required=True) +p.add_argument( + "--variant", choices=("BASE", "BASE2", "NATIVE", "ECS", "ECS2"), required=True +) +p.add_argument("--out", type=Path, required=True) +p.add_argument("--cache", type=Path, required=True) +p.add_argument("--gpu", default="0") +p.add_argument("--cpu", type=int, default=8) +a = p.parse_args() +os.sched_setaffinity(0, {a.cpu}) +init = json.loads(sys.stdin.readline()) +allowed = set(init["pids"]) +original_check = subprocess.check_output + + +def checked(cmd, *args, **kwargs): + value = original_check(cmd, *args, **kwargs) + if isinstance(cmd, list) and "--query-compute-apps=pid" in cmd: + foreign = {int(x) for x in value.split()} - allowed + if foreign: + raise RuntimeError(f"foreign compute processes: {foreign}") + return "" + return value + + +common.ROOT = ( + a.baseline_root.resolve() + if a.variant in ("BASE", "BASE2") + else a.candidate_root.resolve() +) +original_setup = common.setup + + +def setup(*args, **kwargs): + subprocess.check_output = checked + try: + original_setup(*args, **kwargs) + finally: + subprocess.check_output = original_check + os.environ.update( + DP_SO2_EDGE_COHORT_INFER="1" if a.variant in ("ECS", "ECS2") else "0", + TORCHINDUCTOR_CACHE_DIR=str(a.cache / "inductor"), + TRITON_CACHE_DIR=str(a.cache / "triton"), + ) + + +common.setup = setup + + +def emit(value): + print("@CONTROL@" + json.dumps(value), flush=True) + + +def callback(ns): + import torch + from torch._dynamo.utils import counters + from torch._inductor.codecache import PyCodeCache + + wrappers, kernels = [], [] + for module in PyCodeCache.modules: + path = Path(module.__file__) + if "def call(" in path.read_text(): + wrappers.append({"path": str(path), "sha256": common.sha(path)}) + for name, kernel in vars(module).items(): + if not hasattr(kernel, "launchers") or not hasattr( + kernel, "triton_meta" + ): + continue + source = ast.parse(kernel.fn.src) + for node in ast.walk(source): + if isinstance(node, ast.FunctionDef): + node.name = "kernel" + identity = { + "body": ast.dump(source, include_attributes=False), + "signature": { + k: str(v) + for k, v in kernel.triton_meta.get("signature", {}).items() + }, + "constants": kernel.triton_meta.get("constants", {}), + } + launches = [] + for launch in kernel.launchers: + compiled = next( + ( + r.kernel + for r in kernel.compile_results + if str(r.config) == str(launch.config) + ), + None, + ) + binary = ( + getattr(compiled, "asm", {}).get("cubin") + if compiled is not None + else None + ) + launches.append( + { + "config": str(launch.config), + "cubin_sha256": hashlib.sha256(binary).hexdigest() + if binary is not None + else None, + "n_regs": getattr(launch, "n_regs", None), + "n_spills": getattr(launch, "n_spills", None), + "shared": getattr(launch, "shared", None), + } + ) + kernels.append( + { + "name": name, + "semantic_sha256": hashlib.sha256( + json.dumps(identity, sort_keys=True, default=str).encode() + ).hexdigest(), + "launchers": launches, + } + ) + first = { + "variant": a.variant, + "pid": os.getpid(), + "entry_wall_ms": common.stats(ns["wall"]), + "entry_event_ms": common.stats(ns["gpu"]), + "first_ms": ns["first_ms"], + "first_peak": ns["first"], + "wrappers": wrappers, + "kernels": kernels, + "source_sha256": { + str(path.relative_to(common.ROOT)): common.sha(path) + for path in (common.ROOT / "deepmd/pt_expt/kernels/triton/sezm").glob( + "so2_*cohort.py" + ) + }, + "counters": {k: dict(v) for k, v in counters.items()}, + } + common.write(a.out / "ready.json", first) + emit(dict(status="ready", **first)) + rounds = [] + evaluate, frames = ns["evaluate"], ns["frames"] + for line in sys.stdin: + command = json.loads(line) + if command["action"] == "stop": + break + if command["action"] == "profile": + from torch.profiler import ProfilerActivity, profile, record_function + + for pos in frames[:8]: + evaluate(pos) + torch.cuda.synchronize() + with profile( + activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA] + ) as prof: + for i in range(5): + torch.cuda.synchronize() + with record_function(f"CONTROLLED_FRAME_{i}"): + evaluate(frames[8 + i]) + torch.cuda.synchronize() + trace = a.out / "trace.json" + prof.export_chrome_trace(str(trace)) + emit({"status": "profiled", "variant": a.variant, "trace": str(trace)}) + continue + if command.get("cpu") is not None: + os.sched_setaffinity(0, {command["cpu"]}) + for i in range(command.get("warmup", 8)): + evaluate(frames[i % len(frames)]) + torch.cuda.synchronize() + torch.cuda.reset_peak_memory_stats() + pre_counters = {k: dict(v) for k, v in counters.items()} + start_ns = time.monotonic_ns() + wall, events = [], [] + for i in range(command.get("samples", 50)): + torch.cuda.synchronize() + s, e = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + start = time.perf_counter() + s.record() + evaluate(frames[8 + i % 30]) + e.record() + torch.cuda.synchronize() + wall.append(1000 * (time.perf_counter() - start)) + events.append(s.elapsed_time(e)) + record = { + "variant": a.variant, + "pid": os.getpid(), + "command": command, + "start_monotonic_ns": start_ns, + "end_monotonic_ns": time.monotonic_ns(), + "cpu": sorted(os.sched_getaffinity(0)), + "wall_ms": common.stats(wall), + "event_ms": common.stats(events), + "peak": { + "allocated": torch.cuda.max_memory_allocated(), + "reserved": torch.cuda.max_memory_reserved(), + }, + "counters_before": pre_counters, + "counters_after": {k: dict(v) for k, v in counters.items()}, + } + rounds.append(record) + common.write(a.out / "rounds.json", rounds) + emit(record) + + +sys.argv = [ + str(HERE / "_so2_edge_cohort_benchmark_impl.py"), + "--gpu", + a.gpu, + "--out", + str(a.out), + "--model", + str(a.model), + "--nrep", + "2", + "--reference", + str(a.reference), +] +ns = runpy.run_path( + str(HERE / "_so2_edge_cohort_benchmark_impl.py"), + init_globals={"_controlled_rounds": callback}, + run_name="__main__", +) +result = ns["result"] +if not result["precision_pass"] or not result["finite"]: + raise SystemExit("accuracy failure") +emit({"status": "completed", "variant": a.variant, "precision_pass": True}) diff --git a/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_clocks.py b/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_clocks.py new file mode 100644 index 0000000000..710163c1cc --- /dev/null +++ b/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_clocks.py @@ -0,0 +1,76 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +# ruff: noqa: T201 -- manual benchmark CLI output +"""Supplement only: match observed clock/temperature bins, never replace raw trials.""" + +import argparse +import json +from pathlib import Path + +import numpy as np +from scipy.stats import t + +p = argparse.ArgumentParser(description=__doc__) +p.add_argument("directories", type=Path, nargs="+") +p.add_argument("--out", type=Path, required=True) +p.add_argument("--memory-clock", type=int, default=13801) +a = p.parse_args() +result = [] +for root in a.directories: + rows = json.loads((root / "same_context_rounds.json").read_text()) + monitor = json.loads((root / "same_context_monitor.json").read_text()) + kept = [] + for block in sorted({r["command"]["block"] for r in rows}): + group = [r for r in rows if r["command"]["block"] == block] + clocks = {} + temperatures = {} + memory = {} + effects = {} + for arm in ("BASE", "ECS"): + rounds = [r for r in group if r["variant"] == arm] + samples = [ + m + for r in rounds + for m in monitor + if r["start_monotonic_ns"] <= m["t_ns"] <= r["end_monotonic_ns"] + ] + clocks[arm] = np.mean([m["sm_mhz"] for m in samples]) + temperatures[arm] = np.mean([m["temperature"] for m in samples]) + memory[arm] = {m["mem_mhz"] for m in samples} + effects[arm] = np.mean(np.log([r["wall_ms"]["median"] for r in rounds])) + if ( + abs(clocks["ECS"] / clocks["BASE"] - 1) <= 0.005 + and memory["BASE"] == memory["ECS"] == {a.memory_clock} + and abs(temperatures["ECS"] - temperatures["BASE"]) <= 2 + ): + kept.append( + { + "block": block, + "logratio": float(effects["ECS"] - effects["BASE"]), + "sm_mhz": {k: float(v) for k, v in clocks.items()}, + } + ) + result.append( + { + "run": root.name, + "retained_blocks": len(kept), + "blocks": kept, + "mean_logratio": float(np.mean([r["logratio"] for r in kept])) + if kept + else None, + } + ) +logs = np.array([r["mean_logratio"] for r in result if r["mean_logratio"] is not None]) +radius = t.ppf(0.975, len(logs) - 1) * logs.std(ddof=1) / np.sqrt(len(logs)) +summary = { + "criteria": f"block mean SM clock difference <=0.5%, both memory clocks {a.memory_clock}MHz, mean temperature difference <=2C", + "primary": False, + "caveat": "post-stratified sensitivity analysis; conditioning can change composition and does not prove constant clocks or replace full results", + "processes": result, + "mean_change_percent": float(100 * np.expm1(logs.mean())), + "process_t95_percent": ( + 100 * np.expm1(logs.mean() + np.array([-1, 1]) * radius) + ).tolist(), +} +a.out.write_text(json.dumps(summary, indent=2)) +print(json.dumps({k: v for k, v in summary.items() if k != "processes"}, indent=2)) +print([(r["run"], r["retained_blocks"]) for r in result]) diff --git a/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_paired.py b/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_paired.py new file mode 100644 index 0000000000..bd72c76f2e --- /dev/null +++ b/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_paired.py @@ -0,0 +1,229 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +# ruff: noqa: T201 -- manual benchmark CLI output +"""Analyze ABBA blocks using process/temporal clusters, not iid frame counts.""" + +import argparse +import ast +from collections import Counter, defaultdict +import json +from pathlib import Path + +import numpy as np +from scipy.stats import t as student_t + +p = argparse.ArgumentParser() +p.add_argument("directory", type=Path) +a = p.parse_args() +root = a.directory +records = json.loads((root / "rounds.json").read_text()) +control = json.loads((root / "controller.json").read_text()) +assert control["status"] == "completed", ( + "incomplete/failed trials cannot be final evidence" +) +arms = ast.literal_eval(control["args"]["variants"]) +blocks = defaultdict(list) +for row in records: + blocks[(row["pair"], row["command"]["block"])].append(row) +effects, absolute, by_pair = [], [], defaultdict(list) +for (pair, block), rows in sorted(blocks.items()): + assert len(rows) == 4 + per_arm = { + arm: [r["wall_ms"]["median"] for r in rows if r["variant"] == arm] + for arm in arms + } + assert all(len(v) == 2 for v in per_arm.values()) + logratio = float( + np.mean(np.log(per_arm[arms[1]])) - np.mean(np.log(per_arm[arms[0]])) + ) + difference = float(np.mean(per_arm[arms[1]]) - np.mean(per_arm[arms[0]])) + effects.append( + { + "pair": pair, + "block": block, + "logratio": logratio, + "percent": 100 * np.expm1(logratio), + "difference_ms": difference, + } + ) + by_pair[pair].append(logratio) + absolute.append(difference) +rng = np.random.default_rng(20261019) +matrix = np.asarray(list(by_pair.values())) +draws = [] +for _ in range(20000): + pair_indices = rng.integers(0, len(matrix), size=len(matrix)) + resampled = [ + rng.choice(matrix[i], size=len(matrix[i]), replace=True).mean() + for i in pair_indices + ] + draws.append(np.mean(resampled)) +ci = 100 * np.expm1(np.percentile(draws, [2.5, 97.5])) +pair_means = matrix.mean(axis=1) +process_t_ci = None +upper95 = None +if len(pair_means) > 1: + se = pair_means.std(ddof=1) / np.sqrt(len(pair_means)) + radius = student_t.ppf(0.975, len(pair_means) - 1) * se + process_t_ci = ( + 100 * np.expm1([pair_means.mean() - radius, pair_means.mean() + radius]) + ).tolist() + upper95 = float( + 100 + * np.expm1(pair_means.mean() + student_t.ppf(0.95, len(pair_means) - 1) * se) + ) +stats = {} +for arm in arms: + rows = [r for r in records if r["variant"] == arm] + samples = [v for r in rows for v in r["wall_ms"]["samples"]] + stats[arm] = { + "rounds": len(rows), + "samples": len(samples), + "median_of_round_medians_ms": float( + np.median([r["wall_ms"]["median"] for r in rows]) + ), + "pooled_p50_ms": float(np.median(samples)), + "pooled_p90_ms": float(np.percentile(samples, 90)), + "min_ms": float(min(samples)), + "max_ms": float(max(samples)), + "event_p50_ms": float( + np.median([v for r in rows for v in r["event_ms"]["samples"]]) + ), + } +monitor = json.loads((root / "monitor.json").read_text()) +telemetry = [] +for row in records: + values = [ + m + for m in monitor + if row["start_monotonic_ns"] <= m["t_ns"] <= row["end_monotonic_ns"] + ] + telemetry.append( + { + "pair": row["pair"], + "block": row["command"]["block"], + "position": row["command"]["position"], + "arm": row["variant"], + "count": len(values), + "sm_mhz": { + str(k): v for k, v in Counter(m["sm_mhz"] for m in values).items() + }, + "mem_mhz": { + str(k): v for k, v in Counter(m["mem_mhz"] for m in values).items() + }, + "temperature_range": [ + min(m["temperature"] for m in values), + max(m["temperature"] for m in values), + ] + if values + else None, + "mean_power_w": float(np.mean([m["power_mw"] / 1000 for m in values])) + if values + else None, + } + ) +ready = json.loads((root / "ready.json").read_text()) +kernel_audits = [] +for pair in by_pair: + arm_kernels = [] + for arm in arms: + entry = next(r for r in ready if r["pair"] == pair and r["variant"] == arm) + grouped = defaultdict(list) + for kernel in entry.get("kernels", []): + grouped[kernel["semantic_sha256"]].extend(kernel["launchers"]) + arm_kernels.append(grouped) + shared = set(arm_kernels[0]) & set(arm_kernels[1]) + different = [] + identical_binaries = 0 + for identity in shared: + configs = [{v["config"] for v in group[identity]} for group in arm_kernels] + if configs[0] != configs[1]: + different.append( + {"semantic_sha256": identity, "configs": [sorted(v) for v in configs]} + ) + bins = [ + {v["cubin_sha256"] for v in group[identity] if v["cubin_sha256"]} + for group in arm_kernels + ] + if bins[0] and bins[0] == bins[1]: + identical_binaries += 1 + before = json.loads((root / f"cache_pair{pair}_before.json").read_text()) + after = json.loads((root / f"cache_pair{pair}_after.json").read_text()) + kernel_audits.append( + { + "pair": pair, + "shared_semantic_programs": len(shared), + "common_programs_identical_cubin": identical_binaries, + "different_configs": different, + "all_compiler_artifact_hashes_unchanged": before == after, + "fingerprinted_artifacts": len(before), + } + ) +profiles = [] +for path in sorted(root.glob("pair*_*/*.json")): + if path.name != "trace.json": + continue + events = json.loads(path.read_text())["traceEvents"] + frames = [ + v + for v in events + if v.get("name", "").startswith("CONTROLLED_FRAME_") and v.get("ph") == "X" + ] + for frame in frames: + kernels = [ + v + for v in events + if v.get("cat") == "kernel" + and v.get("ph") == "X" + and frame["ts"] <= v["ts"] + and v["ts"] + v["dur"] <= frame["ts"] + frame["dur"] + ] + mixed = [v for v in kernels if v["name"].startswith("_stack_")] + profiles.append( + { + "run": path.parent.name, + "frame": frame["name"], + "kernel_count": len(kernels), + "kernel_sum_ms": sum(v["dur"] for v in kernels) / 1000, + "mixing_kernel_count": len(mixed), + "mixing_kernel_sum_ms": sum(v["dur"] for v in mixed) / 1000, + "mixing_names": dict(Counter(v["name"] for v in mixed)), + } + ) +summary = { + "arms": arms, + "process_pairs": len(by_pair), + "blocks": len(effects), + "paired_logmean_change_percent": float(100 * np.expm1(matrix.mean())), + "mean_block_difference_ms": float(np.mean(absolute)), + "hierarchical_bootstrap_95_percent": ci.tolist(), + "process_pair_t_95_percent": process_t_ci, + "process_pair_t_one_sided_upper95_percent": upper95, + "t_interval_caveat": "t interval over independent process-pair means; n=2 is calibration only, not a precise population estimate", + "bootstrap_draws": 20000, + "bootstrap_seed": 20261019, + "interval_method": "resample independent process pairs, then ABBA blocks within each selected pair; frame samples are not iid replicates", + "per_pair_change_percent": [float(100 * np.expm1(row.mean())) for row in matrix], + "interpretation": "positive interval: repeatable cost in this controlled setup" + if ci[0] > 0 + else "negative interval: repeatable improvement in this controlled setup" + if ci[1] < 0 + else "interval crosses zero: unresolved sign, not proof of zero cost", + "stats": stats, + "block_effects": effects, + "interval_telemetry": telemetry, + "kernel_audits": kernel_audits, + "profiles": profiles, + "monitor_errors": control["errors"], + "memory_scope": "resident timing only; retain independent cold-first/full-window capacity measurements separately", +} +(root / "summary.json").write_text(json.dumps(summary, indent=2)) +print( + json.dumps( + { + k: v + for k, v in summary.items() + if k not in ("block_effects", "interval_telemetry", "profiles") + }, + indent=2, + ) +) diff --git a/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_same_context.py b/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_same_context.py new file mode 100644 index 0000000000..43fb585ffc --- /dev/null +++ b/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_same_context.py @@ -0,0 +1,104 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +# ruff: noqa: T201 -- manual benchmark CLI output +"""Cluster normal same-context API contrasts by independent process.""" + +import argparse +import json +from pathlib import Path + +import numpy as np +from scipy.stats import t + +p = argparse.ArgumentParser() +p.add_argument("directories", type=Path, nargs="+") +p.add_argument("--out", type=Path, required=True) +a = p.parse_args() +rng = np.random.default_rng(20261019) +processes = [] +all_rows = [] +for root in a.directories: + status = json.loads((root / "same_context_status.json").read_text()) + assert status["status"] == "completed" + rows = json.loads((root / "same_context_rounds.json").read_text()) + all_rows.extend(rows) + effects = [] + for block in sorted({r["command"]["block"] for r in rows}): + group = [r for r in rows if r["command"]["block"] == block] + m = { + arm: np.mean( + np.log([r["wall_ms"]["median"] for r in group if r["variant"] == arm]) + ) + for arm in ("BASE", "ECS") + } + effects.append(float(m["ECS"] - m["BASE"])) + draws = np.mean(rng.choice(effects, (20000, len(effects))), axis=1) + meta = json.loads((root / "same_context_manifest.json").read_text()) + processes.append( + { + "run": root.name, + "first": meta["first"], + "blocks": len(effects), + "logmean": float(np.mean(effects)), + "change_percent": float(100 * np.expm1(np.mean(effects))), + "conditional_block_ci95_percent": ( + 100 * np.expm1(np.percentile(draws, [2.5, 97.5])) + ).tolist(), + "worst_error_ratio": max( + v["max_ratio"] + for case in meta["accuracy"].values() + for v in case.values() + ), + "wrappers": { + arm: entry["sha256"] for arm, entry in meta["wrappers"].items() + }, + } + ) +logs = np.array([p["logmean"] for p in processes]) +se = logs.std(ddof=1) / np.sqrt(len(logs)) if len(logs) > 1 else None +interval = ( + ( + 100 + * np.expm1(logs.mean() + np.array([-1, 1]) * t.ppf(0.975, len(logs) - 1) * se) + ).tolist() + if se is not None + else None +) +summary = { + "processes": processes, + "process_count": len(processes), + "mean_change_percent": float(100 * np.expm1(logs.mean())), + "process_t95_percent": interval, + "confidence_note": "processes, not frames, are independent replicates; conditional block intervals do not establish population equivalence", + "stats": { + arm: { + "samples": sum( + len(r["wall_ms"]["samples"]) for r in all_rows if r["variant"] == arm + ), + "p50_ms": float( + np.median( + [ + v + for r in all_rows + if r["variant"] == arm + for v in r["wall_ms"]["samples"] + ] + ) + ), + "p90_ms": float( + np.percentile( + [ + v + for r in all_rows + if r["variant"] == arm + for v in r["wall_ms"]["samples"] + ], + 90, + ) + ), + } + for arm in ("BASE", "ECS") + }, + "scope": "normal full ASE API, both implementations in one CUDA context; two calculators, actual master and exact PR definitions; no Dynamo inference frontend", +} +a.out.write_text(json.dumps(summary, indent=2)) +print(json.dumps(summary, indent=2)) diff --git a/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_serial.py b/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_serial.py new file mode 100644 index 0000000000..638ea9f6fc --- /dev/null +++ b/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_serial.py @@ -0,0 +1,112 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +# ruff: noqa: T201 -- manual benchmark CLI output +"""Matched-seed independent-process analysis of serialized normal API runs.""" + +import argparse +import json +from pathlib import Path + +import numpy as np +from scipy.stats import t + +p = argparse.ArgumentParser() +p.add_argument("directory", type=Path) +a = p.parse_args() +root = a.directory +assert json.loads((root / "controller.json").read_text())["status"] == "completed" +rows = json.loads((root / "rounds.json").read_text()) +formal = [r for r in rows if r["command"]["phase"] == "formal"] +ready = json.loads((root / "ready.json").read_text()) +seeds = sorted({r["seed"] for r in formal}) +pairs = [] +for seed in seeds: + stats = {} + for arm in ("BASE", "ECS"): + group = [r for r in formal if r["seed"] == seed and r["variant"] == arm] + values = [v for r in group for v in r["wall_ms"]["samples"]] + stats[arm] = { + "p50_ms": float(np.median(values)), + "p90_ms": float(np.percentile(values, 90)), + "round_logmean_ms": float( + np.exp(np.mean(np.log([r["wall_ms"]["median"] for r in group]))) + ), + "round_medians_ms": [r["wall_ms"]["median"] for r in group], + } + change = float( + np.log(stats["ECS"]["round_logmean_ms"]) + - np.log(stats["BASE"]["round_logmean_ms"]) + ) + pairs.append( + { + "seed": seed, + "arms": stats, + "logratio": change, + "percent": float(100 * np.expm1(change)), + } + ) +logs = np.array([p["logratio"] for p in pairs]) +se = logs.std(ddof=1) / np.sqrt(len(logs)) if len(logs) > 1 else None +ci = ( + ( + 100 + * np.expm1(logs.mean() + np.array([-1, 1]) * t.ppf(0.975, len(logs) - 1) * se) + ).tolist() + if se is not None + else None +) +monitor = json.loads((root / "monitor.json").read_text()) +telemetry = [] +for r in formal: + vals = [ + m + for m in monitor + if r["start_monotonic_ns"] <= m["t_ns"] <= r["end_monotonic_ns"] + ] + telemetry.append( + { + "run": r["run"], + "seed": r["seed"], + "arm": r["variant"], + "block": r["command"]["block"], + "mean_sm_mhz": float(np.mean([m["sm_mhz"] for m in vals])), + "mem_mhz": sorted({m["mem_mhz"] for m in vals}), + "temperature_range": [ + min(m["temperature"] for m in vals), + max(m["temperature"] for m in vals), + ], + "clock_reason_masks": sorted({m["clock_reasons"] for m in vals}), + } + ) +artifacts = [] +for entry in ready: + before = json.loads((root / f"cache_{entry['run']}_before.json").read_text()) + after = json.loads((root / f"cache_{entry['run']}_after.json").read_text()) + assert before == after + artifacts.append({"run": entry["run"], "unchanged": True, "count": len(before)}) +stats = {} +for arm in ("BASE", "ECS"): + values = [v for r in formal if r["variant"] == arm for v in r["wall_ms"]["samples"]] + stats[arm] = { + "samples": len(values), + "p50_ms": float(np.median(values)), + "p90_ms": float(np.percentile(values, 90)), + "min_ms": float(min(values)), + "max_ms": float(max(values)), + } +summary = { + "scope": "normal API; one CUDA process at a time; matched Python hash seeds; see controller arguments", + "pairs": pairs, + "mean_change_percent": float(100 * np.expm1(logs.mean())), + "process_pair_t_95_percent": ci, + "stats": stats, + "interval_telemetry": telemetry, + "compiler_artifacts": artifacts, + "interpretation": "finite independent process pairs; a confidence interval is not proof of zero cost", + "cold_peak": "separate existing cold-process measurement, not replaced", +} +(root / "summary.json").write_text(json.dumps(summary, indent=2)) +print( + json.dumps( + {k: v for k, v in summary.items() if k != "interval_telemetry"}, indent=2 + ) +) diff --git a/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_paired.py b/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_paired.py new file mode 100644 index 0000000000..7b651909d6 --- /dev/null +++ b/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_paired.py @@ -0,0 +1,228 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +# ruff: noqa: T201 -- manual benchmark CLI output +"""Sequential resident-worker ABBA trials with fixed caches and interval NVML.""" + +import argparse +import hashlib +import json +import os +from pathlib import Path +import subprocess +import sys +import threading +import time + +import pynvml as nv + +HERE = Path(__file__).resolve().parent +p = argparse.ArgumentParser() +p.add_argument("--out", type=Path, required=True) +p.add_argument("--baseline-root", type=Path, required=True) +p.add_argument("--candidate-root", type=Path, required=True) +p.add_argument("--model", type=Path, required=True) +p.add_argument("--reference", type=Path, required=True) +p.add_argument("--cache", type=Path, required=True) +p.add_argument("--variants", nargs=2, default=["BASE", "ECS"]) +p.add_argument("--pairs", type=int, default=3) +p.add_argument("--blocks", type=int, default=12) +p.add_argument("--samples", type=int, default=50) +p.add_argument("--cpu", type=int, default=8) +p.add_argument("--gpu", default="0") +p.add_argument("--monitor-cpu", type=int, default=16) +p.add_argument("--profile", action="store_true") +a = p.parse_args() +out = a.out.resolve() +out.mkdir(parents=True, exist_ok=False) +a.cache = a.cache.resolve() +a.cache.mkdir(parents=True, exist_ok=True) +os.sched_setaffinity(0, {a.monitor_cpu}) +nv.nvmlInit() +h = nv.nvmlDeviceGetHandleByIndex(int(a.gpu)) +assert not nv.nvmlDeviceGetComputeRunningProcesses(h), f"GPU{a.gpu} not idle" +workers = {} +stop = threading.Event() +monitor, errors, records, ready = [], [], [], [] + + +def watch(): + while not stop.wait(0.05): + try: + pids = {v.pid for v in nv.nvmlDeviceGetComputeRunningProcesses(h)} + foreign = pids - {w.pid for w in workers.values()} + if foreign: + errors.append(f"foreign compute pids: {sorted(foreign)}") + for w in list(workers.values()): + if w.poll() is None: + w.terminate() + return + monitor.append( + { + "t_ns": time.monotonic_ns(), + "pids": sorted(pids), + "sm_mhz": nv.nvmlDeviceGetClockInfo(h, nv.NVML_CLOCK_SM), + "mem_mhz": nv.nvmlDeviceGetClockInfo(h, nv.NVML_CLOCK_MEM), + "temperature": nv.nvmlDeviceGetTemperature( + h, nv.NVML_TEMPERATURE_GPU + ), + "power_mw": nv.nvmlDeviceGetPowerUsage(h), + "utilization": nv.nvmlDeviceGetUtilizationRates(h).gpu, + "pstate": nv.nvmlDeviceGetPerformanceState(h), + } + ) + except Exception as exc: + errors.append(repr(exc)) + return + + +def write(name, value): + (out / name).write_text(json.dumps(value, indent=2)) + + +def fingerprint(include_binaries=False): + patterns = ["*.best_config"] + (["*.cubin", "*.ptx"] if include_binaries else []) + return { + str(path.relative_to(a.cache)): hashlib.sha256(path.read_bytes()).hexdigest() + for pattern in patterns + for path in sorted(a.cache.rglob(pattern)) + } + + +def message(worker, log): + while True: + line = worker.stdout.readline() + if not line: + raise RuntimeError(f"worker exited: {worker.poll()} {errors}") + log.write(line) + log.flush() + if line.startswith("@CONTROL@"): + return json.loads(line[len("@CONTROL@") :]) + + +thread = threading.Thread(target=watch, daemon=True) +thread.start() +logs = [] +try: + for pair in range(a.pairs): + pair_ready = [] + init_order = a.variants if pair % 2 == 0 else list(reversed(a.variants)) + for variant in init_order: + log = (out / f"pair{pair}_{variant}.log").open("x") + logs.append(log) + worker = subprocess.Popen( + [ + sys.executable, + str(HERE / "_so2_edge_cohort_controlled_worker.py"), + "--baseline-root", + str(a.baseline_root.resolve()), + "--candidate-root", + str(a.candidate_root.resolve()), + "--model", + str(a.model.resolve()), + "--reference", + str(a.reference.resolve()), + "--variant", + variant, + "--out", + str(out / f"pair{pair}_{variant}"), + "--cache", + str(a.cache), + "--cpu", + str(a.cpu), + "--gpu", + a.gpu, + ], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=log, + text=True, + bufsize=1, + ) + workers[variant] = worker + worker.stdin.write( + json.dumps({"pids": [w.pid for w in workers.values()]}) + "\n" + ) + worker.stdin.flush() + r = message(worker, log) + assert r["status"] == "ready" + r["pair"] = pair + ready.append(r) + pair_ready.append(r) + write("ready.json", ready) + print("READY", pair, variant, r["entry_wall_ms"]["median"], flush=True) + frozen = fingerprint() + binary_before = fingerprint(True) + write(f"cache_pair{pair}_before.json", binary_before) + for block in range(a.blocks): + left, right = a.variants if block % 2 == 0 else list(reversed(a.variants)) + for position, variant in enumerate((left, right, right, left)): + worker = workers[variant] + command = { + "action": "measure", + "pair": pair, + "block": block, + "position": position, + "warmup": 8, + "samples": a.samples, + "cpu": a.cpu, + } + assert fingerprint() == frozen, "autotune cache changed before timing" + worker.stdin.write(json.dumps(command) + "\n") + worker.stdin.flush() + log = logs[-2 + init_order.index(variant)] + r = message(worker, log) + assert fingerprint() == frozen, "autotune cache changed during timing" + r["pair"] = pair + records.append(r) + write("rounds.json", records) + print( + "ROUND", + pair, + block, + position, + variant, + r["wall_ms"]["median"], + flush=True, + ) + if a.profile: + for variant in init_order: + worker = workers[variant] + worker.stdin.write('{"action":"profile"}\n') + worker.stdin.flush() + profiled = message(worker, logs[-2 + init_order.index(variant)]) + assert profiled["status"] == "profiled" + write(f"profile_pair{pair}_{variant}.json", profiled) + after = fingerprint(True) + write(f"cache_pair{pair}_after.json", after) + assert after == binary_before, ( + "compiled binaries changed during measured blocks" + ) + for variant in init_order: + worker = workers[variant] + worker.stdin.write('{"action":"stop"}\n') + worker.stdin.flush() + r = message(worker, logs[-2 + init_order.index(variant)]) + assert r["status"] == "completed" and r["precision_pass"] + worker.wait(timeout=30) + assert worker.returncode == 0 + workers.clear() +finally: + for worker in workers.values(): + if worker.poll() is None: + worker.terminate() + worker.wait(timeout=30) + stop.set() + thread.join(timeout=5) + write("monitor.json", monitor) + write( + "controller.json", + { + "args": {k: str(v) for k, v in vars(a).items()}, + "errors": errors, + "status": "completed" + if not errors and len(records) == a.pairs * a.blocks * 4 + else "failed", + }, + ) + for log in logs: + log.close() + nv.nvmlShutdown() diff --git a/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_same_context.py b/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_same_context.py new file mode 100644 index 0000000000..0e623a7b10 --- /dev/null +++ b/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_same_context.py @@ -0,0 +1,326 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +# ruff: noqa: T201 -- manual benchmark CLI output +"""Normal ASE API A/B in one CUDA context, preserving the original baseline. + +Experimental setup copies exactly the three reviewed kernel definitions and +registered backward into memory *after* compiling the baseline. No production +file, kernel arithmetic, or checkpoint is edited. Each model keeps its own +compiled cache. Inference bypasses Dynamo; stale module-level cache reuse is +explicitly prohibited and compiled graph provenance is checked. +""" + +import argparse +import ast +import hashlib +import importlib.util +import os +from pathlib import Path +import runpy +import sys +import threading +import time + +HERE = Path(__file__).resolve().parent +import _so2_edge_cohort_benchmark_common as common + +p = argparse.ArgumentParser() +p.add_argument("--baseline-root", type=Path, required=True) +p.add_argument("--candidate-root", type=Path, required=True) +p.add_argument("--model", type=Path, required=True) +p.add_argument("--reference", type=Path, required=True) +p.add_argument("--cache", type=Path, required=True) +p.add_argument("--out", type=Path, required=True) +p.add_argument("--first", choices=("BASE", "ECS"), default="BASE") +p.add_argument("--gpu", default="0") +p.add_argument("--cpu", type=int, default=8) +p.add_argument("--monitor-cpu", type=int, default=16) +p.add_argument("--blocks", type=int, default=24) +a = p.parse_args() +os.sched_setaffinity(0, {a.cpu}) +PUBLIC = a.candidate_root.resolve() +common.ROOT = a.baseline_root.resolve() +original_setup = common.setup +state = {} + + +def install_candidate(): + from deepmd.pt_expt.kernels.triton.sezm import so2_value_path as sv + + if not state: + state.update( + sv=sv, + backward=sv._mixing_stack_backward, + kernels={ + name: getattr(sv, name) + for name in ( + "_stack_gemm_bwd_kernel", + "_stack_point_bwd_kernel", + "_stack_recompute_kernel", + ) + }, + ) + source = PUBLIC / "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py" + tree = ast.parse(source.read_text()) + names = set(state["kernels"]) | {"_mixing_stack_backward"} + definitions = [ + n + for n in ast.walk(tree) + if isinstance(n, ast.FunctionDef) and n.name in names + ] + assert len(definitions) == 4 + scope = dict(vars(sv), _EDGE_COHORT_INFER=True) + exec( + compile(ast.Module(body=definitions, type_ignores=[]), str(source), "exec"), + scope, + ) + state["candidate_definitions"] = {name: scope[name] for name in names} + name = "deepmd.pt_expt.kernels.triton.sezm.so2_edge_cohort" + path = PUBLIC / "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py" + spec = importlib.util.spec_from_file_location(name, path) + module = importlib.util.module_from_spec(spec) + sys.modules[name] = module + spec.loader.exec_module(module) + for name in state["kernels"]: + setattr(sv, name, state["candidate_definitions"][name]) + sv._mixing_stack_op.register_autograd( + state["candidate_definitions"]["_mixing_stack_backward"], + setup_context=sv._mixing_stack_setup_context, + ) + + +def restore_baseline(): + sv = state["sv"] + for name, kernel in state["kernels"].items(): + setattr(sv, name, kernel) + sv._mixing_stack_op.register_autograd( + state["backward"], setup_context=sv._mixing_stack_setup_context + ) + + +def setup(*args, **kwargs): + original_setup(*args, **kwargs) + os.environ.update( + TORCHINDUCTOR_CACHE_DIR=str(a.cache.resolve() / "inductor"), + TRITON_CACHE_DIR=str(a.cache.resolve() / "triton"), + ) + if a.first == "ECS": + install_candidate() + + +common.setup = setup + + +def callback(ns): + import numpy as np + import torch + import pynvml as nv + from deepmd.calculator import DP + from deepmd.pt.model.model import sezm_model + from torch._inductor.codecache import PyCodeCache + + first = ns["calc"] + model = ns["inner"] + assert model.compiled_core_compute_cache + first_cache = dict(model.compiled_core_compute_cache) + old_modules = { + str(m.__file__) + for m in PyCodeCache.modules + if "def call(" in Path(m.__file__).read_text() + } + assert len(old_modules) == 1 + if a.first == "BASE": + install_candidate() + else: + restore_baseline() + sezm_model._SEZM_COMPILE_CACHE.clear() + sezm_model._SEZM_TASK_BUF_ORDER.clear() + second = DP(model=str(a.model)) + assert not second.dp.get_model().compiled_core_compute_cache + calculators = {a.first: first, ("ECS" if a.first == "BASE" else "BASE"): second} + base, frames = ns["base"], ns["frames"] + + def evaluate(calc, pos): + calc.reset() + atoms = base.copy() + atoms.positions = pos + atoms.calc = calc + forces = atoms.get_forces().copy() + return { + "energy": np.asarray(atoms.get_potential_energy()), + "forces": forces, + "virial": np.asarray(calc.results["virial"]).copy(), + "stress": atoms.get_stress().copy(), + } + + started = time.perf_counter() + for pos in frames[:8]: + evaluate(second, pos) + torch.cuda.synchronize() + assert model.compiled_core_compute_cache == first_cache, "first graph cache changed" + modules = { + str(m.__file__) + for m in PyCodeCache.modules + if "def call(" in Path(m.__file__).read_text() + } + new_modules = modules - old_modules + assert len(new_modules) == 1, ( + "second mode silently reused a graph or compiled multiple entries" + ) + wrappers = { + a.first: next(iter(old_modules)), + ("ECS" if a.first == "BASE" else "BASE"): next(iter(new_modules)), + } + assert "so2_single_cohort" in Path(wrappers["ECS"]).read_text() + assert "so2_single_cohort" not in Path(wrappers["BASE"]).read_text() + with np.load(a.reference) as ref: + accuracy = {} + outputs = {} + for arm, calc in calculators.items(): + values = { + f"{i}_{k}": v + for i, pos in enumerate(frames[:3]) + for k, v in evaluate(calc, pos).items() + } + outputs[arm] = values + accuracy[arm] = ns["compare"](values, ref) + assert all(v["passed"] and v["finite"] for v in accuracy[arm].values()) + np.savez_compressed(a.out / f"{arm}_outputs.npz", **values) + accuracy["paired"] = ns["compare"](outputs["ECS"], outputs["BASE"]) + assert all(v["passed"] for v in accuracy["paired"].values()) + cache = a.cache.resolve() + + def artifacts(): + return { + str(p.relative_to(cache)): hashlib.sha256(p.read_bytes()).hexdigest() + for pattern in ("*.best_config", "*.cubin", "*.ptx") + for p in cache.rglob(pattern) + } + + frozen = artifacts() + common.write( + a.out / "same_context_manifest.json", + { + "first": a.first, + "second_compile_s": time.perf_counter() - started, + "wrappers": { + k: {"path": v, "sha256": common.sha(Path(v))} + for k, v in wrappers.items() + }, + "accuracy": accuracy, + "original_entry_wall_ms": ns["wall"], + "seed": os.environ.get("PYTHONHASHSEED"), + "method": "two normal ASE calculators; distinct AOT compiled caches; same process/context; exact candidate kernel/backward definitions transplanted only for tracing", + }, + ) + nv.nvmlInit() + h = nv.nvmlDeviceGetHandleByIndex(int(a.gpu)) + stop = threading.Event() + monitor = [] + monitor_errors = [] + + def watch(): + os.sched_setaffinity(0, {a.monitor_cpu}) + while not stop.wait(0.05): + pids = {p.pid for p in nv.nvmlDeviceGetComputeRunningProcesses(h)} + if pids != {os.getpid()}: + monitor_errors.append(f"foreign CUDA pid {pids}") + return + monitor.append( + { + "t_ns": time.monotonic_ns(), + "sm_mhz": nv.nvmlDeviceGetClockInfo(h, nv.NVML_CLOCK_SM), + "mem_mhz": nv.nvmlDeviceGetClockInfo(h, nv.NVML_CLOCK_MEM), + "temperature": nv.nvmlDeviceGetTemperature( + h, nv.NVML_TEMPERATURE_GPU + ), + "clock_reasons": nv.nvmlDeviceGetCurrentClocksThrottleReasons(h), + } + ) + + thread = threading.Thread(target=watch, daemon=True) + thread.start() + records = [] + try: + for block in range(a.blocks): + left, right = ("BASE", "ECS") if block % 2 == 0 else ("ECS", "BASE") + for position, arm in enumerate((left, right, right, left)): + calc = calculators[arm] + for pos in frames[:8]: + evaluate(calc, pos) + torch.cuda.synchronize() + wall = [] + events = [] + start_ns = time.monotonic_ns() + for i in range(50): + torch.cuda.synchronize() + s = torch.cuda.Event(enable_timing=True) + e = torch.cuda.Event(enable_timing=True) + start = time.perf_counter() + s.record() + evaluate(calc, frames[8 + i % 30]) + e.record() + torch.cuda.synchronize() + wall.append(1000 * (time.perf_counter() - start)) + events.append(s.elapsed_time(e)) + records.append( + { + "pair": 0, + "variant": arm, + "command": {"block": block, "position": position}, + "wall_ms": common.stats(wall), + "event_ms": common.stats(events), + "start_monotonic_ns": start_ns, + "end_monotonic_ns": time.monotonic_ns(), + } + ) + common.write(a.out / "same_context_rounds.json", records) + assert not monitor_errors, str(monitor_errors) + print( + "CONTEXT_API", + block, + position, + arm, + records[-1]["wall_ms"]["median"], + flush=True, + ) + finally: + stop.set() + thread.join(timeout=5) + nv.nvmlShutdown() + common.write(a.out / "same_context_monitor.json", monitor) + assert not monitor_errors, str(monitor_errors) + assert artifacts() == frozen + assert model.compiled_core_compute_cache == first_cache + common.write( + a.out / "same_context_status.json", + { + "status": "completed", + "accuracy_passed": True, + "cache_unchanged": True, + "first": a.first, + "blocks": a.blocks, + "samples_per_arm": a.blocks * 2 * 50, + }, + ) + restore_baseline() + + +sys.argv = [ + str(HERE / "_so2_edge_cohort_benchmark_impl.py"), + "--out", + str(a.out), + "--gpu", + a.gpu, + "--nrep", + "2", + "--model", + str(a.model), + "--reference", + str(a.reference), +] +ns = runpy.run_path( + str(HERE / "_so2_edge_cohort_benchmark_impl.py"), + init_globals={"_controlled_rounds": callback}, + run_name="__main__", +) +assert ns["result"]["precision_pass"] and ns["result"]["finite"] diff --git a/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_serial.py b/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_serial.py new file mode 100644 index 0000000000..23dc31fc47 --- /dev/null +++ b/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_serial.py @@ -0,0 +1,191 @@ +# SPDX-License-Identifier: LGPL-3.0-or-later +# ruff: noqa: T201 -- manual benchmark CLI output +"""One CUDA process at a time: remove resident-context initialization bias.""" + +import argparse +import hashlib +import json +import os +from pathlib import Path +import subprocess +import sys +import threading +import time + +import pynvml as nv + +HERE = Path(__file__).resolve().parent +p = argparse.ArgumentParser(description=__doc__) +p.add_argument("--out", type=Path, required=True) +p.add_argument("--cache", type=Path, required=True) +p.add_argument("--baseline-root", type=Path, required=True) +p.add_argument("--candidate-root", type=Path, required=True) +p.add_argument("--model", type=Path, required=True) +p.add_argument("--reference", type=Path, required=True) +p.add_argument("--gpu", default="0") +p.add_argument("--cpu", type=int, default=8) +p.add_argument("--monitor-cpu", type=int, default=16) +p.add_argument("--seeds", type=int, nargs="+", default=[0, 1, 2]) +p.add_argument("--rounds", type=int, default=8) +p.add_argument("--samples", type=int, default=50) +p.add_argument("--conditioning-samples", type=int, default=200) +a = p.parse_args() +assert a.samples >= 10 and a.rounds >= 1 +out = a.out.resolve() +out.mkdir(parents=True, exist_ok=False) +cache = a.cache.resolve() +os.sched_setaffinity(0, {a.monitor_cpu}) +nv.nvmlInit() +handle = nv.nvmlDeviceGetHandleByIndex(int(a.gpu)) +cases = [ + (arm, seed) + for i, seed in enumerate(a.seeds) + for arm in (("BASE", "ECS") if i % 2 == 0 else ("ECS", "BASE")) +] +worker = None +stop = threading.Event() +monitor, errors, ready, records = [], [], [], [] + + +def write(name, value): + (out / name).write_text(json.dumps(value, indent=2)) + + +def watch(): + while not stop.wait(0.05): + pids = {v.pid for v in nv.nvmlDeviceGetComputeRunningProcesses(handle)} + allowed = {worker.pid} if worker is not None else set() + if pids - allowed: + errors.append(f"foreign GPU0 pids: {pids - allowed}") + if worker is not None and worker.poll() is None: + worker.terminate() + return + monitor.append( + { + "t_ns": time.monotonic_ns(), + "pids": sorted(pids), + "sm_mhz": nv.nvmlDeviceGetClockInfo(handle, nv.NVML_CLOCK_SM), + "mem_mhz": nv.nvmlDeviceGetClockInfo(handle, nv.NVML_CLOCK_MEM), + "temperature": nv.nvmlDeviceGetTemperature( + handle, nv.NVML_TEMPERATURE_GPU + ), + "power_mw": nv.nvmlDeviceGetPowerUsage(handle), + "clock_reasons": nv.nvmlDeviceGetCurrentClocksThrottleReasons(handle), + } + ) + + +def fingerprint(): + return { + str(p.relative_to(cache)): hashlib.sha256(p.read_bytes()).hexdigest() + for pattern in ("*.best_config", "*.cubin", "*.ptx") + for p in cache.rglob(pattern) + } + + +def message(log): + while True: + line = worker.stdout.readline() + if not line: + raise RuntimeError(f"worker ended {worker.poll()}") + log.write(line) + log.flush() + if line.startswith("@CONTROL@"): + return json.loads(line[len("@CONTROL@") :]) + + +assert not nv.nvmlDeviceGetComputeRunningProcesses(handle) +thread = threading.Thread(target=watch, daemon=True) +thread.start() +try: + for run, (variant, seed) in enumerate(cases): + assert not nv.nvmlDeviceGetComputeRunningProcesses(handle) + env = dict(os.environ, PYTHONHASHSEED=str(seed)) + with (out / f"{run}_{variant}.log").open("x") as log: + worker = subprocess.Popen( + [ + sys.executable, + str(HERE / "_so2_edge_cohort_controlled_worker.py"), + "--baseline-root", + str(a.baseline_root.resolve()), + "--candidate-root", + str(a.candidate_root.resolve()), + "--model", + str(a.model.resolve()), + "--reference", + str(a.reference.resolve()), + "--variant", + variant, + "--out", + str(out / f"{run}_{variant}"), + "--cache", + str(cache), + "--gpu", + a.gpu, + "--cpu", + str(a.cpu), + ], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=log, + text=True, + bufsize=1, + env=env, + ) + worker.stdin.write(json.dumps({"pids": [worker.pid]}) + "\n") + worker.stdin.flush() + r = message(log) + assert r["status"] == "ready" + r.update(run=run, seed=seed) + ready.append(r) + write("ready.json", ready) + print("READY", run, variant, seed, r["entry_wall_ms"]["median"], flush=True) + frozen = fingerprint() + write(f"cache_{run}_before.json", frozen) + for block in range(a.rounds + 1): + command = { + "action": "measure", + "pair": seed, + "block": block, + "position": run % 2, + "samples": a.conditioning_samples if block == 0 else a.samples, + "warmup": 8, + "cpu": a.cpu, + "phase": "conditioning" if block == 0 else "formal", + } + worker.stdin.write(json.dumps(command) + "\n") + worker.stdin.flush() + r = message(log) + r.update(run=run, seed=seed, pair=seed) + records.append(r) + write("rounds.json", records) + assert fingerprint() == frozen, "autotune/cache changed in timed runs" + print("ROUND", run, variant, block, r["wall_ms"]["median"], flush=True) + write(f"cache_{run}_after.json", fingerprint()) + worker.stdin.write('{"action":"stop"}\n') + worker.stdin.flush() + r = message(log) + assert r["status"] == "completed" and r["precision_pass"] + worker.wait(timeout=30) + assert worker.returncode == 0 + worker = None +finally: + if worker is not None: + if worker.poll() is None: + worker.terminate() + worker.wait(timeout=30) + stop.set() + thread.join(timeout=5) + write("monitor.json", monitor) + write( + "controller.json", + { + "errors": errors, + "status": "completed" + if len(records) == len(cases) * (a.rounds + 1) and not errors + else "failed", + "args": {k: str(v) for k, v in vars(a).items()}, + "protocol": "one CUDA process at a time; matched hash seeds; conditioning separated from formal rounds", + }, + ) + nv.nvmlShutdown() From 0079b9dbc379622f4a0c44f12601e9944a864f6b Mon Sep 17 00:00:00 2001 From: Macqueen Ma-hnu Date: Mon, 19 Oct 2026 18:13:17 +0800 Subject: [PATCH 3/7] docs(pt): disclose ECS multi-model accuracy and N4096 limits --- .../ecs-edge-cohort-multimodel-accuracy.md | 206 + .../ecs-edge-cohort-multimodel-results.json | 10004 ++++++++++++++++ .../ecs-edge-cohort-multimodel-summary.md | 52 + .../ecs-edge-cohort-multimodel-update.md | 62 + ...-edge-cohort-n4096-historical-results.json | 1 + 5 files changed, 10325 insertions(+) create mode 100644 doc/development/ecs-edge-cohort-multimodel-accuracy.md create mode 100644 doc/development/ecs-edge-cohort-multimodel-results.json create mode 100644 doc/development/ecs-edge-cohort-multimodel-summary.md create mode 100644 doc/development/ecs-edge-cohort-multimodel-update.md create mode 100644 doc/development/ecs-edge-cohort-n4096-historical-results.json diff --git a/doc/development/ecs-edge-cohort-multimodel-accuracy.md b/doc/development/ecs-edge-cohort-multimodel-accuracy.md new file mode 100644 index 0000000000..8d487d6bd6 --- /dev/null +++ b/doc/development/ecs-edge-cohort-multimodel-accuracy.md @@ -0,0 +1,206 @@ +# ECS 多模型多尺寸精度测试 + +> 精度优先;未放宽阈值。误差范围为每对输出max_abs的min~max,不是置信区间。基线SHA与模型SHA见JSON。 + +模式:TORCH=纯PyTorch编译;ECS=当前PR候选(非Neo为回退);ECS_RUNTIME=强制真实8192分批。单位:能量/位力eV,力eV/Å,stress eV/ų。所有结果均不是DFT预测误差。 + +| 模型 | 原子数 | 对照 | 范围 | 完成进程数 | 能量max_abs范围 | 力max_abs范围 | 位力max_abs范围 | stress max_abs范围 | 最差误差/容差 | 状态 | +| --- | ---: | --- | --- | --- | --- | --- | --- | --- | ---: | --- | +| Mini | 512 | TORCH vs TORCH | within_process | 3/3 | 1.788e-07~1.907e-05 | 5.743e-06~7.458e-06 | 1.941e-05~1.008e-04 | 6.477e-09~3.453e-08 | 2.3256 | FAIL | +| Mini | 512 | TORCH vs TORCH | across_process | 3/3 | 0.000e+00~2.682e-05 | 5.574e-06~8.402e-06 | 2.161e-05~1.017e-04 | 7.439e-09~3.501e-08 | 2.0800 | FAIL | +| Mini | 512 | BASE vs BASE | within_process | 3/3 | 8.941e-07~2.909e-05 | 5.665e-06~7.634e-06 | 1.822e-05~8.902e-05 | 5.847e-09~3.065e-08 | 1.3209 | FAIL | +| Mini | 512 | BASE vs BASE | across_process | 3/3 | 2.384e-07~3.576e-05 | 5.394e-06~8.533e-06 | 1.780e-05~9.780e-05 | 6.128e-09~3.367e-08 | 1.5409 | FAIL | +| Mini | 512 | ECS vs ECS | within_process | 3/3 | 2.384e-07~2.784e-05 | 5.507e-06~8.241e-06 | 2.388e-05~1.102e-04 | 7.637e-09~3.793e-08 | 2.3481 | FAIL | +| Mini | 512 | ECS vs ECS | across_process | 3/3 | 2.980e-07~2.706e-05 | 5.538e-06~8.991e-06 | 8.570e-06~1.185e-04 | 2.600e-09~4.078e-08 | 2.7696 | FAIL | +| Mini | 512 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~3.856e-05 | 7.663e-06~1.194e-05 | 8.734e-05~2.392e-04 | 3.007e-08~8.237e-08 | 2.0564 | FAIL | +| Mini | 512 | ECS vs TORCH | cross_implementation | 3/3 | 1.192e-07~3.630e-05 | 7.538e-06~1.362e-05 | 8.123e-05~2.064e-04 | 2.797e-08~7.105e-08 | 2.6359 | FAIL | +| Mini | 512 | ECS vs BASE | cross_implementation | 3/3 | 1.192e-07~3.225e-05 | 5.317e-06~8.227e-06 | 7.091e-06~1.170e-04 | 2.441e-09~4.027e-08 | 2.1640 | FAIL | +| Mini | 1000 | TORCH vs TORCH | within_process | 3/3 | 7.749e-07~3.952e-05 | 5.942e-06~8.479e-06 | 3.820e-05~1.486e-04 | 6.734e-09~2.619e-08 | 0.6828 | PASS | +| Mini | 1000 | TORCH vs TORCH | across_process | 3/3 | 4.172e-07~5.251e-05 | 6.128e-06~8.859e-06 | 2.881e-05~1.862e-04 | 4.861e-09~3.283e-08 | 0.7997 | PASS | +| Mini | 1000 | BASE vs BASE | within_process | 3/3 | 5.364e-07~3.475e-05 | 5.791e-06~8.084e-06 | 2.814e-05~9.627e-05 | 4.864e-09~1.697e-08 | 0.7113 | PASS | +| Mini | 1000 | BASE vs BASE | across_process | 3/3 | 1.788e-07~5.239e-05 | 5.877e-06~9.181e-06 | 1.580e-05~1.545e-04 | 2.721e-09~2.723e-08 | 0.7256 | PASS | +| Mini | 1000 | ECS vs ECS | within_process | 3/3 | 2.384e-07~3.195e-05 | 5.835e-06~8.294e-06 | 3.425e-05~1.184e-04 | 6.019e-09~2.087e-08 | 1.1129 | FAIL | +| Mini | 1000 | ECS vs ECS | across_process | 3/3 | 2.384e-07~4.518e-05 | 5.955e-06~8.708e-06 | 1.679e-05~1.293e-04 | 2.959e-09~2.279e-08 | 1.3280 | FAIL | +| Mini | 1000 | BASE vs TORCH | cross_implementation | 3/3 | 1.192e-07~6.008e-05 | 8.291e-06~1.272e-05 | 1.898e-04~4.217e-04 | 3.346e-08~7.434e-08 | 0.9772 | PASS | +| Mini | 1000 | ECS vs TORCH | cross_implementation | 3/3 | 5.960e-08~4.542e-05 | 7.863e-06~1.166e-05 | 2.127e-04~3.895e-04 | 3.749e-08~6.865e-08 | 1.0280 | FAIL | +| Mini | 1000 | ECS vs BASE | cross_implementation | 3/3 | 2.384e-07~5.299e-05 | 5.502e-06~9.310e-06 | 1.849e-05~1.536e-04 | 3.259e-09~2.707e-08 | 1.2858 | FAIL | +| Mini | 4096 | TORCH vs TORCH | within_process | 3/3 | 5.960e-08~6.229e-05 | 7.276e-06~9.493e-06 | 5.062e-05~4.385e-04 | 2.066e-09~1.887e-08 | 12.0785 | FAIL | +| Mini | 4096 | TORCH vs TORCH | across_process | 3/3 | 5.960e-08~8.333e-05 | 6.791e-06~9.902e-06 | 5.727e-05~3.834e-04 | 2.084e-09~1.650e-08 | 18.0056 | FAIL | +| Mini | 4096 | BASE vs BASE | within_process | 3/3 | 3.099e-06~1.399e-04 | 7.088e-06~8.594e-06 | 4.909e-05~2.918e-04 | 2.043e-09~1.256e-08 | 7.5328 | FAIL | +| Mini | 4096 | BASE vs BASE | across_process | 3/3 | 3.576e-07~1.013e-04 | 6.853e-06~9.191e-06 | 4.477e-05~3.680e-04 | 1.894e-09~1.584e-08 | 8.7236 | FAIL | +| Mini | 4096 | ECS vs ECS | within_process | 3/3 | 8.941e-07~6.741e-05 | 6.751e-06~9.570e-06 | 8.410e-05~3.134e-04 | 3.504e-09~1.342e-08 | 7.6971 | FAIL | +| Mini | 4096 | ECS vs ECS | across_process | 3/3 | 2.980e-07~8.285e-05 | 6.717e-06~1.040e-05 | 3.166e-05~3.210e-04 | 1.362e-09~1.381e-08 | 8.5980 | FAIL | +| Mini | 4096 | BASE vs TORCH | cross_implementation | 3/3 | 1.073e-06~1.630e-04 | 9.423e-06~1.370e-05 | 8.078e-04~1.487e-03 | 3.476e-08~6.401e-08 | 16.3663 | FAIL | +| Mini | 4096 | ECS vs TORCH | cross_implementation | 3/3 | 1.609e-06~1.435e-04 | 9.178e-06~1.420e-05 | 7.984e-04~1.493e-03 | 3.436e-08~6.425e-08 | 14.4638 | FAIL | +| Mini | 4096 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~1.230e-04 | 6.839e-06~9.656e-06 | 4.190e-05~3.580e-04 | 1.803e-09~1.541e-08 | 10.4884 | FAIL | +| Nano | 512 | TORCH vs TORCH | within_process | 3/3 | 1.788e-07~5.186e-05 | 8.767e-06~1.729e-05 | 4.055e-05~1.745e-04 | 1.365e-08~6.008e-08 | 5.1961 | FAIL | +| Nano | 512 | TORCH vs TORCH | across_process | 3/3 | 8.941e-07~5.031e-05 | 8.257e-06~1.488e-05 | 3.397e-05~1.774e-04 | 1.067e-08~6.108e-08 | 8.1770 | FAIL | +| Nano | 512 | BASE vs BASE | within_process | 3/3 | 6.557e-07~5.233e-05 | 8.955e-06~1.241e-05 | 4.078e-05~1.411e-04 | 1.404e-08~4.859e-08 | 4.3052 | FAIL | +| Nano | 512 | BASE vs BASE | across_process | 3/3 | 3.576e-07~4.852e-05 | 8.638e-06~1.356e-05 | 2.392e-05~1.993e-04 | 7.193e-09~6.862e-08 | 5.5042 | FAIL | +| Nano | 512 | ECS vs ECS | within_process | 3/3 | 2.384e-07~4.870e-05 | 8.850e-06~1.174e-05 | 2.709e-05~1.370e-04 | 9.077e-09~4.717e-08 | 3.9393 | FAIL | +| Nano | 512 | ECS vs ECS | across_process | 3/3 | 2.980e-07~6.038e-05 | 8.533e-06~1.260e-05 | 2.392e-05~2.191e-04 | 8.234e-09~7.544e-08 | 5.7037 | FAIL | +| Nano | 512 | BASE vs TORCH | cross_implementation | 3/3 | 2.980e-06~1.152e-04 | 8.867e-06~1.386e-05 | 1.153e-05~2.624e-04 | 3.971e-09~9.033e-08 | 9.4910 | FAIL | +| Nano | 512 | ECS vs TORCH | cross_implementation | 3/3 | 4.172e-07~1.128e-04 | 8.495e-06~1.357e-05 | 2.651e-05~2.647e-04 | 9.126e-09~9.113e-08 | 8.6337 | FAIL | +| Nano | 512 | ECS vs BASE | cross_implementation | 3/3 | 4.172e-07~5.412e-05 | 8.595e-06~1.269e-05 | 2.358e-05~2.068e-04 | 8.119e-09~7.121e-08 | 6.5564 | FAIL | +| Nano | 1000 | TORCH vs TORCH | within_process | 3/3 | 1.788e-07~6.706e-05 | 9.814e-06~1.328e-05 | 5.537e-05~2.621e-04 | 9.760e-09~4.621e-08 | 5.8245 | FAIL | +| Nano | 1000 | TORCH vs TORCH | across_process | 3/3 | 8.941e-07~7.910e-05 | 9.717e-06~1.356e-05 | 3.931e-05~2.863e-04 | 6.794e-09~5.047e-08 | 7.5700 | FAIL | +| Nano | 1000 | BASE vs BASE | within_process | 3/3 | 1.073e-06~5.555e-05 | 8.786e-06~1.246e-05 | 4.376e-05~2.458e-04 | 7.638e-09~4.333e-08 | 6.4322 | FAIL | +| Nano | 1000 | BASE vs BASE | across_process | 3/3 | 5.960e-08~7.153e-05 | 9.121e-06~1.302e-05 | 5.281e-05~2.499e-04 | 9.309e-09~4.405e-08 | 9.2287 | FAIL | +| Nano | 1000 | ECS vs ECS | within_process | 3/3 | 1.192e-06~5.585e-05 | 9.348e-06~1.242e-05 | 4.847e-05~2.198e-04 | 8.545e-09~3.874e-08 | 4.9302 | FAIL | +| Nano | 1000 | ECS vs ECS | across_process | 3/3 | 5.960e-08~6.944e-05 | 9.239e-06~1.430e-05 | 2.857e-05~2.319e-04 | 5.036e-09~4.087e-08 | 6.9685 | FAIL | +| Nano | 1000 | BASE vs TORCH | cross_implementation | 3/3 | 1.049e-05~1.621e-04 | 9.189e-06~1.489e-05 | 3.178e-05~2.637e-04 | 5.601e-09~4.649e-08 | 9.2328 | FAIL | +| Nano | 1000 | ECS vs TORCH | cross_implementation | 3/3 | 1.264e-05~1.663e-04 | 9.170e-06~1.386e-05 | 1.395e-05~3.074e-04 | 2.459e-09~5.418e-08 | 8.0526 | FAIL | +| Nano | 1000 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~7.570e-05 | 9.041e-06~1.358e-05 | 3.918e-05~2.690e-04 | 6.906e-09~4.742e-08 | 8.1419 | FAIL | +| Nano | 4096 | TORCH vs TORCH | within_process | 3/3 | 3.755e-06~1.802e-04 | 1.138e-05~1.498e-05 | 9.571e-05~6.979e-04 | 4.119e-09~3.003e-08 | 2.3384 | FAIL | +| Nano | 4096 | TORCH vs TORCH | across_process | 3/3 | 5.960e-08~2.024e-04 | 1.065e-05~1.443e-05 | 9.505e-05~6.595e-04 | 3.965e-09~2.838e-08 | 2.8159 | FAIL | +| Nano | 4096 | BASE vs BASE | within_process | 3/3 | 2.384e-06~1.985e-04 | 1.098e-05~1.587e-05 | 1.133e-04~3.956e-04 | 4.860e-09~1.703e-08 | 1.3307 | FAIL | +| Nano | 4096 | BASE vs BASE | across_process | 3/3 | 1.907e-06~2.370e-04 | 1.060e-05~1.419e-05 | 5.914e-05~4.544e-04 | 2.379e-09~1.956e-08 | 2.5569 | FAIL | +| Nano | 4096 | ECS vs ECS | within_process | 3/3 | 3.278e-06~1.050e-04 | 1.101e-05~1.347e-05 | 6.502e-05~7.514e-04 | 2.450e-09~3.233e-08 | 1.2806 | FAIL | +| Nano | 4096 | ECS vs ECS | across_process | 3/3 | 1.788e-07~1.045e-04 | 1.095e-05~1.462e-05 | 8.139e-05~6.386e-04 | 3.503e-09~2.748e-08 | 2.1274 | FAIL | +| Nano | 4096 | BASE vs TORCH | cross_implementation | 3/3 | 9.382e-05~4.325e-04 | 1.070e-05~1.538e-05 | 8.534e-05~1.047e-03 | 3.673e-09~4.504e-08 | 3.3957 | FAIL | +| Nano | 4096 | ECS vs TORCH | cross_implementation | 3/3 | 1.401e-04~4.290e-04 | 1.060e-05~1.602e-05 | 9.420e-05~1.060e-03 | 3.617e-09~4.560e-08 | 3.0524 | FAIL | +| Nano | 4096 | ECS vs BASE | cross_implementation | 3/3 | 5.960e-08~1.978e-04 | 1.056e-05~1.622e-05 | 7.473e-05~6.500e-04 | 3.042e-09~2.797e-08 | 2.4384 | FAIL | +| Neo | 512 | TORCH vs TORCH | within_process | 3/3 | 5.960e-08~1.943e-05 | 3.261e-06~4.747e-06 | 1.320e-05~7.500e-05 | 4.517e-09~2.582e-08 | 0.6232 | PASS | +| Neo | 512 | TORCH vs TORCH | across_process | 3/3 | 4.768e-07~1.884e-05 | 3.108e-06~5.441e-06 | 9.732e-06~7.461e-05 | 2.689e-09~2.569e-08 | 0.6851 | PASS | +| Neo | 512 | BASE vs BASE | within_process | 3/3 | 5.960e-08~2.521e-05 | 3.148e-06~4.934e-06 | 1.098e-05~4.944e-05 | 3.581e-09~1.702e-08 | 0.6621 | PASS | +| Neo | 512 | BASE vs BASE | across_process | 3/3 | 2.384e-07~2.354e-05 | 3.135e-06~5.108e-06 | 9.663e-06~6.807e-05 | 3.327e-09~2.344e-08 | 0.7136 | PASS | +| Neo | 512 | ECS vs ECS | within_process | 3/3 | 1.192e-07~1.627e-05 | 3.263e-06~4.824e-06 | 5.221e-06~4.653e-05 | 1.513e-09~1.602e-08 | 0.7407 | PASS | +| Neo | 512 | ECS vs ECS | across_process | 3/3 | 0.000e+00~1.740e-05 | 3.247e-06~4.922e-06 | 1.290e-05~6.690e-05 | 3.928e-09~2.303e-08 | 0.8633 | PASS | +| Neo | 512 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~3.117e-05 | 4.321e-06~6.981e-06 | 7.577e-05~1.771e-04 | 2.609e-08~6.098e-08 | 1.1932 | FAIL | +| Neo | 512 | ECS vs TORCH | cross_implementation | 3/3 | 1.192e-07~2.927e-05 | 4.556e-06~7.410e-06 | 7.720e-05~1.594e-04 | 2.658e-08~5.487e-08 | 1.0295 | FAIL | +| Neo | 512 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~2.331e-05 | 3.149e-06~5.301e-06 | 7.728e-06~7.278e-05 | 2.660e-09~2.506e-08 | 0.9591 | PASS | +| Neo | 512 | ECS_RUNTIME vs ECS_RUNTIME | within_process | 3/3 | 4.172e-07~1.824e-05 | 3.403e-06~4.479e-06 | 1.187e-05~4.710e-05 | 2.963e-09~1.622e-08 | 1.0518 | FAIL | +| Neo | 512 | ECS_RUNTIME vs ECS_RUNTIME | across_process | 3/3 | 5.960e-08~1.431e-05 | 3.251e-06~5.502e-06 | 6.900e-06~5.424e-05 | 2.375e-09~1.867e-08 | 0.9080 | PASS | +| Neo | 512 | ECS_RUNTIME vs BASE | cross_implementation | 3/3 | 5.960e-08~2.301e-05 | 3.042e-06~5.382e-06 | 9.281e-06~6.285e-05 | 2.715e-09~2.164e-08 | 1.0467 | FAIL | +| Neo | 512 | ECS_RUNTIME vs TORCH | cross_implementation | 3/3 | 5.960e-08~2.372e-05 | 4.383e-06~7.113e-06 | 7.607e-05~1.648e-04 | 2.619e-08~5.675e-08 | 1.0368 | FAIL | +| Neo | 512 | ECS_RUNTIME vs ECS | cross_implementation | 3/3 | 0.000e+00~2.110e-05 | 3.024e-06~5.139e-06 | 6.926e-06~6.315e-05 | 2.384e-09~2.174e-08 | 1.1043 | FAIL | +| Neo | 1000 | TORCH vs TORCH | within_process | 3/3 | 5.960e-07~2.939e-05 | 3.633e-06~5.042e-06 | 1.796e-05~8.294e-05 | 2.496e-09~1.462e-08 | 0.4762 | PASS | +| Neo | 1000 | TORCH vs TORCH | across_process | 3/3 | 1.192e-07~2.736e-05 | 3.471e-06~5.588e-06 | 1.483e-05~1.008e-04 | 2.181e-09~1.777e-08 | 0.4978 | PASS | +| Neo | 1000 | BASE vs BASE | within_process | 3/3 | 7.153e-07~2.074e-05 | 3.335e-06~4.864e-06 | 1.662e-05~7.371e-05 | 2.929e-09~1.299e-08 | 0.3498 | PASS | +| Neo | 1000 | BASE vs BASE | across_process | 3/3 | 5.960e-08~1.848e-05 | 3.363e-06~5.305e-06 | 1.574e-05~1.023e-04 | 2.277e-09~1.802e-08 | 0.5508 | PASS | +| Neo | 1000 | ECS vs ECS | within_process | 3/3 | 6.557e-07~3.302e-05 | 3.544e-06~4.635e-06 | 1.599e-05~7.633e-05 | 2.645e-09~1.346e-08 | 0.3679 | PASS | +| Neo | 1000 | ECS vs ECS | across_process | 3/3 | 2.980e-07~3.064e-05 | 3.362e-06~5.389e-06 | 1.043e-05~1.018e-04 | 1.839e-09~1.794e-08 | 0.5019 | PASS | +| Neo | 1000 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~2.736e-05 | 4.921e-06~7.257e-06 | 1.523e-04~2.917e-04 | 2.685e-08~5.141e-08 | 0.6108 | PASS | +| Neo | 1000 | ECS vs TORCH | cross_implementation | 3/3 | 1.192e-07~4.029e-05 | 5.026e-06~8.691e-06 | 1.513e-04~3.357e-04 | 2.667e-08~5.917e-08 | 0.5704 | PASS | +| Neo | 1000 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~3.189e-05 | 3.352e-06~5.042e-06 | 1.021e-05~1.058e-04 | 1.644e-09~1.866e-08 | 0.5937 | PASS | +| Neo | 1000 | ECS_RUNTIME vs ECS_RUNTIME | within_process | 3/3 | 2.384e-07~2.861e-05 | 3.570e-06~4.866e-06 | 1.601e-05~1.015e-04 | 2.815e-09~1.790e-08 | 0.4164 | PASS | +| Neo | 1000 | ECS_RUNTIME vs ECS_RUNTIME | across_process | 3/3 | 2.384e-07~2.778e-05 | 3.505e-06~5.059e-06 | 1.429e-05~1.104e-04 | 2.186e-09~1.946e-08 | 0.3538 | PASS | +| Neo | 1000 | ECS_RUNTIME vs BASE | cross_implementation | 3/3 | 5.960e-08~2.718e-05 | 3.289e-06~4.839e-06 | 1.072e-05~1.038e-04 | 1.889e-09~1.829e-08 | 0.6028 | PASS | +| Neo | 1000 | ECS_RUNTIME vs TORCH | cross_implementation | 3/3 | 5.960e-08~3.272e-05 | 4.816e-06~7.409e-06 | 1.576e-04~3.508e-04 | 2.778e-08~6.184e-08 | 0.5441 | PASS | +| Neo | 1000 | ECS_RUNTIME vs ECS | cross_implementation | 3/3 | 5.960e-08~3.481e-05 | 3.344e-06~5.309e-06 | 1.161e-05~1.169e-04 | 1.612e-09~2.061e-08 | 0.5110 | PASS | +| Neo | 4096 | BASE vs BASE | within_process | 3/3 | 2.384e-07~4.643e-05 | 4.007e-06~5.565e-06 | 4.326e-05~1.764e-04 | 1.428e-09~7.592e-09 | 2.0354 | FAIL | +| Neo | 4096 | BASE vs BASE | across_process | 3/3 | 4.172e-07~5.627e-05 | 3.912e-06~5.939e-06 | 2.275e-05~2.513e-04 | 9.788e-10~1.081e-08 | 2.8536 | FAIL | +| Neo | 4096 | ECS vs ECS | within_process | 3/3 | 2.384e-07~5.406e-05 | 4.204e-06~5.183e-06 | 2.174e-05~1.084e-04 | 5.853e-10~4.666e-09 | 2.2326 | FAIL | +| Neo | 4096 | ECS vs ECS | across_process | 3/3 | 3.576e-07~8.285e-05 | 4.080e-06~5.679e-06 | 2.126e-05~1.705e-04 | 5.108e-10~7.337e-09 | 2.8543 | FAIL | +| Neo | 4096 | ECS vs BASE | cross_implementation | 3/3 | 5.960e-08~6.813e-05 | 4.013e-06~5.806e-06 | 2.113e-05~2.482e-04 | 6.362e-10~1.068e-08 | 3.2394 | FAIL | +| Neo | 4096 | ECS_RUNTIME vs ECS_RUNTIME | within_process | 3/3 | 3.576e-07~5.656e-05 | 4.011e-06~5.388e-06 | 2.321e-05~2.127e-04 | 9.989e-10~9.155e-09 | 3.0024 | FAIL | +| Neo | 4096 | ECS_RUNTIME vs ECS_RUNTIME | across_process | 3/3 | 2.384e-07~6.253e-05 | 4.014e-06~6.203e-06 | 2.701e-05~1.597e-04 | 9.890e-10~6.871e-09 | 2.9657 | FAIL | +| Neo | 4096 | ECS_RUNTIME vs BASE | cross_implementation | 3/3 | 5.960e-08~6.562e-05 | 4.056e-06~6.068e-06 | 1.560e-05~2.561e-04 | 6.714e-10~1.102e-08 | 3.5269 | FAIL | +| Neo | 4096 | ECS_RUNTIME vs ECS | cross_implementation | 3/3 | 5.960e-08~7.308e-05 | 3.972e-06~5.791e-06 | 2.029e-05~1.955e-04 | 8.732e-10~8.411e-09 | 3.1677 | FAIL | +| Pro | 64 | TORCH vs TORCH | within_process | 1/1 | 5.960e-08~1.520e-06 | 7.994e-07~1.084e-06 | 1.829e-06~4.709e-06 | 3.323e-09~1.297e-08 | 0.0749 | PASS(样本未齐) | +| Pro | 64 | BASE vs BASE | within_process | 1/1 | 2.086e-07~2.235e-06 | 7.070e-07~9.719e-07 | 1.706e-06~4.243e-06 | 4.698e-09~1.169e-08 | 0.0727 | PASS(样本未齐) | +| Pro | 64 | ECS vs ECS | within_process | 2/2 | 2.980e-08~3.010e-06 | 6.763e-07~9.147e-07 | 2.130e-06~7.250e-06 | 3.415e-09~1.997e-08 | 0.0893 | PASS(样本未齐) | +| Pro | 64 | ECS vs ECS | across_process | 2/2 | 2.980e-08~4.113e-06 | 6.775e-07~1.166e-06 | 1.785e-06~6.365e-06 | 2.901e-09~1.753e-08 | 0.1206 | PASS(样本未齐) | +| Pro | 64 | BASE vs TORCH | cross_implementation | 1/1 | 1.788e-07~3.934e-06 | 1.086e-06~1.643e-06 | 2.214e-06~9.813e-06 | 5.613e-09~2.703e-08 | 0.0992 | PASS(样本未齐) | +| Pro | 64 | ECS vs TORCH | cross_implementation | 2/1 | 2.086e-07~4.351e-06 | 9.742e-07~1.560e-06 | 2.394e-06~1.112e-05 | 5.669e-09~3.062e-08 | 0.1440 | PASS(样本未齐) | +| Pro | 64 | ECS vs BASE | cross_implementation | 2/1 | 5.960e-08~3.636e-06 | 6.614e-07~1.147e-06 | 1.603e-06~6.327e-06 | 2.958e-09~1.743e-08 | 0.0945 | PASS(样本未齐) | + +## 所有进程状态(含OOM/失败,不能略去) + +| 运行 | 状态 | 参数量 | opaque ECS调用 | single路径标记 | +| --- | --- | ---: | ---: | --- | +| Mini_n1000_BASE_p0 | completed | 654988 | 0 | False | +| Mini_n1000_BASE_p1 | completed | 654988 | 0 | False | +| Mini_n1000_BASE_p2 | completed | 654988 | 0 | False | +| Mini_n1000_ECS_p0 | completed | 654988 | 0 | False | +| Mini_n1000_ECS_p1 | completed | 654988 | 0 | False | +| Mini_n1000_ECS_p2 | completed | 654988 | 0 | False | +| Mini_n1000_TORCH_p0 | completed | 654988 | 0 | False | +| Mini_n1000_TORCH_p1 | completed | 654988 | 0 | False | +| Mini_n1000_TORCH_p2 | completed | 654988 | 0 | False | +| Mini_n4096_BASE_p0 | completed | 654988 | 0 | False | +| Mini_n4096_BASE_p1 | completed | 654988 | 0 | False | +| Mini_n4096_BASE_p2 | completed | 654988 | 0 | False | +| Mini_n4096_ECS_p0 | completed | 654988 | 0 | False | +| Mini_n4096_ECS_p1 | completed | 654988 | 0 | False | +| Mini_n4096_ECS_p2 | completed | 654988 | 0 | False | +| Mini_n4096_TORCH_p0 | completed | 654988 | 0 | False | +| Mini_n4096_TORCH_p1 | completed | 654988 | 0 | False | +| Mini_n4096_TORCH_p2 | completed | 654988 | 0 | False | +| Mini_n512_BASE_p0 | completed | 654988 | 0 | False | +| Mini_n512_BASE_p1 | completed | 654988 | 0 | False | +| Mini_n512_BASE_p2 | completed | 654988 | 0 | False | +| Mini_n512_ECS_p0 | completed | 654988 | 0 | False | +| Mini_n512_ECS_p1 | completed | 654988 | 0 | False | +| Mini_n512_ECS_p2 | completed | 654988 | 0 | False | +| Mini_n512_TORCH_p0 | completed | 654988 | 0 | False | +| Mini_n512_TORCH_p1 | completed | 654988 | 0 | False | +| Mini_n512_TORCH_p2 | completed | 654988 | 0 | False | +| Nano_n1000_BASE_p0 | completed | 480268 | 0 | False | +| Nano_n1000_BASE_p1 | completed | 480268 | 0 | False | +| Nano_n1000_BASE_p2 | completed | 480268 | 0 | False | +| Nano_n1000_ECS_p0 | completed | 480268 | 0 | False | +| Nano_n1000_ECS_p1 | completed | 480268 | 0 | False | +| Nano_n1000_ECS_p2 | completed | 480268 | 0 | False | +| Nano_n1000_TORCH_p0 | completed | 480268 | 0 | False | +| Nano_n1000_TORCH_p1 | completed | 480268 | 0 | False | +| Nano_n1000_TORCH_p2 | completed | 480268 | 0 | False | +| Nano_n4096_BASE_p0 | completed | 480268 | 0 | False | +| Nano_n4096_BASE_p1 | completed | 480268 | 0 | False | +| Nano_n4096_BASE_p2 | completed | 480268 | 0 | False | +| Nano_n4096_ECS_p0 | completed | 480268 | 0 | False | +| Nano_n4096_ECS_p1 | completed | 480268 | 0 | False | +| Nano_n4096_ECS_p2 | completed | 480268 | 0 | False | +| Nano_n4096_TORCH_p0 | completed | 480268 | 0 | False | +| Nano_n4096_TORCH_p1 | completed | 480268 | 0 | False | +| Nano_n4096_TORCH_p2 | completed | 480268 | 0 | False | +| Nano_n512_BASE_p0 | completed | 480268 | 0 | False | +| Nano_n512_BASE_p1 | completed | 480268 | 0 | False | +| Nano_n512_BASE_p2 | completed | 480268 | 0 | False | +| Nano_n512_ECS_p0 | completed | 480268 | 0 | False | +| Nano_n512_ECS_p1 | completed | 480268 | 0 | False | +| Nano_n512_ECS_p2 | completed | 480268 | 0 | False | +| Nano_n512_TORCH_p0 | completed | 480268 | 0 | False | +| Nano_n512_TORCH_p1 | completed | 480268 | 0 | False | +| Nano_n512_TORCH_p2 | completed | 480268 | 0 | False | +| Neo_n1000_BASE_p0 | completed | 1124910 | 0 | False | +| Neo_n1000_BASE_p1 | completed | 1124910 | 0 | False | +| Neo_n1000_BASE_p2 | completed | 1124910 | 0 | False | +| Neo_n1000_ECS_RUNTIME_p0 | completed | 1124910 | 2 | False | +| Neo_n1000_ECS_RUNTIME_p1 | completed | 1124910 | 2 | False | +| Neo_n1000_ECS_RUNTIME_p2 | completed | 1124910 | 2 | False | +| Neo_n1000_ECS_p0 | completed | 1124910 | 0 | True | +| Neo_n1000_ECS_p1 | completed | 1124910 | 0 | True | +| Neo_n1000_ECS_p2 | completed | 1124910 | 0 | True | +| Neo_n1000_TORCH_p0 | completed | 1124910 | 0 | False | +| Neo_n1000_TORCH_p1 | completed | 1124910 | 0 | False | +| Neo_n1000_TORCH_p2 | completed | 1124910 | 0 | False | +| Neo_n4096_BASE_p0 | completed | 1124910 | 0 | False | +| Neo_n4096_BASE_p1 | completed | 1124910 | 0 | False | +| Neo_n4096_BASE_p2 | completed | 1124910 | 0 | False | +| Neo_n4096_ECS_RUNTIME_p0 | completed | 1124910 | 2 | False | +| Neo_n4096_ECS_RUNTIME_p1 | completed | 1124910 | 2 | False | +| Neo_n4096_ECS_RUNTIME_p2 | completed | 1124910 | 2 | False | +| Neo_n4096_ECS_p0 | completed | 1124910 | 0 | True | +| Neo_n4096_ECS_p1 | completed | 1124910 | 0 | True | +| Neo_n4096_ECS_p2 | completed | 1124910 | 0 | True | +| Neo_n4096_TORCH_p0 | oom | 1124910 | 0 | False | +| Neo_n4096_TORCH_p1 | oom | 1124910 | 0 | False | +| Neo_n4096_TORCH_p2 | oom | 1124910 | 0 | False | +| Neo_n512_BASE_p0 | completed | 1124910 | 0 | False | +| Neo_n512_BASE_p1 | completed | 1124910 | 0 | False | +| Neo_n512_BASE_p2 | completed | 1124910 | 0 | False | +| Neo_n512_ECS_RUNTIME_p0 | completed | 1124910 | 2 | False | +| Neo_n512_ECS_RUNTIME_p1 | completed | 1124910 | 2 | False | +| Neo_n512_ECS_RUNTIME_p2 | completed | 1124910 | 2 | False | +| Neo_n512_ECS_p0 | completed | 1124910 | 0 | True | +| Neo_n512_ECS_p1 | completed | 1124910 | 0 | True | +| Neo_n512_ECS_p2 | completed | 1124910 | 0 | True | +| Neo_n512_TORCH_p0 | completed | 1124910 | 0 | False | +| Neo_n512_TORCH_p1 | completed | 1124910 | 0 | False | +| Neo_n512_TORCH_p2 | completed | 1124910 | 0 | False | +| Pro_n512_TORCH_p0 | oom | 22678990 | 0 | False | +| Pro_n64_BASE_p0 | completed | 22678990 | 0 | False | +| Pro_n64_ECS_p0 | completed | 22678990 | 0 | False | +| Pro_n64_ECS_p1 | completed | 22678990 | 0 | False | +| Pro_n64_TORCH_p0 | completed | 22678990 | 0 | False | diff --git a/doc/development/ecs-edge-cohort-multimodel-results.json b/doc/development/ecs-edge-cohort-multimodel-results.json new file mode 100644 index 0000000000..33c7790b62 --- /dev/null +++ b/doc/development/ecs-edge-cohort-multimodel-results.json @@ -0,0 +1,10004 @@ +{ + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_floor": 1e-08 + }, + "range_definition": "min/max of max_abs over same-frame comparisons; NOT a confidence interval", + "statuses": [ + { + "run": "Mini_n1000_BASE_p0", + "model": "Mini", + "n": 1000, + "mode": "BASE", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "8625a6f9f07d0c8b3385d292657152a70bcc721e0a68e8a84ec14b464b2720ee", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 1884744704, + "reserved": 2017460224 + }, + "complete_peak": { + "allocated": 1884744704, + "reserved": 2017460224 + } + }, + { + "run": "Mini_n1000_BASE_p1", + "model": "Mini", + "n": 1000, + "mode": "BASE", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "8625a6f9f07d0c8b3385d292657152a70bcc721e0a68e8a84ec14b464b2720ee", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 1884744704, + "reserved": 2017460224 + }, + "complete_peak": { + "allocated": 1884744704, + "reserved": 2017460224 + } + }, + { + "run": "Mini_n1000_BASE_p2", + "model": "Mini", + "n": 1000, + "mode": "BASE", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "8625a6f9f07d0c8b3385d292657152a70bcc721e0a68e8a84ec14b464b2720ee", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 1884744704, + "reserved": 2017460224 + }, + "complete_peak": { + "allocated": 1884744704, + "reserved": 2017460224 + } + }, + { + "run": "Mini_n1000_ECS_p0", + "model": "Mini", + "n": 1000, + "mode": "ECS", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "f3b520a74b4a61cb4035f91fd5a53bc056e5fa85d7e6db4ba3526a003e4ccbef", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 1884744704, + "reserved": 2017460224 + }, + "complete_peak": { + "allocated": 1884744704, + "reserved": 2017460224 + } + }, + { + "run": "Mini_n1000_ECS_p1", + "model": "Mini", + "n": 1000, + "mode": "ECS", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "f3b520a74b4a61cb4035f91fd5a53bc056e5fa85d7e6db4ba3526a003e4ccbef", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 1884744704, + "reserved": 2017460224 + }, + "complete_peak": { + "allocated": 1884744704, + "reserved": 2017460224 + } + }, + { + "run": "Mini_n1000_ECS_p2", + "model": "Mini", + "n": 1000, + "mode": "ECS", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "f3b520a74b4a61cb4035f91fd5a53bc056e5fa85d7e6db4ba3526a003e4ccbef", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 1884744704, + "reserved": 2017460224 + }, + "complete_peak": { + "allocated": 1884744704, + "reserved": 2017460224 + } + }, + { + "run": "Mini_n1000_TORCH_p0", + "model": "Mini", + "n": 1000, + "mode": "TORCH", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "c540becf8e314c797db8c0e00ea5230e81df1df94bb39f6910a8cff8071bbca5", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 2970198016, + "reserved": 3319791616 + }, + "complete_peak": { + "allocated": 2970198016, + "reserved": 3319791616 + } + }, + { + "run": "Mini_n1000_TORCH_p1", + "model": "Mini", + "n": 1000, + "mode": "TORCH", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "c540becf8e314c797db8c0e00ea5230e81df1df94bb39f6910a8cff8071bbca5", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 2970198016, + "reserved": 3319791616 + }, + "complete_peak": { + "allocated": 2970198016, + "reserved": 3319791616 + } + }, + { + "run": "Mini_n1000_TORCH_p2", + "model": "Mini", + "n": 1000, + "mode": "TORCH", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "c540becf8e314c797db8c0e00ea5230e81df1df94bb39f6910a8cff8071bbca5", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 2970198016, + "reserved": 3319791616 + }, + "complete_peak": { + "allocated": 2970198016, + "reserved": 3319791616 + } + }, + { + "run": "Mini_n4096_BASE_p0", + "model": "Mini", + "n": 4096, + "mode": "BASE", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "224cf35c8c18efa76521e3be6bcadc40af824e737518a4643f85bd24c4c16bf0", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 7772357120, + "reserved": 8095006720 + }, + "complete_peak": { + "allocated": 7772357120, + "reserved": 8095006720 + } + }, + { + "run": "Mini_n4096_BASE_p1", + "model": "Mini", + "n": 4096, + "mode": "BASE", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "224cf35c8c18efa76521e3be6bcadc40af824e737518a4643f85bd24c4c16bf0", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 7671693824, + "reserved": 8095006720 + }, + "complete_peak": { + "allocated": 7671693824, + "reserved": 8095006720 + } + }, + { + "run": "Mini_n4096_BASE_p2", + "model": "Mini", + "n": 4096, + "mode": "BASE", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "224cf35c8c18efa76521e3be6bcadc40af824e737518a4643f85bd24c4c16bf0", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 7671693824, + "reserved": 8095006720 + }, + "complete_peak": { + "allocated": 7671693824, + "reserved": 8095006720 + } + }, + { + "run": "Mini_n4096_ECS_p0", + "model": "Mini", + "n": 4096, + "mode": "ECS", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "93486af5bf7c07be472bd5752eed586c5ceac40efbf9b70944446a57e74c7f28", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 7772357120, + "reserved": 8095006720 + }, + "complete_peak": { + "allocated": 7772357120, + "reserved": 8095006720 + } + }, + { + "run": "Mini_n4096_ECS_p1", + "model": "Mini", + "n": 4096, + "mode": "ECS", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "93486af5bf7c07be472bd5752eed586c5ceac40efbf9b70944446a57e74c7f28", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 7671693824, + "reserved": 8095006720 + }, + "complete_peak": { + "allocated": 7671693824, + "reserved": 8095006720 + } + }, + { + "run": "Mini_n4096_ECS_p2", + "model": "Mini", + "n": 4096, + "mode": "ECS", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "93486af5bf7c07be472bd5752eed586c5ceac40efbf9b70944446a57e74c7f28", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 7671693824, + "reserved": 8095006720 + }, + "complete_peak": { + "allocated": 7671693824, + "reserved": 8095006720 + } + }, + { + "run": "Mini_n4096_TORCH_p0", + "model": "Mini", + "n": 4096, + "mode": "TORCH", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "9d093dc41b4a7513c07a55f41581cc5458519ba9fb1969e071ed5ddbe937c8e9", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 12216360448, + "reserved": 13461618688 + }, + "complete_peak": { + "allocated": 12216360448, + "reserved": 13461618688 + } + }, + { + "run": "Mini_n4096_TORCH_p1", + "model": "Mini", + "n": 4096, + "mode": "TORCH", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "9d093dc41b4a7513c07a55f41581cc5458519ba9fb1969e071ed5ddbe937c8e9", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "complete_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + } + }, + { + "run": "Mini_n4096_TORCH_p2", + "model": "Mini", + "n": 4096, + "mode": "TORCH", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "9d093dc41b4a7513c07a55f41581cc5458519ba9fb1969e071ed5ddbe937c8e9", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "complete_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + } + }, + { + "run": "Mini_n512_BASE_p0", + "model": "Mini", + "n": 512, + "mode": "BASE", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "6e4519d893b867e2694985489c4bd25f32da235d52698211d5fc4510fb8753bd", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 972595712, + "reserved": 1052770304 + }, + "complete_peak": { + "allocated": 972595712, + "reserved": 1052770304 + } + }, + { + "run": "Mini_n512_BASE_p1", + "model": "Mini", + "n": 512, + "mode": "BASE", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "6e4519d893b867e2694985489c4bd25f32da235d52698211d5fc4510fb8753bd", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 972595712, + "reserved": 1052770304 + }, + "complete_peak": { + "allocated": 972595712, + "reserved": 1052770304 + } + }, + { + "run": "Mini_n512_BASE_p2", + "model": "Mini", + "n": 512, + "mode": "BASE", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "6e4519d893b867e2694985489c4bd25f32da235d52698211d5fc4510fb8753bd", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 972595712, + "reserved": 1052770304 + }, + "complete_peak": { + "allocated": 972595712, + "reserved": 1052770304 + } + }, + { + "run": "Mini_n512_ECS_p0", + "model": "Mini", + "n": 512, + "mode": "ECS", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "a59e0259cad41edca0b3f6fa19c79a2a1b3b2b3b4399c07710e111f9a721c5f3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 972595712, + "reserved": 1052770304 + }, + "complete_peak": { + "allocated": 972595712, + "reserved": 1052770304 + } + }, + { + "run": "Mini_n512_ECS_p1", + "model": "Mini", + "n": 512, + "mode": "ECS", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "a59e0259cad41edca0b3f6fa19c79a2a1b3b2b3b4399c07710e111f9a721c5f3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 972595712, + "reserved": 1052770304 + }, + "complete_peak": { + "allocated": 972595712, + "reserved": 1052770304 + } + }, + { + "run": "Mini_n512_ECS_p2", + "model": "Mini", + "n": 512, + "mode": "ECS", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "a59e0259cad41edca0b3f6fa19c79a2a1b3b2b3b4399c07710e111f9a721c5f3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 972595712, + "reserved": 1052770304 + }, + "complete_peak": { + "allocated": 972595712, + "reserved": 1052770304 + } + }, + { + "run": "Mini_n512_TORCH_p0", + "model": "Mini", + "n": 512, + "mode": "TORCH", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "02f212e68f8d3f4dc632d688eb9229058e9a3ef7964650c2efe2d952b936f4b9", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "complete_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + } + }, + { + "run": "Mini_n512_TORCH_p1", + "model": "Mini", + "n": 512, + "mode": "TORCH", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "02f212e68f8d3f4dc632d688eb9229058e9a3ef7964650c2efe2d952b936f4b9", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "complete_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + } + }, + { + "run": "Mini_n512_TORCH_p2", + "model": "Mini", + "n": 512, + "mode": "TORCH", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "02f212e68f8d3f4dc632d688eb9229058e9a3ef7964650c2efe2d952b936f4b9", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "complete_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + } + }, + { + "run": "Nano_n1000_BASE_p0", + "model": "Nano", + "n": 1000, + "mode": "BASE", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "46304479d6d1aca21b3ce68181af8752984588860ffabcc91f85c0d1bb36df99", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 1045293568, + "reserved": 1159725056 + }, + "complete_peak": { + "allocated": 1045293568, + "reserved": 1159725056 + } + }, + { + "run": "Nano_n1000_BASE_p1", + "model": "Nano", + "n": 1000, + "mode": "BASE", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "46304479d6d1aca21b3ce68181af8752984588860ffabcc91f85c0d1bb36df99", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 1045293568, + "reserved": 1159725056 + }, + "complete_peak": { + "allocated": 1045293568, + "reserved": 1159725056 + } + }, + { + "run": "Nano_n1000_BASE_p2", + "model": "Nano", + "n": 1000, + "mode": "BASE", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "46304479d6d1aca21b3ce68181af8752984588860ffabcc91f85c0d1bb36df99", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 1045293568, + "reserved": 1159725056 + }, + "complete_peak": { + "allocated": 1045293568, + "reserved": 1159725056 + } + }, + { + "run": "Nano_n1000_ECS_p0", + "model": "Nano", + "n": 1000, + "mode": "ECS", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "87fbc5bba196ee0c902a76eadd8acdc706737cb38d1cb7959105260d2fff699b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 1045293568, + "reserved": 1159725056 + }, + "complete_peak": { + "allocated": 1045293568, + "reserved": 1159725056 + } + }, + { + "run": "Nano_n1000_ECS_p1", + "model": "Nano", + "n": 1000, + "mode": "ECS", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "87fbc5bba196ee0c902a76eadd8acdc706737cb38d1cb7959105260d2fff699b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 1045293568, + "reserved": 1159725056 + }, + "complete_peak": { + "allocated": 1045293568, + "reserved": 1159725056 + } + }, + { + "run": "Nano_n1000_ECS_p2", + "model": "Nano", + "n": 1000, + "mode": "ECS", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "87fbc5bba196ee0c902a76eadd8acdc706737cb38d1cb7959105260d2fff699b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 1045293568, + "reserved": 1159725056 + }, + "complete_peak": { + "allocated": 1045293568, + "reserved": 1159725056 + } + }, + { + "run": "Nano_n1000_TORCH_p0", + "model": "Nano", + "n": 1000, + "mode": "TORCH", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "b86754c6c32ad76d6462a905951544cf6dcb42d4533d25f0505673a777a9ae79", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 1639991296, + "reserved": 1728053248 + }, + "complete_peak": { + "allocated": 1639991296, + "reserved": 1728053248 + } + }, + { + "run": "Nano_n1000_TORCH_p1", + "model": "Nano", + "n": 1000, + "mode": "TORCH", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "b86754c6c32ad76d6462a905951544cf6dcb42d4533d25f0505673a777a9ae79", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 1639991296, + "reserved": 1728053248 + }, + "complete_peak": { + "allocated": 1639991296, + "reserved": 1728053248 + } + }, + { + "run": "Nano_n1000_TORCH_p2", + "model": "Nano", + "n": 1000, + "mode": "TORCH", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "b86754c6c32ad76d6462a905951544cf6dcb42d4533d25f0505673a777a9ae79", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 1639991296, + "reserved": 1728053248 + }, + "complete_peak": { + "allocated": 1639991296, + "reserved": 1728053248 + } + }, + { + "run": "Nano_n4096_BASE_p0", + "model": "Nano", + "n": 4096, + "mode": "BASE", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "61d8093779706892b05c8cd5d33057cceb69fab734ae40337705eba3654ff09e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 4342519296, + "reserved": 4504682496 + }, + "complete_peak": { + "allocated": 4342519296, + "reserved": 4504682496 + } + }, + { + "run": "Nano_n4096_BASE_p1", + "model": "Nano", + "n": 4096, + "mode": "BASE", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "61d8093779706892b05c8cd5d33057cceb69fab734ae40337705eba3654ff09e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 4241856000, + "reserved": 4504682496 + }, + "complete_peak": { + "allocated": 4241856000, + "reserved": 4504682496 + } + }, + { + "run": "Nano_n4096_BASE_p2", + "model": "Nano", + "n": 4096, + "mode": "BASE", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "61d8093779706892b05c8cd5d33057cceb69fab734ae40337705eba3654ff09e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 4241856000, + "reserved": 4504682496 + }, + "complete_peak": { + "allocated": 4241856000, + "reserved": 4504682496 + } + }, + { + "run": "Nano_n4096_ECS_p0", + "model": "Nano", + "n": 4096, + "mode": "ECS", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "4f8e79499d28567ed6e211ab86f8ab810bff539dd94c0d5ee6670f579acfceea", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 4342519296, + "reserved": 4504682496 + }, + "complete_peak": { + "allocated": 4342519296, + "reserved": 4504682496 + } + }, + { + "run": "Nano_n4096_ECS_p1", + "model": "Nano", + "n": 4096, + "mode": "ECS", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "4f8e79499d28567ed6e211ab86f8ab810bff539dd94c0d5ee6670f579acfceea", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 4241856000, + "reserved": 4504682496 + }, + "complete_peak": { + "allocated": 4241856000, + "reserved": 4504682496 + } + }, + { + "run": "Nano_n4096_ECS_p2", + "model": "Nano", + "n": 4096, + "mode": "ECS", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "4f8e79499d28567ed6e211ab86f8ab810bff539dd94c0d5ee6670f579acfceea", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 4241856000, + "reserved": 4504682496 + }, + "complete_peak": { + "allocated": 4241856000, + "reserved": 4504682496 + } + }, + { + "run": "Nano_n4096_TORCH_p0", + "model": "Nano", + "n": 4096, + "mode": "TORCH", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "43b10dc8ccd688392f0f9d4d11704e2a68f8a57c6de79661babfdf074579c711", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 6695809536, + "reserved": 7105150976 + }, + "complete_peak": { + "allocated": 6695809536, + "reserved": 7105150976 + } + }, + { + "run": "Nano_n4096_TORCH_p1", + "model": "Nano", + "n": 4096, + "mode": "TORCH", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "43b10dc8ccd688392f0f9d4d11704e2a68f8a57c6de79661babfdf074579c711", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "complete_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + } + }, + { + "run": "Nano_n4096_TORCH_p2", + "model": "Nano", + "n": 4096, + "mode": "TORCH", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "43b10dc8ccd688392f0f9d4d11704e2a68f8a57c6de79661babfdf074579c711", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "complete_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + } + }, + { + "run": "Nano_n512_BASE_p0", + "model": "Nano", + "n": 512, + "mode": "BASE", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "dd4fd3d5192260196800015cce2abdea8a93f037a973334eb3b86e0fef4be208", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 541447680, + "reserved": 608174080 + }, + "complete_peak": { + "allocated": 541447680, + "reserved": 608174080 + } + }, + { + "run": "Nano_n512_BASE_p1", + "model": "Nano", + "n": 512, + "mode": "BASE", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "dd4fd3d5192260196800015cce2abdea8a93f037a973334eb3b86e0fef4be208", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 541447680, + "reserved": 608174080 + }, + "complete_peak": { + "allocated": 541447680, + "reserved": 608174080 + } + }, + { + "run": "Nano_n512_BASE_p2", + "model": "Nano", + "n": 512, + "mode": "BASE", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "dd4fd3d5192260196800015cce2abdea8a93f037a973334eb3b86e0fef4be208", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 541447680, + "reserved": 608174080 + }, + "complete_peak": { + "allocated": 541447680, + "reserved": 608174080 + } + }, + { + "run": "Nano_n512_ECS_p0", + "model": "Nano", + "n": 512, + "mode": "ECS", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "d198fcde748d3adf01649ce3c7188be3bd1a31199a716dd14d24e678e084da96", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 541447680, + "reserved": 608174080 + }, + "complete_peak": { + "allocated": 541447680, + "reserved": 608174080 + } + }, + { + "run": "Nano_n512_ECS_p1", + "model": "Nano", + "n": 512, + "mode": "ECS", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "d198fcde748d3adf01649ce3c7188be3bd1a31199a716dd14d24e678e084da96", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 541447680, + "reserved": 608174080 + }, + "complete_peak": { + "allocated": 541447680, + "reserved": 608174080 + } + }, + { + "run": "Nano_n512_ECS_p2", + "model": "Nano", + "n": 512, + "mode": "ECS", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "d198fcde748d3adf01649ce3c7188be3bd1a31199a716dd14d24e678e084da96", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 541447680, + "reserved": 608174080 + }, + "complete_peak": { + "allocated": 541447680, + "reserved": 608174080 + } + }, + { + "run": "Nano_n512_TORCH_p0", + "model": "Nano", + "n": 512, + "mode": "TORCH", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "9f7ed1784d69c0f2d520e25b25447333594fc68399b5721749738943eadb75fd", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "complete_peak": { + "allocated": 845872128, + "reserved": 901775360 + } + }, + { + "run": "Nano_n512_TORCH_p1", + "model": "Nano", + "n": 512, + "mode": "TORCH", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "9f7ed1784d69c0f2d520e25b25447333594fc68399b5721749738943eadb75fd", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "complete_peak": { + "allocated": 845872128, + "reserved": 901775360 + } + }, + { + "run": "Nano_n512_TORCH_p2", + "model": "Nano", + "n": 512, + "mode": "TORCH", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "9f7ed1784d69c0f2d520e25b25447333594fc68399b5721749738943eadb75fd", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "complete_peak": { + "allocated": 845872128, + "reserved": 901775360 + } + }, + { + "run": "Neo_n1000_BASE_p0", + "model": "Neo", + "n": 1000, + "mode": "BASE", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "1a2b97834230b1d66b8c8141266dd87a0a2103ab1e129ff497d8b170843a7b53", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 5869244928, + "reserved": 6488588288 + }, + "complete_peak": { + "allocated": 5869244928, + "reserved": 6488588288 + } + }, + { + "run": "Neo_n1000_BASE_p1", + "model": "Neo", + "n": 1000, + "mode": "BASE", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "1a2b97834230b1d66b8c8141266dd87a0a2103ab1e129ff497d8b170843a7b53", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 5869244928, + "reserved": 6488588288 + }, + "complete_peak": { + "allocated": 5869244928, + "reserved": 6488588288 + } + }, + { + "run": "Neo_n1000_BASE_p2", + "model": "Neo", + "n": 1000, + "mode": "BASE", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "1a2b97834230b1d66b8c8141266dd87a0a2103ab1e129ff497d8b170843a7b53", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 5869244928, + "reserved": 6488588288 + }, + "complete_peak": { + "allocated": 5869244928, + "reserved": 6488588288 + } + }, + { + "run": "Neo_n1000_ECS_RUNTIME_p0", + "model": "Neo", + "n": 1000, + "mode": "ECS_RUNTIME", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "1ad15e76e2aa7897cdb0c13a981ae726d8117e259558269df740e814eb3813d5", + "opaque_cohort_calls": 2, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 9, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [ + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + } + ], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 5448002048, + "reserved": 5691670528 + }, + "complete_peak": { + "allocated": 5449050624, + "reserved": 5691670528 + } + }, + { + "run": "Neo_n1000_ECS_RUNTIME_p1", + "model": "Neo", + "n": 1000, + "mode": "ECS_RUNTIME", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "1ad15e76e2aa7897cdb0c13a981ae726d8117e259558269df740e814eb3813d5", + "opaque_cohort_calls": 2, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 9, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [ + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + } + ], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 5448002048, + "reserved": 5691670528 + }, + "complete_peak": { + "allocated": 5449050624, + "reserved": 5691670528 + } + }, + { + "run": "Neo_n1000_ECS_RUNTIME_p2", + "model": "Neo", + "n": 1000, + "mode": "ECS_RUNTIME", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "1ad15e76e2aa7897cdb0c13a981ae726d8117e259558269df740e814eb3813d5", + "opaque_cohort_calls": 2, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 9, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [ + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + }, + { + "edges": 158002, + "cohort": 8192, + "chunks": 20 + } + ], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 5448002048, + "reserved": 5691670528 + }, + "complete_peak": { + "allocated": 5449050624, + "reserved": 5691670528 + } + }, + { + "run": "Neo_n1000_ECS_p0", + "model": "Neo", + "n": 1000, + "mode": "ECS", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "50fe77b1c829163d08ffcc6d840fe53e4350f699677957298be789c4d21754e2", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 5585725952, + "reserved": 6090129408 + }, + "complete_peak": { + "allocated": 5585725952, + "reserved": 6090129408 + } + }, + { + "run": "Neo_n1000_ECS_p1", + "model": "Neo", + "n": 1000, + "mode": "ECS", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "50fe77b1c829163d08ffcc6d840fe53e4350f699677957298be789c4d21754e2", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 5585725952, + "reserved": 6090129408 + }, + "complete_peak": { + "allocated": 5585725952, + "reserved": 6090129408 + } + }, + { + "run": "Neo_n1000_ECS_p2", + "model": "Neo", + "n": 1000, + "mode": "ECS", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "50fe77b1c829163d08ffcc6d840fe53e4350f699677957298be789c4d21754e2", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 5585725952, + "reserved": 6090129408 + }, + "complete_peak": { + "allocated": 5585725952, + "reserved": 6090129408 + } + }, + { + "run": "Neo_n1000_TORCH_p0", + "model": "Neo", + "n": 1000, + "mode": "TORCH", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "35f8d780596dfebf67f99061858fba9c9fa0de9c6f1ac9036bcab1e2c631dd6d", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 10390707200, + "reserved": 11903434752 + }, + "complete_peak": { + "allocated": 10390707200, + "reserved": 11903434752 + } + }, + { + "run": "Neo_n1000_TORCH_p1", + "model": "Neo", + "n": 1000, + "mode": "TORCH", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "35f8d780596dfebf67f99061858fba9c9fa0de9c6f1ac9036bcab1e2c631dd6d", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 10390707200, + "reserved": 11903434752 + }, + "complete_peak": { + "allocated": 10390707200, + "reserved": 11903434752 + } + }, + { + "run": "Neo_n1000_TORCH_p2", + "model": "Neo", + "n": 1000, + "mode": "TORCH", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "35f8d780596dfebf67f99061858fba9c9fa0de9c6f1ac9036bcab1e2c631dd6d", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 10390707200, + "reserved": 11903434752 + }, + "complete_peak": { + "allocated": 10390707200, + "reserved": 11903434752 + } + }, + { + "run": "Neo_n4096_BASE_p0", + "model": "Neo", + "n": 4096, + "mode": "BASE", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "19ca66269f1712384c51ef9eb5122e8a2bbc66230787c8008f9d89352873b0ce", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 24061592576, + "reserved": 25612517376 + }, + "complete_peak": { + "allocated": 24061592576, + "reserved": 25612517376 + } + }, + { + "run": "Neo_n4096_BASE_p1", + "model": "Neo", + "n": 4096, + "mode": "BASE", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "19ca66269f1712384c51ef9eb5122e8a2bbc66230787c8008f9d89352873b0ce", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 23970400256, + "reserved": 25610420224 + }, + "complete_peak": { + "allocated": 23970400256, + "reserved": 25610420224 + } + }, + { + "run": "Neo_n4096_BASE_p2", + "model": "Neo", + "n": 4096, + "mode": "BASE", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "19ca66269f1712384c51ef9eb5122e8a2bbc66230787c8008f9d89352873b0ce", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 23970400256, + "reserved": 25610420224 + }, + "complete_peak": { + "allocated": 23970400256, + "reserved": 25610420224 + } + }, + { + "run": "Neo_n4096_ECS_RUNTIME_p0", + "model": "Neo", + "n": 4096, + "mode": "ECS_RUNTIME", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "f03faf056cef0c142541bcf8c855e5b22713f9223ac3f36a897acea66674bb99", + "opaque_cohort_calls": 2, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 9, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [ + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + } + ], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 22255608320, + "reserved": 23284678656 + }, + "complete_peak": { + "allocated": 22256656896, + "reserved": 23284678656 + } + }, + { + "run": "Neo_n4096_ECS_RUNTIME_p1", + "model": "Neo", + "n": 4096, + "mode": "ECS_RUNTIME", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "f03faf056cef0c142541bcf8c855e5b22713f9223ac3f36a897acea66674bb99", + "opaque_cohort_calls": 2, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 9, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [ + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + } + ], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 22255608320, + "reserved": 23282581504 + }, + "complete_peak": { + "allocated": 22256656896, + "reserved": 23282581504 + } + }, + { + "run": "Neo_n4096_ECS_RUNTIME_p2", + "model": "Neo", + "n": 4096, + "mode": "ECS_RUNTIME", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "f03faf056cef0c142541bcf8c855e5b22713f9223ac3f36a897acea66674bb99", + "opaque_cohort_calls": 2, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 9, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [ + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + }, + { + "edges": 647170, + "cohort": 8192, + "chunks": 80 + } + ], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 22255608320, + "reserved": 23282581504 + }, + "complete_peak": { + "allocated": 22256656896, + "reserved": 23282581504 + } + }, + { + "run": "Neo_n4096_ECS_p0", + "model": "Neo", + "n": 4096, + "mode": "ECS", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "60c8057296067a15919c1abb7618d4fcfd1436a9aa649fc49c9c2fb8f3495dca", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 22907041792, + "reserved": 23955767296 + }, + "complete_peak": { + "allocated": 22907041792, + "reserved": 23955767296 + } + }, + { + "run": "Neo_n4096_ECS_p1", + "model": "Neo", + "n": 4096, + "mode": "ECS", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "60c8057296067a15919c1abb7618d4fcfd1436a9aa649fc49c9c2fb8f3495dca", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "complete_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + } + }, + { + "run": "Neo_n4096_ECS_p2", + "model": "Neo", + "n": 4096, + "mode": "ECS", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "60c8057296067a15919c1abb7618d4fcfd1436a9aa649fc49c9c2fb8f3495dca", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "complete_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + } + }, + { + "run": "Neo_n4096_TORCH_p0", + "model": "Neo", + "n": 4096, + "mode": "TORCH", + "gpu": "0", + "process": "p0", + "status": "oom", + "raw_status": "failed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 1124910, + "first_peak": null, + "complete_peak": { + "allocated": 32302947328, + "reserved": 32440844288 + } + }, + { + "run": "Neo_n4096_TORCH_p1", + "model": "Neo", + "n": 4096, + "mode": "TORCH", + "gpu": "0", + "process": "p1", + "status": "oom", + "raw_status": "oom", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 1124910, + "first_peak": null, + "complete_peak": { + "allocated": 32302947328, + "reserved": 32440844288 + } + }, + { + "run": "Neo_n4096_TORCH_p2", + "model": "Neo", + "n": 4096, + "mode": "TORCH", + "gpu": "0", + "process": "p2", + "status": "oom", + "raw_status": "oom", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 1124910, + "first_peak": null, + "complete_peak": { + "allocated": 32302947328, + "reserved": 32440844288 + } + }, + { + "run": "Neo_n512_BASE_p0", + "model": "Neo", + "n": 512, + "mode": "BASE", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "c8bf722e1a5145db4d3dac88eea0593748565992f75331a9fb5e0bf0c8ca75c3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 3016099840, + "reserved": 3242196992 + }, + "complete_peak": { + "allocated": 3016099840, + "reserved": 3242196992 + } + }, + { + "run": "Neo_n512_BASE_p1", + "model": "Neo", + "n": 512, + "mode": "BASE", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "c8bf722e1a5145db4d3dac88eea0593748565992f75331a9fb5e0bf0c8ca75c3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 3016099840, + "reserved": 3242196992 + }, + "complete_peak": { + "allocated": 3016099840, + "reserved": 3242196992 + } + }, + { + "run": "Neo_n512_BASE_p2", + "model": "Neo", + "n": 512, + "mode": "BASE", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "c8bf722e1a5145db4d3dac88eea0593748565992f75331a9fb5e0bf0c8ca75c3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 3016099840, + "reserved": 3242196992 + }, + "complete_peak": { + "allocated": 3016099840, + "reserved": 3242196992 + } + }, + { + "run": "Neo_n512_ECS_RUNTIME_p0", + "model": "Neo", + "n": 512, + "mode": "ECS_RUNTIME", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "cbe12e1581bde050b362c75729cfbe6efe355cb3ae52f4d39d51ea19784f3593", + "opaque_cohort_calls": 2, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 9, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [ + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + } + ], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 2798746112, + "reserved": 2948595712 + }, + "complete_peak": { + "allocated": 2799794688, + "reserved": 2948595712 + } + }, + { + "run": "Neo_n512_ECS_RUNTIME_p1", + "model": "Neo", + "n": 512, + "mode": "ECS_RUNTIME", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "cbe12e1581bde050b362c75729cfbe6efe355cb3ae52f4d39d51ea19784f3593", + "opaque_cohort_calls": 2, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 9, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [ + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + } + ], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 2798746112, + "reserved": 2948595712 + }, + "complete_peak": { + "allocated": 2799794688, + "reserved": 2948595712 + } + }, + { + "run": "Neo_n512_ECS_RUNTIME_p2", + "model": "Neo", + "n": 512, + "mode": "ECS_RUNTIME", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "cbe12e1581bde050b362c75729cfbe6efe355cb3ae52f4d39d51ea19784f3593", + "opaque_cohort_calls": 2, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 9, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [ + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + }, + { + "edges": 80898, + "cohort": 8192, + "chunks": 10 + } + ], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 2798746112, + "reserved": 2948595712 + }, + "complete_peak": { + "allocated": 2799794688, + "reserved": 2948595712 + } + }, + { + "run": "Neo_n512_ECS_p0", + "model": "Neo", + "n": 512, + "mode": "ECS", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "97b6e45c27f52dca1101520bb417952b7b3d99865eae401991d87a496041a829", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "complete_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + } + }, + { + "run": "Neo_n512_ECS_p1", + "model": "Neo", + "n": 512, + "mode": "ECS", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "97b6e45c27f52dca1101520bb417952b7b3d99865eae401991d87a496041a829", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "complete_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + } + }, + { + "run": "Neo_n512_ECS_p2", + "model": "Neo", + "n": 512, + "mode": "ECS", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "97b6e45c27f52dca1101520bb417952b7b3d99865eae401991d87a496041a829", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "complete_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + } + }, + { + "run": "Neo_n512_TORCH_p0", + "model": "Neo", + "n": 512, + "mode": "TORCH", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "25780fc62369deab593b7e688daac8bc93df9690003f5f1b0917be25e681c72f", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 5431681536, + "reserved": 6075449344 + }, + "complete_peak": { + "allocated": 5431681536, + "reserved": 6075449344 + } + }, + { + "run": "Neo_n512_TORCH_p1", + "model": "Neo", + "n": 512, + "mode": "TORCH", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "25780fc62369deab593b7e688daac8bc93df9690003f5f1b0917be25e681c72f", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "complete_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + } + }, + { + "run": "Neo_n512_TORCH_p2", + "model": "Neo", + "n": 512, + "mode": "TORCH", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "25780fc62369deab593b7e688daac8bc93df9690003f5f1b0917be25e681c72f", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "complete_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + } + }, + { + "run": "Pro_n512_TORCH_p0", + "model": "Pro", + "n": 512, + "mode": "TORCH", + "gpu": "1", + "process": "p0", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 32676858368, + "reserved": 32847691776 + } + }, + { + "run": "Pro_n64_BASE_p0", + "model": "Pro", + "n": 64, + "mode": "BASE", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "31eaf0474fc2582f3f41c6b9d2d853d341219c9a4b3b73104ee1a919fd2d9a70", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 3656641536, + "reserved": 3783262208 + }, + "complete_peak": { + "allocated": 3656641536, + "reserved": 3783262208 + } + }, + { + "run": "Pro_n64_ECS_p0", + "model": "Pro", + "n": 64, + "mode": "ECS", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "f2d0ae9335e31e7bd09b3d90af402d5dae9eb5ed20226a4d9d1890bff5793f0d", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 3656641536, + "reserved": 3783262208 + }, + "complete_peak": { + "allocated": 3656641536, + "reserved": 3783262208 + } + }, + { + "run": "Pro_n64_ECS_p1", + "model": "Pro", + "n": 64, + "mode": "ECS", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "f2d0ae9335e31e7bd09b3d90af402d5dae9eb5ed20226a4d9d1890bff5793f0d", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 3555978240, + "reserved": 3699376128 + }, + "complete_peak": { + "allocated": 3555978240, + "reserved": 3699376128 + } + }, + { + "run": "Pro_n64_TORCH_p0", + "model": "Pro", + "n": 64, + "mode": "TORCH", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "d54dc4989a6398f93d01ea9b60cfbc8d162c584844993d18a3afd203669452e4", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 7752399872, + "reserved": 8145338368 + }, + "complete_peak": { + "allocated": 7752399872, + "reserved": 8145338368 + } + } + ], + "comparisons": [ + { + "model": "Mini", + "n": 512, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 1.9073486328125e-05 + ], + "worst_mean_abs": 1.9073486328125e-05, + "worst_max_relative": 4.107218964838322e-09, + "worst_tolerance_ratio": 4.107130523301802e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.742866099778254e-06, + 7.457862025717077e-06 + ], + "worst_mean_abs": 1.5914368669058111e-06, + "worst_max_relative": 0.022706930419765924, + "worst_tolerance_ratio": 0.5330082713608827 + }, + "virial": { + "comparisons": 27, + "failures": 5, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.9414789234506458e-05, + 0.00010075638114237506 + ], + "worst_mean_abs": 4.490057265028725e-05, + "worst_max_relative": 0.00037430960387721865, + "worst_tolerance_ratio": 2.325619491095815 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.477172333207992e-09, + 3.453298559868284e-08 + ], + "worst_mean_abs": 1.5742615091094245e-08, + "worst_max_relative": 0.0003677758905958666, + "worst_tolerance_ratio": 0.0033971439422584896 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 2.682209014892578e-05 + ], + "worst_mean_abs": 2.682209014892578e-05, + "worst_max_relative": 5.776065127309253e-09, + "worst_tolerance_ratio": 5.7759407439755024e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.57359965291937e-06, + 8.402122760209352e-06 + ], + "worst_mean_abs": 1.5750863560325835e-06, + "worst_max_relative": 0.022694625408821053, + "worst_tolerance_ratio": 0.6534603706501315 + }, + "virial": { + "comparisons": 81, + "failures": 14, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.16080184003431e-05, + 0.00010169408309934624 + ], + "worst_mean_abs": 4.00106575227562e-05, + "worst_max_relative": 0.0003347357074241739, + "worst_tolerance_ratio": 2.0800050112545687 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.439189795427348e-09, + 3.501115054815873e-08 + ], + "worst_mean_abs": 1.5725543107664093e-08, + "worst_max_relative": 0.0003245584752382981, + "worst_tolerance_ratio": 0.00326680948823279 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.940696716308594e-07, + 2.9087066650390625e-05 + ], + "worst_mean_abs": 2.9087066650390625e-05, + "worst_max_relative": 6.263508908435247e-09, + "worst_tolerance_ratio": 6.263374035092612e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.664545644545882e-06, + 7.634197266348508e-06 + ], + "worst_mean_abs": 1.5398084600272588e-06, + "worst_max_relative": 0.01527470489153405, + "worst_tolerance_ratio": 0.4897388680845277 + }, + "virial": { + "comparisons": 27, + "failures": 2, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.8218679983306174e-05, + 8.902023510870549e-05 + ], + "worst_mean_abs": 3.9107133109395065e-05, + "worst_max_relative": 0.00019313039028895026, + "worst_tolerance_ratio": 1.3209042372833233 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.846861273568413e-09, + 3.064780917938492e-08 + ], + "worst_mean_abs": 1.3624246735633962e-08, + "worst_max_relative": 0.00018943096336173764, + "worst_tolerance_ratio": 0.0029313792112797502 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-07, + 3.5762786865234375e-05 + ], + "worst_mean_abs": 3.5762786865234375e-05, + "worst_max_relative": 7.701035532087647e-09, + "worst_tolerance_ratio": 7.700869704207835e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.393918644180928e-06, + 8.533491972162466e-06 + ], + "worst_mean_abs": 1.557366035165822e-06, + "worst_max_relative": 0.017106518549718987, + "worst_tolerance_ratio": 0.6167101843814231 + }, + "virial": { + "comparisons": 81, + "failures": 6, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7799352178826666e-05, + 9.779887717087377e-05 + ], + "worst_mean_abs": 4.818979831123905e-05, + "worst_max_relative": 0.00024798785198630455, + "worst_tolerance_ratio": 1.5409381236871473 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.127945498257681e-09, + 3.3670112441208655e-08 + ], + "worst_mean_abs": 1.7532207829965393e-08, + "worst_max_relative": 0.00024433120825848395, + "worst_tolerance_ratio": 0.0027762899185930284 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-07, + 2.7835369110107422e-05 + ], + "worst_mean_abs": 2.7835369110107422e-05, + "worst_max_relative": 5.994272019885146e-09, + "worst_tolerance_ratio": 5.99414293762598e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.506870500937566e-06, + 8.241168691469625e-06 + ], + "worst_mean_abs": 1.5532761270029396e-06, + "worst_max_relative": 0.025041921857038487, + "worst_tolerance_ratio": 0.70548537886412 + }, + "virial": { + "comparisons": 27, + "failures": 4, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.3876290850655124e-05, + 0.00011017325687845414 + ], + "worst_mean_abs": 4.179817674949188e-05, + "worst_max_relative": 0.0003778793094029295, + "worst_tolerance_ratio": 2.3481402054115694 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.637356115586247e-09, + 3.793035312921189e-08 + ], + "worst_mean_abs": 1.7095092173069228e-08, + "worst_max_relative": 0.00037597114801343295, + "worst_tolerance_ratio": 0.0031285542444244303 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.980232238769531e-07, + 2.7060508728027344e-05 + ], + "worst_mean_abs": 2.7060508728027344e-05, + "worst_max_relative": 5.827407916547872e-09, + "worst_tolerance_ratio": 5.827282427585e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.5380993724263305e-06, + 8.990824328591884e-06 + ], + "worst_mean_abs": 1.5569749687369438e-06, + "worst_max_relative": 0.021686035834322718, + "worst_tolerance_ratio": 0.6758367393868097 + }, + "virial": { + "comparisons": 81, + "failures": 15, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.569513067158141e-06, + 0.00011845013214184519 + ], + "worst_mean_abs": 4.965149203699997e-05, + "worst_max_relative": 0.0004456971202636045, + "worst_tolerance_ratio": 2.769559185063532 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.6002155639141128e-09, + 4.0779908550697685e-08 + ], + "worst_mean_abs": 1.924762625364578e-08, + "worst_max_relative": 0.00044005154582593144, + "worst_tolerance_ratio": 0.00336359111823531 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 3.8564205169677734e-05 + ], + "worst_mean_abs": 3.8564205169677734e-05, + "worst_max_relative": 8.304283310424971e-09, + "worst_tolerance_ratio": 8.30410449269479e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.663303791982656e-06, + 1.1937818188201277e-05 + ], + "worst_mean_abs": 2.152193331162966e-06, + "worst_max_relative": 0.027011933000708296, + "worst_tolerance_ratio": 0.8735868500593729 + }, + "virial": { + "comparisons": 243, + "failures": 32, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.733559977969207e-05, + 0.00023924866006552747 + ], + "worst_mean_abs": 8.830730162766464e-05, + "worst_max_relative": 0.00033093060677551645, + "worst_tolerance_ratio": 2.056393230686562 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.00678243900232e-08, + 8.236832076471967e-08 + ], + "worst_mean_abs": 3.3025334414918103e-08, + "worst_max_relative": 0.00032558612971655363, + "worst_tolerance_ratio": 0.006780276978945852 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 3.629922866821289e-05 + ], + "worst_mean_abs": 3.629922866821289e-05, + "worst_max_relative": 7.816941517443018e-09, + "worst_tolerance_ratio": 7.816773185329399e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.537658524015001e-06, + 1.3618943592419441e-05 + ], + "worst_mean_abs": 2.1200117095310723e-06, + "worst_max_relative": 0.03454607400986916, + "worst_tolerance_ratio": 0.817607665512196 + }, + "virial": { + "comparisons": 243, + "failures": 43, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.12305283659498e-05, + 0.00020637063148143397 + ], + "worst_mean_abs": 7.148432305993503e-05, + "worst_max_relative": 0.000424182295357236, + "worst_tolerance_ratio": 2.6358565297087027 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.796597570881021e-08, + 7.104910165756095e-08 + ], + "worst_mean_abs": 2.87626209603984e-08, + "worst_max_relative": 0.00042234026847539377, + "worst_tolerance_ratio": 0.005860238429637883 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 3.224611282348633e-05 + ], + "worst_mean_abs": 3.224611282348633e-05, + "worst_max_relative": 6.943767091573225e-09, + "worst_tolerance_ratio": 6.943617570099292e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.3174597951510805e-06, + 8.22734991834384e-06 + ], + "worst_mean_abs": 1.5536268872231973e-06, + "worst_max_relative": 0.024867903762799057, + "worst_tolerance_ratio": 0.651250070953936 + }, + "virial": { + "comparisons": 243, + "failures": 38, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.0912217609020445e-06, + 0.00011696194470545151 + ], + "worst_mean_abs": 4.99161199233939e-05, + "worst_max_relative": 0.0003482517415345143, + "worst_tolerance_ratio": 2.163954326281322 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.441359663041265e-09, + 4.026755667796422e-08 + ], + "worst_mean_abs": 2.1456696329332512e-08, + "worst_max_relative": 0.00034341701619046487, + "worst_tolerance_ratio": 0.0033146845764085 + } + } + }, + { + "model": "Mini", + "n": 1000, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.748603820800781e-07, + 3.9517879486083984e-05 + ], + "worst_mean_abs": 3.9517879486083984e-05, + "worst_max_relative": 4.356669741437475e-09, + "worst_tolerance_ratio": 4.356621711628606e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.942365068123401e-06, + 8.478775190390309e-06 + ], + "worst_mean_abs": 1.5863148284608308e-06, + "worst_max_relative": 0.028526428101089317, + "worst_tolerance_ratio": 0.64037145633476 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.820122779529811e-05, + 0.00014857636131182517 + ], + "worst_mean_abs": 7.005933384760275e-05, + "worst_max_relative": 7.778825565317479e-05, + "worst_tolerance_ratio": 0.6828019056856349 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.733765378630352e-09, + 2.6189691162276096e-08 + ], + "worst_mean_abs": 1.457033769568098e-08, + "worst_max_relative": 7.733627472768208e-05, + "worst_tolerance_ratio": 0.002168605657331468 + } + } + }, + { + "model": "Mini", + "n": 1000, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.172325134277344e-07, + 5.251169204711914e-05 + ], + "worst_mean_abs": 5.251169204711914e-05, + "worst_max_relative": 5.789179542546182e-09, + "worst_tolerance_ratio": 5.789115720130659e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.128346421663267e-06, + 8.85906298431216e-06 + ], + "worst_mean_abs": 1.5858116145045023e-06, + "worst_max_relative": 0.035866367370026735, + "worst_tolerance_ratio": 0.6952924318191501 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.881299246926261e-05, + 0.00018624514531495606 + ], + "worst_mean_abs": 7.087044207242254e-05, + "worst_max_relative": 8.846122945552217e-05, + "worst_tolerance_ratio": 0.7997259680431392 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.860993178725653e-09, + 3.282960218606301e-08 + ], + "worst_mean_abs": 1.508338001173599e-08, + "worst_max_relative": 8.597899611759951e-05, + "worst_tolerance_ratio": 0.0027151275182070653 + } + } + }, + { + "model": "Mini", + "n": 1000, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.364418029785156e-07, + 3.4749507904052734e-05 + ], + "worst_mean_abs": 3.4749507904052734e-05, + "worst_max_relative": 3.830978073473516e-09, + "worst_tolerance_ratio": 3.8309358391165834e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.791463756565918e-06, + 8.083614283727059e-06 + ], + "worst_mean_abs": 1.5654142928888798e-06, + "worst_max_relative": 0.022267338382567378, + "worst_tolerance_ratio": 0.5262451100879552 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.8142286400800742e-05, + 9.626649527660902e-05 + ], + "worst_mean_abs": 4.906634041638528e-05, + "worst_max_relative": 7.868577486122334e-05, + "worst_tolerance_ratio": 0.7113450717653167 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.86420350488204e-09, + 1.6968983211629318e-08 + ], + "worst_mean_abs": 1.0269484017041576e-08, + "worst_max_relative": 7.670224268113352e-05, + "worst_tolerance_ratio": 0.0016003199025075713 + } + } + }, + { + "model": "Mini", + "n": 1000, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 5.239248275756836e-05 + ], + "worst_mean_abs": 5.239248275756836e-05, + "worst_max_relative": 5.77603728899446e-09, + "worst_tolerance_ratio": 5.775973611464394e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.876774522572958e-06, + 9.180504784378485e-06 + ], + "worst_mean_abs": 1.5166922351791586e-06, + "worst_max_relative": 0.024991496343053986, + "worst_tolerance_ratio": 0.6145430677102461 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.5804571143362978e-05, + 0.00015448823683072987 + ], + "worst_mean_abs": 6.872088453079172e-05, + "worst_max_relative": 8.254997716815356e-05, + "worst_tolerance_ratio": 0.7255680521387728 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.7208376095233e-09, + 2.723178287034056e-08 + ], + "worst_mean_abs": 1.2526201209286545e-08, + "worst_max_relative": 8.145594315865483e-05, + "worst_tolerance_ratio": 0.002248987714180648 + } + } + }, + { + "model": "Mini", + "n": 1000, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-07, + 3.1948089599609375e-05 + ], + "worst_mean_abs": 3.1948089599609375e-05, + "worst_max_relative": 3.52254103850891e-09, + "worst_tolerance_ratio": 3.522502200009603e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.834985036701212e-06, + 8.293950088500424e-06 + ], + "worst_mean_abs": 1.5108064601431307e-06, + "worst_max_relative": 0.022459755247186467, + "worst_tolerance_ratio": 0.56193002673636 + }, + "virial": { + "comparisons": 27, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.425416394353675e-05, + 0.00011839176586647682 + ], + "worst_mean_abs": 6.122121819412346e-05, + "worst_max_relative": 0.0001267831416301408, + "worst_tolerance_ratio": 1.1128590436428347 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.018658010506755e-09, + 2.086902490400222e-08 + ], + "worst_mean_abs": 1.1913043066248526e-08, + "worst_max_relative": 0.00012627819848035887, + "worst_tolerance_ratio": 0.001730394962176401 + } + } + }, + { + "model": "Mini", + "n": 1000, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-07, + 4.5180320739746094e-05 + ], + "worst_mean_abs": 4.5180320739746094e-05, + "worst_max_relative": 4.981503938591997e-09, + "worst_tolerance_ratio": 4.9814490139976675e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.954550295506067e-06, + 8.708296609150068e-06 + ], + "worst_mean_abs": 1.5252042484687849e-06, + "worst_max_relative": 0.024314376078653954, + "worst_tolerance_ratio": 0.5975201411033858 + }, + "virial": { + "comparisons": 81, + "failures": 2, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.6786013901537444e-05, + 0.00012927349403923927 + ], + "worst_mean_abs": 8.633279841221666e-05, + "worst_max_relative": 0.0001512958390354819, + "worst_tolerance_ratio": 1.3280231154655262 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.9588860285534313e-09, + 2.2787157084869225e-08 + ], + "worst_mean_abs": 1.6278732358084545e-08, + "worst_max_relative": 0.00014966355988451065, + "worst_tolerance_ratio": 0.0018920518398214939 + } + } + }, + { + "model": "Mini", + "n": 1000, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 6.008148193359375e-05 + ], + "worst_mean_abs": 6.008148193359375e-05, + "worst_max_relative": 6.623715072515949e-09, + "worst_tolerance_ratio": 6.623642049820323e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.291399922200071e-06, + 1.2718351468876676e-05 + ], + "worst_mean_abs": 2.1091967869192595e-06, + "worst_max_relative": 0.028304485787336776, + "worst_tolerance_ratio": 0.8790025137802328 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0001898050359869785, + 0.0004217280413456592 + ], + "worst_mean_abs": 0.00012275276463464331, + "worst_max_relative": 0.00011132661163576985, + "worst_tolerance_ratio": 0.9771910074031923 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.345710737276408e-08, + 7.433838774759116e-08 + ], + "worst_mean_abs": 2.7130958842371993e-08, + "worst_max_relative": 0.00010724889769686823, + "worst_tolerance_ratio": 0.006129491384645123 + } + } + }, + { + "model": "Mini", + "n": 1000, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 4.5418739318847656e-05 + ], + "worst_mean_abs": 4.5418739318847656e-05, + "worst_max_relative": 5.007213208806261e-09, + "worst_tolerance_ratio": 5.0071580071249995e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.863358360671313e-06, + 1.1660318759654231e-05 + ], + "worst_mean_abs": 2.122320797962656e-06, + "worst_max_relative": 0.03168218354665909, + "worst_tolerance_ratio": 0.8441338653785047 + }, + "virial": { + "comparisons": 243, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0002126726797939682, + 0.00038946517976512496 + ], + "worst_mean_abs": 0.00013147606721784931, + "worst_max_relative": 0.00011711922097857225, + "worst_tolerance_ratio": 1.0280470606493994 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.74880078715667e-08, + 6.86513836126168e-08 + ], + "worst_mean_abs": 2.8893696401648187e-08, + "worst_max_relative": 0.00011674111640792188, + "worst_tolerance_ratio": 0.005660575607669639 + } + } + }, + { + "model": "Mini", + "n": 1000, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-07, + 5.2988529205322266e-05 + ], + "worst_mean_abs": 5.2988529205322266e-05, + "worst_max_relative": 5.8417487484824516e-09, + "worst_tolerance_ratio": 5.841684346520871e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.501919348560591e-06, + 9.309888041819647e-06 + ], + "worst_mean_abs": 1.5298866226064236e-06, + "worst_max_relative": 0.03154387792380262, + "worst_tolerance_ratio": 0.6930236755093616 + }, + "virial": { + "comparisons": 243, + "failures": 8, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.849106578788451e-05, + 0.00015355807795458531 + ], + "worst_mean_abs": 8.145100116310446e-05, + "worst_max_relative": 0.00014648826238079898, + "worst_tolerance_ratio": 1.2858467375364764 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.2594370848182397e-09, + 2.706782291014842e-08 + ], + "worst_mean_abs": 1.5349518719225493e-08, + "worst_max_relative": 0.00014558851045815208, + "worst_tolerance_ratio": 0.0023133727922297533 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 6.22868537902832e-05 + ], + "worst_mean_abs": 6.22868537902832e-05, + "worst_max_relative": 1.676505295726619e-09, + "worst_tolerance_ratio": 1.6765007832777307e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.276442724135634e-06, + 9.493022817164132e-06 + ], + "worst_mean_abs": 1.5604888942388797e-06, + "worst_max_relative": 0.7221657199292606, + "worst_tolerance_ratio": 0.6766329649396017 + }, + "virial": { + "comparisons": 27, + "failures": 8, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.061616724866269e-05, + 0.0004385140394447262 + ], + "worst_mean_abs": 0.00014062627027793754, + "worst_max_relative": 0.003646330978402356, + "worst_tolerance_ratio": 12.078487533882 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.0662720149255617e-09, + 1.887140405054666e-08 + ], + "worst_mean_abs": 8.27017624404072e-09, + "worst_max_relative": 0.003516495170973442, + "worst_tolerance_ratio": 0.0015584606357800237 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 8.33272933959961e-05 + ], + "worst_mean_abs": 8.33272933959961e-05, + "worst_max_relative": 2.242938611229538e-09, + "worst_tolerance_ratio": 2.2429325738798685e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.791250073412414e-06, + 9.901864735928356e-06 + ], + "worst_mean_abs": 1.5610593938481738e-06, + "worst_max_relative": 0.4002606254997042, + "worst_tolerance_ratio": 0.8863501561494904 + }, + "virial": { + "comparisons": 81, + "failures": 23, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.726828905849857e-05, + 0.00038339606288673167 + ], + "worst_mean_abs": 0.00012411605811251606, + "worst_max_relative": 0.005435660459240495, + "worst_tolerance_ratio": 18.005649373090712 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.0838191543397916e-09, + 1.6499407919784437e-08 + ], + "worst_mean_abs": 6.620879229180118e-09, + "worst_max_relative": 0.005318989456488086, + "worst_tolerance_ratio": 0.0013625734568615139 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.0994415283203125e-06, + 0.0001398921012878418 + ], + "worst_mean_abs": 0.0001398921012878418, + "worst_max_relative": 3.765317327969958e-09, + "worst_tolerance_ratio": 3.76530719331883e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.087830623753177e-06, + 8.594069466738574e-06 + ], + "worst_mean_abs": 1.5664331380786528e-06, + "worst_max_relative": 0.20380743711916677, + "worst_tolerance_ratio": 0.7154379637523316 + }, + "virial": { + "comparisons": 27, + "failures": 8, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.909067436908998e-05, + 0.0002918480684002134 + ], + "worst_mean_abs": 0.00014369099240547141, + "worst_max_relative": 0.002270021526724481, + "worst_tolerance_ratio": 7.532844258693963 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.043441544284392e-09, + 1.2559649920779181e-08 + ], + "worst_mean_abs": 6.742370555133717e-09, + "worst_max_relative": 0.002241454623967595, + "worst_tolerance_ratio": 0.0010381545420209263 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5762786865234375e-07, + 0.00010132789611816406 + ], + "worst_mean_abs": 0.00010132789611816406, + "worst_max_relative": 2.727328283617756e-09, + "worst_tolerance_ratio": 2.727320942796688e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.8528062333594875e-06, + 9.191420122678373e-06 + ], + "worst_mean_abs": 1.5732223744548312e-06, + "worst_max_relative": 0.18329228341065706, + "worst_tolerance_ratio": 0.7799507458293996 + }, + "virial": { + "comparisons": 81, + "failures": 22, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.476562237698545e-05, + 0.0003680483274592916 + ], + "worst_mean_abs": 0.00015585519983603766, + "worst_max_relative": 0.002624879950042877, + "worst_tolerance_ratio": 8.723608658126022 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.8939265835423054e-09, + 1.5838919790317485e-08 + ], + "worst_mean_abs": 7.895335861396732e-09, + "worst_max_relative": 0.002555107312160029, + "worst_tolerance_ratio": 0.00130921213401913 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.940696716308594e-07, + 6.74128532409668e-05 + ], + "worst_mean_abs": 6.74128532409668e-05, + "worst_max_relative": 1.8145662145648e-09, + "worst_tolerance_ratio": 1.8145613302711886e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.750748702488707e-06, + 9.570433796790567e-06 + ], + "worst_mean_abs": 1.5654228514700462e-06, + "worst_max_relative": 0.1940384920707749, + "worst_tolerance_ratio": 0.6900402518680474 + }, + "virial": { + "comparisons": 27, + "failures": 8, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.40954579843789e-05, + 0.00031341504619852856 + ], + "worst_mean_abs": 0.00011494670785019669, + "worst_max_relative": 0.0023209112428726544, + "worst_tolerance_ratio": 7.697119905423461 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5043528513449364e-09, + 1.3418043221934562e-08 + ], + "worst_mean_abs": 5.061515259439919e-09, + "worst_max_relative": 0.002300637106666749, + "worst_tolerance_ratio": 0.001339775244846595 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.980232238769531e-07, + 8.285045623779297e-05 + ], + "worst_mean_abs": 8.285045623779297e-05, + "worst_max_relative": 2.229991942162116e-09, + "worst_tolerance_ratio": 2.2299859399614004e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.7165563111259985e-06, + 1.0402043724155874e-05 + ], + "worst_mean_abs": 1.5775589820036128e-06, + "worst_max_relative": 0.31907697952552433, + "worst_tolerance_ratio": 0.775910261198558 + }, + "virial": { + "comparisons": 81, + "failures": 23, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.1655765042160056e-05, + 0.00032096389321623064 + ], + "worst_mean_abs": 0.00015008436423366887, + "worst_max_relative": 0.0025925645377863913, + "worst_tolerance_ratio": 8.598036728535737 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.3623024097686454e-09, + 1.3812646276756269e-08 + ], + "worst_mean_abs": 6.986395788021346e-09, + "worst_max_relative": 0.0025183162807413994, + "worst_tolerance_ratio": 0.0011402141223968124 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0728836059570312e-06, + 0.00016301870346069336 + ], + "worst_mean_abs": 0.00016301870346069336, + "worst_max_relative": 4.387789895861748e-09, + "worst_tolerance_ratio": 4.387778085776192e-05 + }, + "forces": { + "comparisons": 243, + "failures": 2, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.423113859208243e-06, + 1.3698024262875919e-05 + ], + "worst_mean_abs": 2.096169248551909e-06, + "worst_max_relative": 1.0291521497278877, + "worst_tolerance_ratio": 1.1239877746851845 + }, + "virial": { + "comparisons": 243, + "failures": 70, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0008077665756331953, + 0.001487490278407222 + ], + "worst_mean_abs": 0.0003777903051544524, + "worst_max_relative": 0.004940751438751109, + "worst_tolerance_ratio": 16.366261048280453 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.4762146834677043e-08, + 6.401398254182733e-08 + ], + "worst_mean_abs": 2.2350332404915513e-08, + "worst_max_relative": 0.004732033259315227, + "worst_tolerance_ratio": 0.005286478508103251 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.6093254089355469e-06, + 0.00014352798461914062 + ], + "worst_mean_abs": 0.00014352798461914062, + "worst_max_relative": 3.863373507672836e-09, + "worst_tolerance_ratio": 3.8633631085755974e-05 + }, + "forces": { + "comparisons": 243, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.17761948571183e-06, + 1.4198029854473049e-05 + ], + "worst_mean_abs": 2.0938754517473338e-06, + "worst_max_relative": 1.0733294214283975, + "worst_tolerance_ratio": 1.029790420180238 + }, + "virial": { + "comparisons": 243, + "failures": 78, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0007983658128409843, + 0.0014929920704389588 + ], + "worst_mean_abs": 0.00041110880985206766, + "worst_max_relative": 0.0043664187794303444, + "worst_tolerance_ratio": 14.463781567674816 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.4357586029681864e-08, + 6.425075156288318e-08 + ], + "worst_mean_abs": 2.3453786021136437e-08, + "worst_max_relative": 0.004132374567092805, + "worst_tolerance_ratio": 0.005303810124016367 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 0.00012302398681640625 + ], + "worst_mean_abs": 0.00012302398681640625, + "worst_max_relative": 3.3112973984629697e-09, + "worst_tolerance_ratio": 3.311288485842567e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.8387619158727375e-06, + 9.65639859451528e-06 + ], + "worst_mean_abs": 1.5684248104771456e-06, + "worst_max_relative": 0.23001588493410238, + "worst_tolerance_ratio": 0.7937229548451024 + }, + "virial": { + "comparisons": 243, + "failures": 77, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.1898494316683355e-05, + 0.00035797328678199847 + ], + "worst_mean_abs": 0.0001650340310146683, + "worst_max_relative": 0.0031558916605099246, + "worst_tolerance_ratio": 10.488389693129538 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.8030971507543292e-09, + 1.5405341509400206e-08 + ], + "worst_mean_abs": 7.644362534762456e-09, + "worst_max_relative": 0.0031073255040813606, + "worst_tolerance_ratio": 0.0013527499848575806 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 5.1856040954589844e-05 + ], + "worst_mean_abs": 5.1856040954589844e-05, + "worst_max_relative": 1.1146273195787414e-08, + "worst_tolerance_ratio": 0.00011146033615724139 + }, + "forces": { + "comparisons": 27, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.766965064133103e-06, + 1.7291203498359664e-05 + ], + "worst_mean_abs": 2.4852107935273687e-06, + "worst_max_relative": 0.010189450127120941, + "worst_tolerance_ratio": 1.1316950726095287 + }, + "virial": { + "comparisons": 27, + "failures": 19, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.055394600510631e-05, + 0.00017451233514942377 + ], + "worst_mean_abs": 7.271361934029713e-05, + "worst_max_relative": 0.000973825857175036, + "worst_tolerance_ratio": 5.19613769295286 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.364606633805698e-08, + 6.008095508228768e-08 + ], + "worst_mean_abs": 3.016862249368783e-08, + "worst_max_relative": 0.0009738258571749244, + "worst_tolerance_ratio": 0.005997799269904227 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.940696716308594e-07, + 5.030632019042969e-05 + ], + "worst_mean_abs": 5.030632019042969e-05, + "worst_max_relative": 1.0813166297665457e-08, + "worst_tolerance_ratio": 0.00010812933877461117 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.257411050038854e-06, + 1.4883388791631091e-05 + ], + "worst_mean_abs": 2.4939856850593307e-06, + "worst_max_relative": 0.010467927873105857, + "worst_tolerance_ratio": 0.92627465387243 + }, + "virial": { + "comparisons": 81, + "failures": 55, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.3969889001617126e-05, + 0.000177425786994867 + ], + "worst_mean_abs": 8.643101677442545e-05, + "worst_max_relative": 0.0015335712596714877, + "worst_tolerance_ratio": 8.176976981513697 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.06715270511374e-08, + 6.10839957516365e-08 + ], + "worst_mean_abs": 3.4568533389661146e-08, + "worst_max_relative": 0.0015335712596714383, + "worst_tolerance_ratio": 0.006079983328441283 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.556510925292969e-07, + 5.233287811279297e-05 + ], + "worst_mean_abs": 5.233287811279297e-05, + "worst_max_relative": 1.1248767940533848e-08, + "worst_tolerance_ratio": 0.00011248526157423533 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.955419840361856e-06, + 1.2407035157480095e-05 + ], + "worst_mean_abs": 2.3820959727540053e-06, + "worst_max_relative": 0.014175671068021032, + "worst_tolerance_ratio": 0.9985887251538444 + }, + "virial": { + "comparisons": 27, + "failures": 16, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.078018649089632e-05, + 0.00014113911835411663 + ], + "worst_mean_abs": 5.867724483298186e-05, + "worst_max_relative": 0.0008068531987614919, + "worst_tolerance_ratio": 4.305249171469632 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.4039767164337243e-08, + 4.859125300759638e-08 + ], + "worst_mean_abs": 2.300090254293145e-08, + "worst_max_relative": 0.0008068531987614425, + "worst_tolerance_ratio": 0.004836521115564516 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5762786865234375e-07, + 4.851818084716797e-05 + ], + "worst_mean_abs": 4.851818084716797e-05, + "worst_max_relative": 1.0428812073570891e-08, + "worst_tolerance_ratio": 0.00010428587914747008 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.637859011173532e-06, + 1.3563694178486685e-05 + ], + "worst_mean_abs": 2.4346400257469346e-06, + "worst_max_relative": 0.015886447905594896, + "worst_tolerance_ratio": 0.9570533597256069 + }, + "virial": { + "comparisons": 81, + "failures": 46, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.392236031578676e-05, + 0.00019932577964731912 + ], + "worst_mean_abs": 7.058121769615905e-05, + "worst_max_relative": 0.0010319400928531612, + "worst_tolerance_ratio": 5.504206441162648 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.192721904639523e-09, + 6.862370618949216e-08 + ], + "worst_mean_abs": 2.8727820049359945e-08, + "worst_max_relative": 0.0010319400928531695, + "worst_tolerance_ratio": 0.00683044422496838 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-07, + 4.869699478149414e-05 + ], + "worst_mean_abs": 4.869699478149414e-05, + "worst_max_relative": 1.046940065239034e-08, + "worst_tolerance_ratio": 0.00010469175574859201 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.85038370768143e-06, + 1.1738225811797065e-05 + ], + "worst_mean_abs": 2.3721802568320454e-06, + "worst_max_relative": 0.01568527460065144, + "worst_tolerance_ratio": 0.8663496194533588 + }, + "virial": { + "comparisons": 27, + "failures": 17, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.7086178096880076e-05, + 0.0001370057513943035 + ], + "worst_mean_abs": 5.41683037192437e-05, + "worst_max_relative": 0.0007383546059137198, + "worst_tolerance_ratio": 3.9392610735795146 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.07666457614217e-09, + 4.716822102281311e-08 + ], + "worst_mean_abs": 2.0727788063474185e-08, + "worst_max_relative": 0.0007383546059137015, + "worst_tolerance_ratio": 0.004708738885116302 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.980232238769531e-07, + 6.03795051574707e-05 + ], + "worst_mean_abs": 6.03795051574707e-05, + "worst_max_relative": 1.2981031633325677e-08, + "worst_tolerance_ratio": 0.00012980752559227344 + }, + "forces": { + "comparisons": 81, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.53285565494133e-06, + 1.2596385623453443e-05 + ], + "worst_mean_abs": 2.4180107231326488e-06, + "worst_max_relative": 0.014537569015271005, + "worst_tolerance_ratio": 1.0298114212605975 + }, + "virial": { + "comparisons": 81, + "failures": 58, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.3916469979567978e-05, + 0.00021912684620095657 + ], + "worst_mean_abs": 9.241606229517776e-05, + "worst_max_relative": 0.001069438922939849, + "worst_tolerance_ratio": 5.703692380445624 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.233941499544845e-09, + 7.544080017407367e-08 + ], + "worst_mean_abs": 3.3064764676507106e-08, + "worst_max_relative": 0.0010694389229398242, + "worst_tolerance_ratio": 0.007531148182654655 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.9802322387695312e-06, + 0.00011521577835083008 + ], + "worst_mean_abs": 0.00011521577835083008, + "worst_max_relative": 2.476522538788169e-08, + "worst_tolerance_ratio": 0.0002476469307953421 + }, + "forces": { + "comparisons": 243, + "failures": 2, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.866833237419769e-06, + 1.3863820811366168e-05 + ], + "worst_mean_abs": 2.5348655705687787e-06, + "worst_max_relative": 0.013337817701576112, + "worst_tolerance_ratio": 1.0895565306476451 + }, + "virial": { + "comparisons": 243, + "failures": 166, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1533558528009635e-05, + 0.00026236270172219633 + ], + "worst_mean_abs": 8.760870563310578e-05, + "worst_max_relative": 0.0017800165310995787, + "worst_tolerance_ratio": 9.491019155270966 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.970763506574212e-09, + 9.032600293808549e-08 + ], + "worst_mean_abs": 3.721045395060893e-08, + "worst_max_relative": 0.001780016531099546, + "worst_tolerance_ratio": 0.008990575212540899 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.172325134277344e-07, + 0.00011283159255981445 + ], + "worst_mean_abs": 0.00011283159255981445, + "worst_max_relative": 2.425275305704089e-08, + "worst_tolerance_ratio": 0.0002425223176386873 + }, + "forces": { + "comparisons": 243, + "failures": 4, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.494724019314503e-06, + 1.3567397007641091e-05 + ], + "worst_mean_abs": 2.5153659548103903e-06, + "worst_max_relative": 0.0181708317516515, + "worst_tolerance_ratio": 1.1458655299522276 + }, + "virial": { + "comparisons": 243, + "failures": 165, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.6507507705053612e-05, + 0.0002646941713170259 + ], + "worst_mean_abs": 8.891479116783045e-05, + "worst_max_relative": 0.0016192342608923164, + "worst_tolerance_ratio": 8.633730708953884 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.12598171586964e-09, + 9.112867926396365e-08 + ], + "worst_mean_abs": 4.0642593242164365e-08, + "worst_max_relative": 0.0016192342608922212, + "worst_tolerance_ratio": 0.009097245497940457 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.172325134277344e-07, + 5.412101745605469e-05 + ], + "worst_mean_abs": 5.412101745605469e-05, + "worst_max_relative": 1.163551516308483e-08, + "worst_tolerance_ratio": 0.00011635265015713475 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.594751452761784e-06, + 1.2694701985616064e-05 + ], + "worst_mean_abs": 2.406626944534996e-06, + "worst_max_relative": 0.013580493456645044, + "worst_tolerance_ratio": 0.9010885235448788 + }, + "virial": { + "comparisons": 243, + "failures": 149, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.3583172267138686e-05, + 0.00020684066423237724 + ], + "worst_mean_abs": 9.152253924828003e-05, + "worst_max_relative": 0.00122862157084563, + "worst_tolerance_ratio": 6.556428359117095 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.11919405277093e-09, + 7.121092412346996e-08 + ], + "worst_mean_abs": 3.897775028357132e-08, + "worst_max_relative": 0.0012286215708456672, + "worst_tolerance_ratio": 0.0070631307291112826 + } + } + }, + { + "model": "Nano", + "n": 1000, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 6.705522537231445e-05 + ], + "worst_mean_abs": 6.705522537231445e-05, + "worst_max_relative": 7.380278326890236e-09, + "worst_tolerance_ratio": 7.380197098457416e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.814197049706763e-06, + 1.3283340038583447e-05 + ], + "worst_mean_abs": 2.4807729523439273e-06, + "worst_max_relative": 0.07064961006734138, + "worst_tolerance_ratio": 0.9788772275704567 + }, + "virial": { + "comparisons": 27, + "failures": 16, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.536978601194953e-05, + 0.0002621348498155207 + ], + "worst_mean_abs": 0.00012002781364079457, + "worst_max_relative": 0.0009239748258999796, + "worst_tolerance_ratio": 5.8244675613468155 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.760082845759998e-09, + 4.620674984019517e-08 + ], + "worst_mean_abs": 2.6329522555160016e-08, + "worst_max_relative": 0.0009239748259000392, + "worst_tolerance_ratio": 0.004602318845526104 + } + } + }, + { + "model": "Nano", + "n": 1000, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.940696716308594e-07, + 7.909536361694336e-05 + ], + "worst_mean_abs": 7.909536361694336e-05, + "worst_max_relative": 8.705448302029638e-09, + "worst_tolerance_ratio": 8.705352488580437e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.71709807728871e-06, + 1.3557718373746752e-05 + ], + "worst_mean_abs": 2.4842726585575423e-06, + "worst_max_relative": 0.0759977817387832, + "worst_tolerance_ratio": 0.9464874742734661 + }, + "virial": { + "comparisons": 81, + "failures": 37, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.9306211052858586e-05, + 0.0002863409727107413 + ], + "worst_mean_abs": 0.0001303773573005065, + "worst_max_relative": 0.0012003422249451164, + "worst_tolerance_ratio": 7.569965617367002 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.794077330569102e-09, + 5.047358527248032e-08 + ], + "worst_mean_abs": 2.8648492434288087e-08, + "worst_max_relative": 0.0012003422249451568, + "worst_tolerance_ratio": 0.005033468296844829 + } + } + }, + { + "model": "Nano", + "n": 1000, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0728836059570312e-06, + 5.555152893066406e-05 + ], + "worst_mean_abs": 5.555152893066406e-05, + "worst_max_relative": 6.114054849798781e-09, + "worst_tolerance_ratio": 6.113987558662058e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.786312321262812e-06, + 1.2459468539560703e-05 + ], + "worst_mean_abs": 2.398441079157478e-06, + "worst_max_relative": 0.054261871315451383, + "worst_tolerance_ratio": 0.981170727447744 + }, + "virial": { + "comparisons": 27, + "failures": 16, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.3762921964507484e-05, + 0.00024579854120920785 + ], + "worst_mean_abs": 8.738184682748834e-05, + "worst_max_relative": 0.0010202174990259238, + "worst_tolerance_ratio": 6.432208406329726 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.638471180983035e-09, + 4.33271337738181e-08 + ], + "worst_mean_abs": 1.942982704128361e-08, + "worst_max_relative": 0.0010202174990259479, + "worst_tolerance_ratio": 0.00432644372151242 + } + } + }, + { + "model": "Nano", + "n": 1000, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 7.152557373046875e-05 + ], + "worst_mean_abs": 7.152557373046875e-05, + "worst_max_relative": 7.873296361694648e-09, + "worst_tolerance_ratio": 7.873209696030856e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.121134496581362e-06, + 1.3018717602619745e-05 + ], + "worst_mean_abs": 2.4319626653784706e-06, + "worst_max_relative": 0.07096529492391204, + "worst_tolerance_ratio": 0.9636731237738646 + }, + "virial": { + "comparisons": 81, + "failures": 40, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.2807989383119036e-05, + 0.00024990545577008305 + ], + "worst_mean_abs": 0.00010055815697852645, + "worst_max_relative": 0.0014632222010244572, + "worst_tolerance_ratio": 9.228714532236777 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.308512609806571e-09, + 4.405106336146725e-08 + ], + "worst_mean_abs": 2.1024017026820106e-08, + "worst_max_relative": 0.001463222201024455, + "worst_tolerance_ratio": 0.004403780555167392 + } + } + }, + { + "model": "Nano", + "n": 1000, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-06, + 5.5849552154541016e-05 + ], + "worst_mean_abs": 5.5849552154541016e-05, + "worst_max_relative": 6.146855565015758e-09, + "worst_tolerance_ratio": 6.146787912875264e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.347885804089628e-06, + 1.2423431734021051e-05 + ], + "worst_mean_abs": 2.370844754204071e-06, + "worst_max_relative": 0.07831361613437446, + "worst_tolerance_ratio": 0.8888699896371453 + }, + "virial": { + "comparisons": 27, + "failures": 18, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.847402131780143e-05, + 0.00021978145290779683 + ], + "worst_mean_abs": 9.373285963277923e-05, + "worst_max_relative": 0.0007817389212867293, + "worst_tolerance_ratio": 4.930178883993715 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.544560093270894e-09, + 3.874107781233168e-08 + ], + "worst_mean_abs": 1.9247010281329946e-08, + "worst_max_relative": 0.0007817389212866785, + "worst_tolerance_ratio": 0.003869580060182906 + } + } + }, + { + "model": "Nano", + "n": 1000, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 6.943941116333008e-05 + ], + "worst_mean_abs": 6.943941116333008e-05, + "worst_max_relative": 7.642568505042894e-09, + "worst_tolerance_ratio": 7.64248439112325e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.23915536077402e-06, + 1.4299878046131198e-05 + ], + "worst_mean_abs": 2.407887343467058e-06, + "worst_max_relative": 0.05869106076708458, + "worst_tolerance_ratio": 0.9989764370069022 + }, + "virial": { + "comparisons": 81, + "failures": 48, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.857040161718949e-05, + 0.00023186765260030384 + ], + "worst_mean_abs": 8.918196586041007e-05, + "worst_max_relative": 0.0011053859730406233, + "worst_tolerance_ratio": 6.968473052985282 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.036130836032042e-09, + 4.0871523291447984e-08 + ], + "worst_mean_abs": 2.0005938244898643e-08, + "worst_max_relative": 0.001105385973040554, + "worst_tolerance_ratio": 0.004080365509216011 + } + } + }, + { + "model": "Nano", + "n": 1000, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.049041748046875e-05, + 0.0001621246337890625 + ], + "worst_mean_abs": 0.0001621246337890625, + "worst_max_relative": 1.7846138241864485e-08, + "worst_tolerance_ratio": 0.0001784594179969714 + }, + "forces": { + "comparisons": 243, + "failures": 2, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.188628087297701e-06, + 1.4893052075137803e-05 + ], + "worst_mean_abs": 2.4770690623598473e-06, + "worst_max_relative": 0.09800483993834193, + "worst_tolerance_ratio": 1.0179765327467225 + }, + "virial": { + "comparisons": 243, + "failures": 117, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.177535218368277e-05, + 0.000263732172986586 + ], + "worst_mean_abs": 0.0001287893058575672, + "worst_max_relative": 0.0014646597448872386, + "worst_tolerance_ratio": 9.232787445477102 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.601070405007388e-09, + 4.648831145715295e-08 + ], + "worst_mean_abs": 2.680569938080476e-08, + "worst_max_relative": 0.0014646597448872685, + "worst_tolerance_ratio": 0.004630363153779405 + } + } + }, + { + "model": "Nano", + "n": 1000, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.2636184692382812e-05, + 0.00016629695892333984 + ], + "worst_mean_abs": 0.00016629695892333984, + "worst_max_relative": 1.8305413858383056e-08, + "worst_tolerance_ratio": 0.0001830521236071876 + }, + "forces": { + "comparisons": 243, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.16956886065634e-06, + 1.3855962025743906e-05 + ], + "worst_mean_abs": 2.4856888680901968e-06, + "worst_max_relative": 0.07750219826656735, + "worst_tolerance_ratio": 1.0193027676902944 + }, + "virial": { + "comparisons": 243, + "failures": 130, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.3949001278712458e-05, + 0.00030735774929868676 + ], + "worst_mean_abs": 9.88773719763605e-05, + "worst_max_relative": 0.0012774312466267725, + "worst_tolerance_ratio": 8.052553651103347 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.458803219257161e-09, + 5.417823171275087e-08 + ], + "worst_mean_abs": 2.1585082166671613e-08, + "worst_max_relative": 0.0012774312466267916, + "worst_tolerance_ratio": 0.00541148836119021 + } + } + }, + { + "model": "Nano", + "n": 1000, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 7.56978988647461e-05 + ], + "worst_mean_abs": 7.56978988647461e-05, + "worst_max_relative": 8.332571982793504e-09, + "worst_tolerance_ratio": 8.332480261632657e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.040669119997347e-06, + 1.3581996914702188e-05 + ], + "worst_mean_abs": 2.3956786149273528e-06, + "worst_max_relative": 0.10272575989262127, + "worst_tolerance_ratio": 0.9698493269688897 + }, + "virial": { + "comparisons": 243, + "failures": 127, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.917792498153716e-05, + 0.00026902910003578917 + ], + "worst_mean_abs": 0.00010588919322393784, + "worst_max_relative": 0.0012909136884334223, + "worst_tolerance_ratio": 8.141944475670089 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.905928685786884e-09, + 4.7422005635034846e-08 + ], + "worst_mean_abs": 2.1961323641635452e-08, + "worst_max_relative": 0.001290913688433364, + "worst_tolerance_ratio": 0.004736656047334457 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.7550926208496094e-06, + 0.00018018484115600586 + ], + "worst_mean_abs": 0.00018018484115600586, + "worst_max_relative": 4.84178611221321e-09, + "worst_tolerance_ratio": 4.841773101779251e-05 + }, + "forces": { + "comparisons": 27, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1379689637491808e-05, + 1.4982336132618457e-05 + ], + "worst_mean_abs": 2.4547730052219226e-06, + "worst_max_relative": 0.049138968291372306, + "worst_tolerance_ratio": 1.0139251240867395 + }, + "virial": { + "comparisons": 27, + "failures": 12, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.570922696866546e-05, + 0.0006978675185784766 + ], + "worst_mean_abs": 0.0002187298961636349, + "worst_max_relative": 0.00027057793322872046, + "worst_tolerance_ratio": 2.338400680089673 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.118836185367045e-09, + 3.003265285029741e-08 + ], + "worst_mean_abs": 1.3221937558734407e-08, + "worst_max_relative": 0.00026816880233796657, + "worst_tolerance_ratio": 0.002997649770709088 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 0.00020241737365722656 + ], + "worst_mean_abs": 0.00020241737365722656, + "worst_max_relative": 5.439201305868633e-09, + "worst_tolerance_ratio": 5.439186690111687e-05 + }, + "forces": { + "comparisons": 81, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0645488186522556e-05, + 1.4430636024798105e-05 + ], + "worst_mean_abs": 2.46566899329842e-06, + "worst_max_relative": 0.07148408070325418, + "worst_tolerance_ratio": 1.0410711169993532 + }, + "virial": { + "comparisons": 81, + "failures": 31, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.50547983791239e-05, + 0.0006594723001405178 + ], + "worst_mean_abs": 0.00023053475940364935, + "worst_max_relative": 0.00032581061955011103, + "worst_tolerance_ratio": 2.815859630238766 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.964885182298301e-09, + 2.8380318795818353e-08 + ], + "worst_mean_abs": 1.3796734660870624e-08, + "worst_max_relative": 0.00032551804695630913, + "worst_tolerance_ratio": 0.0028348150680754898 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-06, + 0.00019854307174682617 + ], + "worst_mean_abs": 0.00019854307174682617, + "worst_max_relative": 5.335067179365246e-09, + "worst_tolerance_ratio": 5.335052843500954e-05 + }, + "forces": { + "comparisons": 27, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0975230118503987e-05, + 1.587357682808488e-05 + ], + "worst_mean_abs": 2.4553912382552072e-06, + "worst_max_relative": 0.06999299304932845, + "worst_tolerance_ratio": 1.1102064938466425 + }, + "virial": { + "comparisons": 27, + "failures": 3, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.00011327967093732738, + 0.00039563343946547036 + ], + "worst_mean_abs": 0.0001354829945695456, + "worst_max_relative": 0.00014950168507444765, + "worst_tolerance_ratio": 1.3307480327673997 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.860255624461571e-09, + 1.7026042088350013e-08 + ], + "worst_mean_abs": 7.762377786989415e-09, + "worst_max_relative": 0.00014464547130629135, + "worst_tolerance_ratio": 0.0016974962104918695 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.9073486328125e-06, + 0.00023704767227172852 + ], + "worst_mean_abs": 0.00023704767227172852, + "worst_max_relative": 6.3697275014967495e-09, + "worst_tolerance_ratio": 6.369710385395575e-05 + }, + "forces": { + "comparisons": 81, + "failures": 6, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0602330129394488e-05, + 1.4191975860722295e-05 + ], + "worst_mean_abs": 2.4469045899728142e-06, + "worst_max_relative": 0.055807289324445675, + "worst_tolerance_ratio": 1.0603177923768075 + }, + "virial": { + "comparisons": 81, + "failures": 21, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.913783580169252e-05, + 0.0004544404157869053 + ], + "worst_mean_abs": 0.00016479349701025036, + "worst_max_relative": 0.00029586566081259353, + "worst_tolerance_ratio": 2.5569201058159927 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.3792624247740216e-09, + 1.9556793925989188e-08 + ], + "worst_mean_abs": 9.251974924723359e-09, + "worst_max_relative": 0.0002902433440044892, + "worst_tolerance_ratio": 0.0019498117609229012 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.2782554626464844e-06, + 0.00010496377944946289 + ], + "worst_mean_abs": 0.00010496377944946289, + "worst_max_relative": 2.820490341130655e-09, + "worst_tolerance_ratio": 2.820482762188252e-05 + }, + "forces": { + "comparisons": 27, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1012454613323897e-05, + 1.3474542688740598e-05 + ], + "worst_mean_abs": 2.449811873339659e-06, + "worst_max_relative": 0.05712531834738512, + "worst_tolerance_ratio": 1.082895966258643 + }, + "virial": { + "comparisons": 27, + "failures": 2, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.502211816084014e-05, + 0.0007513522047641885 + ], + "worst_mean_abs": 0.00018108663668983362, + "worst_max_relative": 0.0001329178480579422, + "worst_tolerance_ratio": 1.2806151022648269 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.450145628133662e-09, + 3.233436051010676e-08 + ], + "worst_mean_abs": 1.1021736675087993e-08, + "worst_max_relative": 0.00013291784805790884, + "worst_tolerance_ratio": 0.0032224318346624507 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 0.00010454654693603516 + ], + "worst_mean_abs": 0.00010454654693603516, + "worst_max_relative": 2.809278852015124e-09, + "worst_tolerance_ratio": 2.8092713031991247e-05 + }, + "forces": { + "comparisons": 81, + "failures": 3, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0947816213580097e-05, + 1.4619595612330727e-05 + ], + "worst_mean_abs": 2.4549537244605734e-06, + "worst_max_relative": 0.06653307314399023, + "worst_tolerance_ratio": 1.0633569021722804 + }, + "virial": { + "comparisons": 81, + "failures": 31, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.139299662079935e-05, + 0.0006386222641046047 + ], + "worst_mean_abs": 0.0002539937718310823, + "worst_max_relative": 0.00024616351240990165, + "worst_tolerance_ratio": 2.127400706559791 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5027387675740877e-09, + 2.748303976003773e-08 + ], + "worst_mean_abs": 1.3628428496924967e-08, + "worst_max_relative": 0.0002280161720331115, + "worst_tolerance_ratio": 0.002742409539054613 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.381771087646484e-05, + 0.0004324913024902344 + ], + "worst_mean_abs": 0.0004324913024902344, + "worst_max_relative": 1.1621567925613308e-08, + "worst_tolerance_ratio": 0.00011621536697129094 + }, + "forces": { + "comparisons": 243, + "failures": 17, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0699448335649286e-05, + 1.5380760668648463e-05 + ], + "worst_mean_abs": 2.495833944008858e-06, + "worst_max_relative": 0.1218041691795592, + "worst_tolerance_ratio": 1.1737606695090133 + }, + "virial": { + "comparisons": 243, + "failures": 117, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.534001994853213e-05, + 0.0010465449554954986 + ], + "worst_mean_abs": 0.00033525630379976294, + "worst_max_relative": 0.000392902404057476, + "worst_tolerance_ratio": 3.395708892905022 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.6725984877084223e-09, + 4.503794846999953e-08 + ], + "worst_mean_abs": 2.0184461408731757e-08, + "worst_max_relative": 0.00039102251639289447, + "worst_tolerance_ratio": 0.00449537229050707 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.00014007091522216797, + 0.00042897462844848633 + ], + "worst_mean_abs": 0.00042897462844848633, + "worst_max_relative": 1.152764526163696e-08, + "worst_tolerance_ratio": 0.00011527614283989478 + }, + "forces": { + "comparisons": 243, + "failures": 14, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0595065332630327e-05, + 1.6019595547867027e-05 + ], + "worst_mean_abs": 2.4933623047420675e-06, + "worst_max_relative": 0.0874482499180023, + "worst_tolerance_ratio": 1.2258886678228993 + }, + "virial": { + "comparisons": 243, + "failures": 123, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.419615040551221e-05, + 0.0010597201746023188 + ], + "worst_mean_abs": 0.00034545831419389533, + "worst_max_relative": 0.00035317381025751937, + "worst_tolerance_ratio": 3.0523542542179176 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.616717896308061e-09, + 4.560494259298444e-08 + ], + "worst_mean_abs": 2.1400371781246815e-08, + "worst_max_relative": 0.00035240315221009375, + "worst_tolerance_ratio": 0.004544973120706526 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 0.00019782781600952148 + ], + "worst_mean_abs": 0.00019782781600952148, + "worst_max_relative": 5.315847483732588e-09, + "worst_tolerance_ratio": 5.3158331995135595e-05 + }, + "forces": { + "comparisons": 243, + "failures": 12, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0560452640362428e-05, + 1.6222246838282217e-05 + ], + "worst_mean_abs": 2.4624376478042813e-06, + "worst_max_relative": 0.09512105244866108, + "worst_tolerance_ratio": 1.165690936345912 + }, + "virial": { + "comparisons": 243, + "failures": 61, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.472756020199256e-05, + 0.0006499977757217223 + ], + "worst_mean_abs": 0.0002674953122048487, + "worst_max_relative": 0.000282155212670118, + "worst_tolerance_ratio": 2.4384372008718627 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.0422888713994324e-09, + 2.797258366669768e-08 + ], + "worst_mean_abs": 1.3092076453920842e-08, + "worst_max_relative": 0.00026665945244824915, + "worst_tolerance_ratio": 0.002792028462863683 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 1.9431114196777344e-05 + ], + "worst_mean_abs": 1.9431114196777344e-05, + "worst_max_relative": 4.188324242995521e-09, + "worst_tolerance_ratio": 4.188233966742289e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.2609731945854037e-06, + 4.747404886984441e-06 + ], + "worst_mean_abs": 8.978503810614952e-07, + "worst_max_relative": 0.017306737612618715, + "worst_tolerance_ratio": 0.38762796723166587 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.3201160093956332e-05, + 7.499779544417606e-05 + ], + "worst_mean_abs": 2.69405048188102e-05, + "worst_max_relative": 8.964576004914634e-05, + "worst_tolerance_ratio": 0.6231889149211002 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.516617465449846e-09, + 2.5820175837687476e-08 + ], + "worst_mean_abs": 1.2324172681592611e-08, + "worst_max_relative": 8.520618752773425e-05, + "worst_tolerance_ratio": 0.0022025215971098228 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.76837158203125e-07, + 1.8835067749023438e-05 + ], + "worst_mean_abs": 1.8835067749023438e-05, + "worst_max_relative": 4.059848039222653e-09, + "worst_tolerance_ratio": 4.0597605321796415e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.107717333250548e-06, + 5.44138504210423e-06 + ], + "worst_mean_abs": 9.249311995593949e-07, + "worst_max_relative": 0.023970364032297572, + "worst_tolerance_ratio": 0.43357300038769725 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.732121944772132e-06, + 7.460864499364561e-05 + ], + "worst_mean_abs": 2.28438773992343e-05, + "worst_max_relative": 9.538617603537895e-05, + "worst_tolerance_ratio": 0.6850553841253211 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.688710901165882e-09, + 2.5686199459085124e-08 + ], + "worst_mean_abs": 1.0444381785731363e-08, + "worst_max_relative": 8.921009301339311e-05, + "worst_tolerance_ratio": 0.0021948404759923523 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 2.5212764739990234e-05 + ], + "worst_mean_abs": 2.5212764739990234e-05, + "worst_max_relative": 5.4353916727162585e-09, + "worst_tolerance_ratio": 5.435274498554467e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.1476767397009553e-06, + 4.934298132752701e-06 + ], + "worst_mean_abs": 8.77427157594419e-07, + "worst_max_relative": 0.010513017843535599, + "worst_tolerance_ratio": 0.405881842281788 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0980348301714571e-05, + 4.944424244968104e-05 + ], + "worst_mean_abs": 2.3102641591628743e-05, + "worst_max_relative": 8.879032695546355e-05, + "worst_tolerance_ratio": 0.6620543041148937 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5805127304895656e-09, + 1.7022620819873158e-08 + ], + "worst_mean_abs": 9.680753474747053e-09, + "worst_max_relative": 8.730743784710452e-05, + "worst_tolerance_ratio": 0.0014579698068592367 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-07, + 2.3543834686279297e-05 + ], + "worst_mean_abs": 2.3543834686279297e-05, + "worst_max_relative": 5.0756021805971586e-09, + "worst_tolerance_ratio": 5.0754927626434686e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.1349115907630676e-06, + 5.107811531956941e-06 + ], + "worst_mean_abs": 8.845002525243235e-07, + "worst_max_relative": 0.014682839719857066, + "worst_tolerance_ratio": 0.43502947533789327 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.663102446211269e-06, + 6.807341956971413e-05 + ], + "worst_mean_abs": 2.427963185406649e-05, + "worst_max_relative": 9.570601298052722e-05, + "worst_tolerance_ratio": 0.7136376509844654 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.3268045124268397e-09, + 2.3436257729630983e-08 + ], + "worst_mean_abs": 1.0438885066395518e-08, + "worst_max_relative": 9.286597361369884e-05, + "worst_tolerance_ratio": 0.0020072914446565035 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 1.627206802368164e-05 + ], + "worst_mean_abs": 1.627206802368164e-05, + "worst_max_relative": 3.5081241159433527e-09, + "worst_tolerance_ratio": 3.5080484853014864e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.2630516564324807e-06, + 4.8237928353955795e-06 + ], + "worst_mean_abs": 8.784970780970185e-07, + "worst_max_relative": 0.007430362293793376, + "worst_tolerance_ratio": 0.3028129795031166 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.221441437441854e-06, + 4.652849903408196e-05 + ], + "worst_mean_abs": 2.140936652510966e-05, + "worst_max_relative": 0.00010212266523684922, + "worst_tolerance_ratio": 0.7407159626475908 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.5127417577051258e-09, + 1.6018791210159478e-08 + ], + "worst_mean_abs": 8.932223261531584e-09, + "worst_max_relative": 0.00010105843412369265, + "worst_tolerance_ratio": 0.0013687301823958726 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 1.7404556274414062e-05 + ], + "worst_mean_abs": 1.7404556274414062e-05, + "worst_max_relative": 3.75227928827542e-09, + "worst_tolerance_ratio": 3.752198393961901e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.247226459279773e-06, + 4.922026811016167e-06 + ], + "worst_mean_abs": 8.943560492395342e-07, + "worst_max_relative": 0.010693852842127965, + "worst_tolerance_ratio": 0.3912418460824434 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.2897677962087073e-05, + 6.690316941870833e-05 + ], + "worst_mean_abs": 2.3082899057700087e-05, + "worst_max_relative": 0.00012418672821572164, + "worst_tolerance_ratio": 0.8632753370872855 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.927862932747318e-09, + 2.303336502432196e-08 + ], + "worst_mean_abs": 1.0508478704322638e-08, + "worst_max_relative": 0.00011956456218811446, + "worst_tolerance_ratio": 0.0019727836741424472 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 3.11732292175293e-05 + ], + "worst_mean_abs": 3.11732292175293e-05, + "worst_max_relative": 6.7203542344629495e-09, + "worst_tolerance_ratio": 6.720209359554062e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.320936966450972e-06, + 6.98078465077856e-06 + ], + "worst_mean_abs": 1.301702057805836e-06, + "worst_max_relative": 0.023747693641991956, + "worst_tolerance_ratio": 0.5511649375814351 + }, + "virial": { + "comparisons": 243, + "failures": 5, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.577082898535537e-05, + 0.000177129442924695 + ], + "worst_mean_abs": 4.4845525424299896e-05, + "worst_max_relative": 0.00016002130098533964, + "worst_tolerance_ratio": 1.1932279911921873 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.608631515313431e-08, + 6.098197067455624e-08 + ], + "worst_mean_abs": 1.9536046954743435e-08, + "worst_max_relative": 0.00015516985022330314, + "worst_tolerance_ratio": 0.00519714666448471 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 2.9265880584716797e-05 + ], + "worst_mean_abs": 2.9265880584716797e-05, + "worst_max_relative": 6.30916621246904e-09, + "worst_tolerance_ratio": 6.309030201799321e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.555514710347097e-06, + 7.4104944003394735e-06 + ], + "worst_mean_abs": 1.3147059162983785e-06, + "worst_max_relative": 0.019166484553874742, + "worst_tolerance_ratio": 0.49439101729730117 + }, + "virial": { + "comparisons": 243, + "failures": 2, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.720420472878686e-05, + 0.00015936589559828462 + ], + "worst_mean_abs": 4.3519479409454614e-05, + "worst_max_relative": 0.00013806815235107146, + "worst_tolerance_ratio": 1.0295242277198577 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.6579796509607068e-08, + 5.4866352038052124e-08 + ], + "worst_mean_abs": 1.850526839180634e-08, + "worst_max_relative": 0.00013791565426637806, + "worst_tolerance_ratio": 0.004675947256751742 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 2.3305416107177734e-05 + ], + "worst_mean_abs": 2.3305416107177734e-05, + "worst_max_relative": 5.024203650193988e-09, + "worst_tolerance_ratio": 5.024095340271387e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.149001635449622e-06, + 5.300833180399422e-06 + ], + "worst_mean_abs": 9.081053590347504e-07, + "worst_max_relative": 0.01951982001831704, + "worst_tolerance_ratio": 0.4047742918420026 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.727628684506271e-06, + 7.27847996699893e-05 + ], + "worst_mean_abs": 2.627854990433498e-05, + "worst_max_relative": 0.00012862412483404494, + "worst_tolerance_ratio": 0.9590701868020425 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.6604612887726198e-09, + 2.5058287573404003e-08 + ], + "worst_mean_abs": 1.1340602186929626e-08, + "worst_max_relative": 0.0001263035009572724, + "worst_tolerance_ratio": 0.002146216637660616 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "ECS_RUNTIME", + "right": "ECS_RUNTIME", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.172325134277344e-07, + 1.823902130126953e-05 + ], + "worst_mean_abs": 1.823902130126953e-05, + "worst_max_relative": 3.931371831813152e-09, + "worst_tolerance_ratio": 3.931287093980519e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.4027584945306444e-06, + 4.478831954202178e-06 + ], + "worst_mean_abs": 8.879678381754321e-07, + "worst_max_relative": 0.01887905391732344, + "worst_tolerance_ratio": 0.384610504452657 + }, + "virial": { + "comparisons": 27, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.187376995659406e-05, + 4.710241667282844e-05 + ], + "worst_mean_abs": 2.0205595327782433e-05, + "worst_max_relative": 0.00015129978263289597, + "worst_tolerance_ratio": 1.0518007657527986 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.9627549210102695e-09, + 1.6216379079836418e-08 + ], + "worst_mean_abs": 8.28830918661883e-09, + "worst_max_relative": 0.00013901597435079626, + "worst_tolerance_ratio": 0.0013856132739718786 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "ECS_RUNTIME", + "right": "ECS_RUNTIME", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 1.430511474609375e-05 + ], + "worst_mean_abs": 1.430511474609375e-05, + "worst_max_relative": 3.08342888769659e-09, + "worst_tolerance_ratio": 3.083362426651388e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.251296565309758e-06, + 5.501838188592956e-06 + ], + "worst_mean_abs": 8.94282464388377e-07, + "worst_max_relative": 0.018301404993686796, + "worst_tolerance_ratio": 0.3389598237117009 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.899578593788647e-06, + 5.424304983137063e-05 + ], + "worst_mean_abs": 2.218789910611739e-05, + "worst_max_relative": 0.00013062633192669992, + "worst_tolerance_ratio": 0.9080476063585313 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.3753809232085477e-09, + 1.8674750055375222e-08 + ], + "worst_mean_abs": 9.325875661738854e-09, + "worst_max_relative": 0.00012723511511573475, + "worst_tolerance_ratio": 0.001591806855818132 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "ECS_RUNTIME", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 2.300739288330078e-05 + ], + "worst_mean_abs": 2.300739288330078e-05, + "worst_max_relative": 4.959955548634185e-09, + "worst_tolerance_ratio": 4.959848623747794e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.041573313211643e-06, + 5.381715737939885e-06 + ], + "worst_mean_abs": 8.940980457543222e-07, + "worst_max_relative": 0.01730310324091974, + "worst_tolerance_ratio": 0.4056752851276045 + }, + "virial": { + "comparisons": 243, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.280695550728524e-06, + 6.28518736505157e-05 + ], + "worst_mean_abs": 2.4657616244853447e-05, + "worst_max_relative": 0.00015057011349743692, + "worst_tolerance_ratio": 1.0466802364928165 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.714803833125945e-09, + 2.1638588438427364e-08 + ], + "worst_mean_abs": 1.0687658860052346e-08, + "worst_max_relative": 0.00013747832988509967, + "worst_tolerance_ratio": 0.0018533229130682667 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "ECS_RUNTIME", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 2.372264862060547e-05 + ], + "worst_mean_abs": 2.372264862060547e-05, + "worst_max_relative": 5.113352931576556e-09, + "worst_tolerance_ratio": 5.113242717008802e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.382804867475443e-06, + 7.11331466263232e-06 + ], + "worst_mean_abs": 1.3166069551366621e-06, + "worst_max_relative": 0.02655375733126387, + "worst_tolerance_ratio": 0.46895896698125333 + }, + "virial": { + "comparisons": 243, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.607469999015848e-05, + 0.00016483452873217175 + ], + "worst_mean_abs": 4.6549471445778146e-05, + "worst_max_relative": 0.00013903895986944434, + "worst_tolerance_ratio": 1.0367631879260903 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.6190931600583722e-08, + 5.6749088300084294e-08 + ], + "worst_mean_abs": 2.0157306509959463e-08, + "worst_max_relative": 0.00012932630906013269, + "worst_tolerance_ratio": 0.004836402164589076 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "ECS_RUNTIME", + "right": "ECS", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 2.110004425048828e-05 + ], + "worst_mean_abs": 2.110004425048828e-05, + "worst_max_relative": 4.548767522006548e-09, + "worst_tolerance_ratio": 4.548669461359525e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.023531462531537e-06, + 5.139336284543106e-06 + ], + "worst_mean_abs": 9.208346959116662e-07, + "worst_max_relative": 0.02196538192903394, + "worst_tolerance_ratio": 0.37540362920854503 + }, + "virial": { + "comparisons": 243, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.925895355891498e-06, + 6.314527961848171e-05 + ], + "worst_mean_abs": 2.5952830151918268e-05, + "worst_max_relative": 0.0001588631944276362, + "worst_tolerance_ratio": 1.1043263615259558 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.3844412347373556e-09, + 2.1739601990117263e-08 + ], + "worst_mean_abs": 1.1690886852271145e-08, + "worst_max_relative": 0.0001457990668108247, + "worst_tolerance_ratio": 0.0018530501501788162 + } + } + }, + { + "model": "Neo", + "n": 1000, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539062e-07, + 2.9385089874267578e-05 + ], + "worst_mean_abs": 2.9385089874267578e-05, + "worst_max_relative": 3.2432541782451404e-09, + "worst_tolerance_ratio": 3.243218382603148e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.633342629427716e-06, + 5.042250927900227e-06 + ], + "worst_mean_abs": 8.955368340426614e-07, + "worst_max_relative": 0.019529283716999562, + "worst_tolerance_ratio": 0.3544008260806043 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.79551512786702e-05, + 8.293916171453475e-05 + ], + "worst_mean_abs": 3.160659930988451e-05, + "worst_max_relative": 5.391707177716919e-05, + "worst_tolerance_ratio": 0.4761605395263849 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.4962958484163467e-09, + 1.4619761928846842e-08 + ], + "worst_mean_abs": 6.723154353794865e-09, + "worst_max_relative": 5.092272442244048e-05, + "worst_tolerance_ratio": 0.0012499379715431075 + } + } + }, + { + "model": "Neo", + "n": 1000, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 2.7358531951904297e-05 + ], + "worst_mean_abs": 2.7358531951904297e-05, + "worst_max_relative": 3.0195814762971996e-09, + "worst_tolerance_ratio": 3.0195481493201726e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.4707768179487175e-06, + 5.587821542363258e-06 + ], + "worst_mean_abs": 9.1447115139535e-07, + "worst_max_relative": 0.03025642234591212, + "worst_tolerance_ratio": 0.3545796580672326 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.4830776261298695e-05, + 0.0001008340942405539 + ], + "worst_mean_abs": 3.617341710502073e-05, + "worst_max_relative": 5.636826848955988e-05, + "worst_tolerance_ratio": 0.4978049224428248 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.1806387771883262e-09, + 1.7774118059310506e-08 + ], + "worst_mean_abs": 8.605640609729397e-09, + "worst_max_relative": 4.9030358175449284e-05, + "worst_tolerance_ratio": 0.0015196244616074491 + } + } + }, + { + "model": "Neo", + "n": 1000, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.152557373046875e-07, + 2.0742416381835938e-05 + ], + "worst_mean_abs": 2.0742416381835938e-05, + "worst_max_relative": 2.289308671490993e-09, + "worst_tolerance_ratio": 2.2892834050212908e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.33537617791535e-06, + 4.863794103471264e-06 + ], + "worst_mean_abs": 8.753199977989771e-07, + "worst_max_relative": 0.039481397851827686, + "worst_tolerance_ratio": 0.3434311438755049 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.661514428974442e-05, + 7.371263139077655e-05 + ], + "worst_mean_abs": 2.9762359849577142e-05, + "worst_max_relative": 4.005407482042947e-05, + "worst_tolerance_ratio": 0.3498361872269447 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.928766687504414e-09, + 1.299339298654889e-08 + ], + "worst_mean_abs": 6.664745576811708e-09, + "worst_max_relative": 3.4466479293943406e-05, + "worst_tolerance_ratio": 0.0011097018798516436 + } + } + }, + { + "model": "Neo", + "n": 1000, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 1.8477439880371094e-05 + ], + "worst_mean_abs": 1.8477439880371094e-05, + "worst_max_relative": 2.0396011677119513e-09, + "worst_tolerance_ratio": 2.0395786541655314e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.363191295235879e-06, + 5.304643678982757e-06 + ], + "worst_mean_abs": 8.877775632153787e-07, + "worst_max_relative": 0.035986585358925086, + "worst_tolerance_ratio": 0.3850449259112016 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.574394066494733e-05, + 0.00010225479562109285 + ], + "worst_mean_abs": 3.7090118130195864e-05, + "worst_max_relative": 6.306032100029021e-05, + "worst_tolerance_ratio": 0.550774980147506 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.277453541726926e-09, + 1.8024546390160712e-08 + ], + "worst_mean_abs": 8.831049912109184e-09, + "worst_max_relative": 5.688659105625272e-05, + "worst_tolerance_ratio": 0.0015366056238270908 + } + } + }, + { + "model": "Neo", + "n": 1000, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.556510925292969e-07, + 3.3020973205566406e-05 + ], + "worst_mean_abs": 3.3020973205566406e-05, + "worst_max_relative": 3.644964670313225e-09, + "worst_tolerance_ratio": 3.6449244364269796e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5435822987039955e-06, + 4.635432755861757e-06 + ], + "worst_mean_abs": 8.828076564637392e-07, + "worst_max_relative": 0.03565022753686914, + "worst_tolerance_ratio": 0.3128566411552532 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.599221879189372e-05, + 7.633215030011797e-05 + ], + "worst_mean_abs": 3.179121207757479e-05, + "worst_max_relative": 4.165436131010499e-05, + "worst_tolerance_ratio": 0.3678620572512016 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.645426277342322e-09, + 1.34551379794845e-08 + ], + "worst_mean_abs": 7.085925340050957e-09, + "worst_max_relative": 4.042028814875951e-05, + "worst_tolerance_ratio": 0.0011503664785505194 + } + } + }, + { + "model": "Neo", + "n": 1000, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.980232238769531e-07, + 3.063678741455078e-05 + ], + "worst_mean_abs": 3.063678741455078e-05, + "worst_max_relative": 3.381404968813222e-09, + "worst_tolerance_ratio": 3.3813676484074856e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.361861978135039e-06, + 5.388645796244873e-06 + ], + "worst_mean_abs": 9.034893317737176e-07, + "worst_max_relative": 0.0370182513885458, + "worst_tolerance_ratio": 0.34711442598892767 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0433619962668672e-05, + 0.00010179705985535747 + ], + "worst_mean_abs": 3.785335627723738e-05, + "worst_max_relative": 5.7465137916573e-05, + "worst_tolerance_ratio": 0.5019102458657091 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.8391437366094276e-09, + 1.7943860886743268e-08 + ], + "worst_mean_abs": 8.864620042806805e-09, + "worst_max_relative": 5.051624883690171e-05, + "worst_tolerance_ratio": 0.0015341363344884929 + } + } + }, + { + "model": "Neo", + "n": 1000, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 2.7358531951904297e-05 + ], + "worst_mean_abs": 2.7358531951904297e-05, + "worst_max_relative": 3.019581466503929e-09, + "worst_tolerance_ratio": 3.0195481395271188e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.920742192382477e-06, + 7.256596255444947e-06 + ], + "worst_mean_abs": 1.2787882238700446e-06, + "worst_max_relative": 0.04443341242762421, + "worst_tolerance_ratio": 0.5313000526596697 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.00015233349519405692, + 0.00029167834442489493 + ], + "worst_mean_abs": 6.962979531989334e-05, + "worst_max_relative": 6.993690481415829e-05, + "worst_tolerance_ratio": 0.610841140331658 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.6851964585877797e-08, + 5.141440866801572e-08 + ], + "worst_mean_abs": 1.686265737105481e-08, + "worst_max_relative": 5.607840267271822e-05, + "worst_tolerance_ratio": 0.004395750766945767 + } + } + }, + { + "model": "Neo", + "n": 1000, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 4.029273986816406e-05 + ], + "worst_mean_abs": 4.029273986816406e-05, + "worst_max_relative": 4.447139589012323e-09, + "worst_tolerance_ratio": 4.447090506144515e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.026079264780492e-06, + 8.691451490960844e-06 + ], + "worst_mean_abs": 1.280851849397413e-06, + "worst_max_relative": 0.04566510292217968, + "worst_tolerance_ratio": 0.5602939503659935 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.00015130114879013945, + 0.000335671715731678 + ], + "worst_mean_abs": 7.109763783846251e-05, + "worst_max_relative": 6.530826222970714e-05, + "worst_tolerance_ratio": 0.5704137676592913 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.666999194406161e-08, + 5.916916048440135e-08 + ], + "worst_mean_abs": 1.7165771659069047e-08, + "worst_max_relative": 6.236457476732796e-05, + "worst_tolerance_ratio": 0.005058754721040777 + } + } + }, + { + "model": "Neo", + "n": 1000, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 3.1888484954833984e-05 + ], + "worst_mean_abs": 3.1888484954833984e-05, + "worst_max_relative": 3.5194831507005216e-09, + "worst_tolerance_ratio": 3.519444307133772e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.3520700704059436e-06, + 5.041821395934676e-06 + ], + "worst_mean_abs": 8.901110789538332e-07, + "worst_max_relative": 0.040719471312637145, + "worst_tolerance_ratio": 0.3898827707648832 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0214205402592214e-05, + 0.00010584578105010678 + ], + "worst_mean_abs": 3.629722876163921e-05, + "worst_max_relative": 6.79690539129666e-05, + "worst_tolerance_ratio": 0.5936540163182049 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.6444365071033307e-09, + 1.865753267854542e-08 + ], + "worst_mean_abs": 8.749500643367554e-09, + "worst_max_relative": 6.316952219034617e-05, + "worst_tolerance_ratio": 0.0015905681629935873 + } + } + }, + { + "model": "Neo", + "n": 1000, + "left": "ECS_RUNTIME", + "right": "ECS_RUNTIME", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-07, + 2.86102294921875e-05 + ], + "worst_mean_abs": 2.86102294921875e-05, + "worst_max_relative": 3.158092123710838e-09, + "worst_tolerance_ratio": 3.158057264026212e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5697123863531743e-06, + 4.866482790077953e-06 + ], + "worst_mean_abs": 8.71843400297769e-07, + "worst_max_relative": 0.024901377101051565, + "worst_tolerance_ratio": 0.3133980997930973 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.601116809291092e-05, + 0.00010153925137501574 + ], + "worst_mean_abs": 3.9492079969289444e-05, + "worst_max_relative": 4.76723214383088e-05, + "worst_tolerance_ratio": 0.4163750444749794 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.814842466752898e-09, + 1.7898416752176738e-08 + ], + "worst_mean_abs": 8.931792745649759e-09, + "worst_max_relative": 3.824128679262822e-05, + "worst_tolerance_ratio": 0.0015302507527934174 + } + } + }, + { + "model": "Neo", + "n": 1000, + "left": "ECS_RUNTIME", + "right": "ECS_RUNTIME", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-07, + 2.777576446533203e-05 + ], + "worst_mean_abs": 2.777576446533203e-05, + "worst_max_relative": 3.065981103718349e-09, + "worst_tolerance_ratio": 3.065947260774519e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5047379043362525e-06, + 5.059271453333736e-06 + ], + "worst_mean_abs": 8.903590764758214e-07, + "worst_max_relative": 0.02847250811269939, + "worst_tolerance_ratio": 0.34366267329652256 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.4292230757551039e-05, + 0.0001104156477822471 + ], + "worst_mean_abs": 4.8674585956920424e-05, + "worst_max_relative": 4.0505170940642086e-05, + "worst_tolerance_ratio": 0.3537782159760424 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.1862362128977075e-09, + 1.9463067268965517e-08 + ], + "worst_mean_abs": 1.093853760133181e-08, + "worst_max_relative": 3.536443167796447e-05, + "worst_tolerance_ratio": 0.0016640230646324222 + } + } + }, + { + "model": "Neo", + "n": 1000, + "left": "ECS_RUNTIME", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 2.7179718017578125e-05 + ], + "worst_mean_abs": 2.7179718017578125e-05, + "worst_max_relative": 3.0001875179990396e-09, + "worst_tolerance_ratio": 3.0001544012986344e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.2885830449913556e-06, + 4.838688653308054e-06 + ], + "worst_mean_abs": 8.974894089132656e-07, + "worst_max_relative": 0.03750267267335105, + "worst_tolerance_ratio": 0.3613712292053565 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0719156023242249e-05, + 0.00010376051326943525 + ], + "worst_mean_abs": 4.32808850661844e-05, + "worst_max_relative": 6.901233463569448e-05, + "worst_tolerance_ratio": 0.6027662189389421 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.8894754406917347e-09, + 1.8289960618950163e-08 + ], + "worst_mean_abs": 9.741253750385066e-09, + "worst_max_relative": 6.221302847932587e-05, + "worst_tolerance_ratio": 0.001559232378907276 + } + } + }, + { + "model": "Neo", + "n": 1000, + "left": "ECS_RUNTIME", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 3.272294998168945e-05 + ], + "worst_mean_abs": 3.272294998168945e-05, + "worst_max_relative": 3.611656263857641e-09, + "worst_tolerance_ratio": 3.611616402179495e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.815899778520816e-06, + 7.409136284053375e-06 + ], + "worst_mean_abs": 1.2799668828152959e-06, + "worst_max_relative": 0.04246488869230901, + "worst_tolerance_ratio": 0.529415590283588 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.00015757149444084462, + 0.00035081970636952065 + ], + "worst_mean_abs": 7.662361022201895e-05, + "worst_max_relative": 6.22942494384205e-05, + "worst_tolerance_ratio": 0.5440888535771483 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.7775271506380594e-08, + 6.18393106548154e-08 + ], + "worst_mean_abs": 1.7776060046128894e-08, + "worst_max_relative": 6.140808028633187e-05, + "worst_tolerance_ratio": 0.005287043151532045 + } + } + }, + { + "model": "Neo", + "n": 1000, + "left": "ECS_RUNTIME", + "right": "ECS", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 3.4809112548828125e-05 + ], + "worst_mean_abs": 3.4809112548828125e-05, + "worst_max_relative": 3.8418283499868665e-09, + "worst_tolerance_ratio": 3.841785948784733e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.344283097561629e-06, + 5.309391424290766e-06 + ], + "worst_mean_abs": 9.063036967302448e-07, + "worst_max_relative": 0.0337890412816447, + "worst_tolerance_ratio": 0.3473774922295766 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1614812271742991e-05, + 0.00011694505049320014 + ], + "worst_mean_abs": 4.5252665304800705e-05, + "worst_max_relative": 5.8508429598578834e-05, + "worst_tolerance_ratio": 0.511022532090192 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.6118786997417617e-09, + 2.0614011057157322e-08 + ], + "worst_mean_abs": 1.0167814561372906e-08, + "worst_max_relative": 4.955974302234044e-05, + "worst_tolerance_ratio": 0.0017624246845168415 + } + } + }, + { + "model": "Neo", + "n": 4096, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-07, + 4.64320182800293e-05 + ], + "worst_mean_abs": 4.64320182800293e-05, + "worst_max_relative": 1.2511782837943904e-09, + "worst_tolerance_ratio": 1.2511749123215628e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.006612300599954e-06, + 5.5649634305154905e-06 + ], + "worst_mean_abs": 9.24204651891453e-07, + "worst_max_relative": 0.04638977543659968, + "worst_tolerance_ratio": 0.45762864355362753 + }, + "virial": { + "comparisons": 27, + "failures": 5, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.3261900263935615e-05, + 0.00017641855885131008 + ], + "worst_mean_abs": 6.176949326001473e-05, + "worst_max_relative": 0.0003462478988203084, + "worst_tolerance_ratio": 2.0354331868617845 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.4277160951343533e-09, + 7.592153516977618e-09 + ], + "worst_mean_abs": 3.319596621695895e-09, + "worst_max_relative": 0.00033108076119606, + "worst_tolerance_ratio": 0.0006483897011119122 + } + } + }, + { + "model": "Neo", + "n": 4096, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.172325134277344e-07, + 5.626678466796875e-05 + ], + "worst_mean_abs": 5.626678466796875e-05, + "worst_max_relative": 1.5161903740432432e-09, + "worst_tolerance_ratio": 1.5161862884587026e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.911784567378618e-06, + 5.939335657956235e-06 + ], + "worst_mean_abs": 9.235166901001517e-07, + "worst_max_relative": 0.05466832139536, + "worst_tolerance_ratio": 0.40715872448751944 + }, + "virial": { + "comparisons": 81, + "failures": 15, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.274522682910174e-05, + 0.00025125827636429676 + ], + "worst_mean_abs": 8.923709778684163e-05, + "worst_max_relative": 0.00048536159158823675, + "worst_tolerance_ratio": 2.8536434786230034 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.788383645292775e-10, + 1.0812872628523928e-08 + ], + "worst_mean_abs": 5.3527442911898254e-09, + "worst_max_relative": 0.00044321573010890595, + "worst_tolerance_ratio": 0.0009234475088118105 + } + } + }, + { + "model": "Neo", + "n": 4096, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-07, + 5.40614128112793e-05 + ], + "worst_mean_abs": 5.40614128112793e-05, + "worst_max_relative": 1.4568380792805779e-09, + "worst_tolerance_ratio": 1.4568341534278123e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.204245115602134e-06, + 5.1832413270336275e-06 + ], + "worst_mean_abs": 9.13824796910734e-07, + "worst_max_relative": 0.05844972749466132, + "worst_tolerance_ratio": 0.39319124731802485 + }, + "virial": { + "comparisons": 27, + "failures": 5, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.1738773590129767e-05, + 0.00010842949927791778 + ], + "worst_mean_abs": 4.631634302073214e-05, + "worst_max_relative": 0.0003797296434928179, + "worst_tolerance_ratio": 2.232552053656739 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.853475516792717e-10, + 4.666251721824333e-09 + ], + "worst_mean_abs": 2.5063077698456076e-09, + "worst_max_relative": 0.0003111970722678921, + "worst_tolerance_ratio": 0.00039846764536102206 + } + } + }, + { + "model": "Neo", + "n": 4096, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5762786865234375e-07, + 8.285045623779297e-05 + ], + "worst_mean_abs": 8.285045623779297e-05, + "worst_max_relative": 2.2326404946295473e-09, + "worst_tolerance_ratio": 2.2326344781628045e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.080200170619719e-06, + 5.679104731370899e-06 + ], + "worst_mean_abs": 9.19830079793565e-07, + "worst_max_relative": 0.06567696857503363, + "worst_tolerance_ratio": 0.41637204115749826 + }, + "virial": { + "comparisons": 81, + "failures": 14, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.125524217655439e-05, + 0.00017049881836328495 + ], + "worst_mean_abs": 7.710890105008496e-05, + "worst_max_relative": 0.0004854599328622272, + "worst_tolerance_ratio": 2.854298652629297 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.107572735249272e-10, + 7.337398126583405e-09 + ], + "worst_mean_abs": 3.933029052158386e-09, + "worst_max_relative": 0.0004688952443502357, + "worst_tolerance_ratio": 0.0006263316685596658 + } + } + }, + { + "model": "Neo", + "n": 4096, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 6.812810897827148e-05 + ], + "worst_mean_abs": 6.812810897827148e-05, + "worst_max_relative": 1.8358110143341388e-09, + "worst_tolerance_ratio": 1.835806067487603e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.013267599134451e-06, + 5.806176268663421e-06 + ], + "worst_mean_abs": 9.279718525367565e-07, + "worst_max_relative": 0.07600583073691304, + "worst_tolerance_ratio": 0.48031684020002197 + }, + "virial": { + "comparisons": 243, + "failures": 43, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.1126351798628207e-05, + 0.00024822615586117536 + ], + "worst_mean_abs": 9.79036613448287e-05, + "worst_max_relative": 0.0005510887995292004, + "worst_tolerance_ratio": 3.239432988792245 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.361754128591905e-10, + 1.0682385653132398e-08 + ], + "worst_mean_abs": 5.683358252322985e-09, + "worst_max_relative": 0.0005106279928969495, + "worst_tolerance_ratio": 0.0009118650107217193 + } + } + }, + { + "model": "Neo", + "n": 4096, + "left": "ECS_RUNTIME", + "right": "ECS_RUNTIME", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5762786865234375e-07, + 5.65648078918457e-05 + ], + "worst_mean_abs": 5.65648078918457e-05, + "worst_max_relative": 1.5242210432699846e-09, + "worst_tolerance_ratio": 1.5242169360456961e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.011071013110268e-06, + 5.387967661363291e-06 + ], + "worst_mean_abs": 9.248245991827885e-07, + "worst_max_relative": 0.03156320400212182, + "worst_tolerance_ratio": 0.40441575591492857 + }, + "virial": { + "comparisons": 27, + "failures": 6, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.3210579456645064e-05, + 0.000212725031701666 + ], + "worst_mean_abs": 7.947677190594465e-05, + "worst_max_relative": 0.0005106145571754262, + "worst_tolerance_ratio": 3.002365005634482 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.988647652059424e-10, + 9.15459863123913e-09 + ], + "worst_mean_abs": 4.1063543313722e-09, + "worst_max_relative": 0.0004523552834152322, + "worst_tolerance_ratio": 0.000782305939611223 + } + } + }, + { + "model": "Neo", + "n": 4096, + "left": "ECS_RUNTIME", + "right": "ECS_RUNTIME", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-07, + 6.252527236938477e-05 + ], + "worst_mean_abs": 6.252527236938477e-05, + "worst_max_relative": 1.6848344303374224e-09, + "worst_tolerance_ratio": 1.6848298903181613e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.01429013763277e-06, + 6.203240378255259e-06 + ], + "worst_mean_abs": 9.300723181377313e-07, + "worst_max_relative": 0.05028517913571991, + "worst_tolerance_ratio": 0.4363624263685384 + }, + "virial": { + "comparisons": 81, + "failures": 18, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.70112598261818e-05, + 0.00015965467025580438 + ], + "worst_mean_abs": 7.798662345563183e-05, + "worst_max_relative": 0.0005044852835018811, + "worst_tolerance_ratio": 2.965709028961038 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.89032851656576e-10, + 6.8707213911334275e-09 + ], + "worst_mean_abs": 4.030487449442636e-09, + "worst_max_relative": 0.0004576428524409064, + "worst_tolerance_ratio": 0.0005871372929730839 + } + } + }, + { + "model": "Neo", + "n": 4096, + "left": "ECS_RUNTIME", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 6.562471389770508e-05 + ], + "worst_mean_abs": 6.562471389770508e-05, + "worst_max_relative": 1.768353391760181e-09, + "worst_tolerance_ratio": 1.7683486266875334e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.0562457996884405e-06, + 6.06768347211073e-06 + ], + "worst_mean_abs": 9.269528270914579e-07, + "worst_max_relative": 0.05541966003438398, + "worst_tolerance_ratio": 0.4396428415745402 + }, + "virial": { + "comparisons": 243, + "failures": 45, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.5601343136495416e-05, + 0.0002561021262295071 + ], + "worst_mean_abs": 9.509609134079117e-05, + "worst_max_relative": 0.0005999949664091773, + "worst_tolerance_ratio": 3.526915242980177 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.714021075215904e-10, + 1.1021327180754659e-08 + ], + "worst_mean_abs": 5.448347654483149e-09, + "worst_max_relative": 0.000545875738601154, + "worst_tolerance_ratio": 0.0009402588735358382 + } + } + }, + { + "model": "Neo", + "n": 4096, + "left": "ECS_RUNTIME", + "right": "ECS", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 7.30752944946289e-05 + ], + "worst_mean_abs": 7.30752944946289e-05, + "worst_max_relative": 1.969221044983487e-09, + "worst_tolerance_ratio": 1.9692157383732285e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.972335861135434e-06, + 5.79117048715716e-06 + ], + "worst_mean_abs": 9.270504371683768e-07, + "worst_max_relative": 0.07640685777968143, + "worst_tolerance_ratio": 0.4278519781945703 + }, + "virial": { + "comparisons": 243, + "failures": 43, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.0289837493692175e-05, + 0.00019545518495078795 + ], + "worst_mean_abs": 8.615662166332349e-05, + "worst_max_relative": 0.0005388515499075958, + "worst_tolerance_ratio": 3.1676925701848857 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.731709522091791e-10, + 8.411392651841432e-09 + ], + "worst_mean_abs": 4.566742367445485e-09, + "worst_max_relative": 0.0005043614934603541, + "worst_tolerance_ratio": 0.0007187953475612625 + } + } + }, + { + "model": "Pro", + "n": 64, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 1, + "right_completed_processes": 1, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 9, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 1.519918441772461e-06 + ], + "worst_mean_abs": 1.519918441772461e-06, + "worst_max_relative": 2.6217558631867638e-09, + "worst_tolerance_ratio": 2.6213037061386032e-05 + }, + "forces": { + "comparisons": 9, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.994344031203582e-07, + 1.0839158317565989e-06 + ], + "worst_mean_abs": 2.626011878850698e-07, + "worst_max_relative": 0.00012389096037262779, + "worst_tolerance_ratio": 0.07102128366112866 + }, + "virial": { + "comparisons": 9, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.8289633949564177e-06, + 4.709333710550823e-06 + ], + "worst_mean_abs": 1.7096973570218665e-06, + "worst_max_relative": 1.1019484075440659e-05, + "worst_tolerance_ratio": 0.07492580598875512 + }, + "stress": { + "comparisons": 9, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.3227540386033053e-09, + 1.2970602536466203e-08 + ], + "worst_mean_abs": 4.142898455682051e-09, + "worst_max_relative": 9.691509563143057e-06, + "worst_tolerance_ratio": 0.0010587397953746294 + } + } + }, + { + "model": "Pro", + "n": 64, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 1, + "right_completed_processes": 1, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 9, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.086162567138672e-07, + 2.2351741790771484e-06 + ], + "worst_mean_abs": 2.2351741790771484e-06, + "worst_max_relative": 3.853670326213181e-09, + "worst_tolerance_ratio": 3.853006028319216e-05 + }, + "forces": { + "comparisons": 9, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.06974534026017e-07, + 9.719429909793575e-07 + ], + "worst_mean_abs": 2.47243391621188e-07, + "worst_max_relative": 0.00013188541135580013, + "worst_tolerance_ratio": 0.05598483515063402 + }, + "virial": { + "comparisons": 9, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7056034167239886e-06, + 4.242729241710208e-06 + ], + "worst_mean_abs": 1.5049813040728882e-06, + "worst_max_relative": 9.696148853464351e-06, + "worst_tolerance_ratio": 0.07269002351076588 + }, + "stress": { + "comparisons": 9, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.697629295974393e-09, + 1.1685465088617786e-08 + ], + "worst_mean_abs": 4.6480661980813414e-09, + "worst_max_relative": 6.783770186736631e-06, + "worst_tolerance_ratio": 0.0009496721878047293 + } + } + }, + { + "model": "Pro", + "n": 64, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 2, + "right_completed_processes": 2, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 18, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.9802322387695312e-08, + 3.0100345611572266e-06 + ], + "worst_mean_abs": 3.0100345611572266e-06, + "worst_max_relative": 5.1896093782334826e-09, + "worst_tolerance_ratio": 5.1887147904010125e-05 + }, + "forces": { + "comparisons": 18, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.762762065903871e-07, + 9.147038504409011e-07 + ], + "worst_mean_abs": 2.6035555022660417e-07, + "worst_max_relative": 0.0001570453217049622, + "worst_tolerance_ratio": 0.06976879806235865 + }, + "virial": { + "comparisons": 18, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.130165203340084e-06, + 7.2501097605481846e-06 + ], + "worst_mean_abs": 2.288475109536571e-06, + "worst_max_relative": 1.314665606591251e-05, + "worst_tolerance_ratio": 0.08927939747581534 + }, + "stress": { + "comparisons": 18, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.41465599199009e-09, + 1.9968491898197938e-08 + ], + "worst_mean_abs": 8.343270145941273e-09, + "worst_max_relative": 1.1413206530463464e-05, + "worst_tolerance_ratio": 0.001628759918593722 + } + } + }, + { + "model": "Pro", + "n": 64, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 2, + "right_completed_processes": 2, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.9802322387695312e-08, + 4.112720489501953e-06 + ], + "worst_mean_abs": 4.112720489501953e-06, + "worst_max_relative": 7.090753394402829e-09, + "worst_tolerance_ratio": 7.089531086279943e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.774947376442242e-07, + 1.166314316236594e-06 + ], + "worst_mean_abs": 2.5948061258459126e-07, + "worst_max_relative": 0.0002078401348765092, + "worst_tolerance_ratio": 0.07848616207961301 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7853426452774102e-06, + 6.365343558911718e-06 + ], + "worst_mean_abs": 2.5288423598255093e-06, + "worst_max_relative": 1.775710232290522e-05, + "worst_tolerance_ratio": 0.12058891956353995 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.901221097671887e-09, + 1.7531639587980985e-08 + ], + "worst_mean_abs": 8.637307409463767e-09, + "worst_max_relative": 1.5286664639320423e-05, + "worst_tolerance_ratio": 0.0014299946183736045 + } + } + }, + { + "model": "Pro", + "n": 64, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 1, + "right_completed_processes": 1, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 3.933906555175781e-06 + ], + "worst_mean_abs": 3.933906555175781e-06, + "worst_max_relative": 6.785721039869355e-09, + "worst_tolerance_ratio": 6.784550751044958e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0858841097416416e-06, + 1.6431010747552932e-06 + ], + "worst_mean_abs": 4.018208583552359e-07, + "worst_max_relative": 0.00020495963725084666, + "worst_tolerance_ratio": 0.08233770655480728 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.213546985929682e-06, + 9.812836475830977e-06 + ], + "worst_mean_abs": 2.5592508900502195e-06, + "worst_max_relative": 1.3238162780371968e-05, + "worst_tolerance_ratio": 0.09924368170280601 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.612997816539789e-09, + 2.7026838510246787e-08 + ], + "worst_mean_abs": 8.475510785332842e-09, + "worst_max_relative": 1.1534144768634636e-05, + "worst_tolerance_ratio": 0.0022080128243433354 + } + } + }, + { + "model": "Pro", + "n": 64, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 2, + "right_completed_processes": 1, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 54, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.086162567138672e-07, + 4.351139068603516e-06 + ], + "worst_mean_abs": 4.351139068603516e-06, + "worst_max_relative": 7.50322622700948e-09, + "worst_tolerance_ratio": 7.501932572719295e-05 + }, + "forces": { + "comparisons": 54, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.742261148915077e-07, + 1.5597756521934514e-06 + ], + "worst_mean_abs": 4.0320700836019946e-07, + "worst_max_relative": 0.00024979604792357515, + "worst_tolerance_ratio": 0.09760162552832756 + }, + "virial": { + "comparisons": 54, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.3937603048640455e-06, + 1.1116557359969192e-05 + ], + "worst_mean_abs": 2.8792532694412977e-06, + "worst_max_relative": 2.1197254101867084e-05, + "worst_tolerance_ratio": 0.14395101210017142 + }, + "stress": { + "comparisons": 54, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.668819750637502e-09, + 3.061758965458572e-08 + ], + "worst_mean_abs": 9.543924728352507e-09, + "worst_max_relative": 1.9299542793057537e-05, + "worst_tolerance_ratio": 0.002501366579823094 + } + } + }, + { + "model": "Pro", + "n": 64, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 2, + "right_completed_processes": 1, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 54, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 3.635883331298828e-06 + ], + "worst_mean_abs": 3.635883331298828e-06, + "worst_max_relative": 6.268637063973441e-09, + "worst_tolerance_ratio": 6.267556472732592e-05 + }, + "forces": { + "comparisons": 54, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.613807812527739e-07, + 1.1465652276498872e-06 + ], + "worst_mean_abs": 2.557871741359907e-07, + "worst_max_relative": 0.0001767185463139161, + "worst_tolerance_ratio": 0.08654445754001032 + }, + "virial": { + "comparisons": 54, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.6028361553566128e-06, + 6.326886797580755e-06 + ], + "worst_mean_abs": 2.3277401853816215e-06, + "worst_max_relative": 1.3916530971727104e-05, + "worst_tolerance_ratio": 0.09450762132471897 + }, + "stress": { + "comparisons": 54, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.9580262948282476e-09, + 1.7425720703206915e-08 + ], + "worst_mean_abs": 7.0962514801856174e-09, + "worst_max_relative": 1.220163929743474e-05, + "worst_tolerance_ratio": 0.0014213551835974513 + } + } + } + ] +} \ No newline at end of file diff --git a/doc/development/ecs-edge-cohort-multimodel-summary.md b/doc/development/ecs-edge-cohort-multimodel-summary.md new file mode 100644 index 0000000000..1206c462f4 --- /dev/null +++ b/doc/development/ecs-edge-cohort-multimodel-summary.md @@ -0,0 +1,52 @@ +# ECS 精度验收汇总(2026-10-19) + +> 以精度为先;下表数值为最差误差÷容差,≤1才满足该项既定判据。未满3个进程注明未齐。OOM不是PASS。 + +已记录95个进程,其中91个完整执行;标准矩阵108进程,加真实Neo分批9进程,共计划117。此轮不是性能测试。 + +## 模型与尺寸总表 + +| 模型 | 原子数 | Torch自身 | BASE自身 | PR候选自身 | PR vs BASE | PR vs Torch | PR实际路线 | +| --- | ---: | ---: | ---: | ---: | ---: | ---: | --- | +| Neo | 512 | 0.685 | 0.714 | 0.863 | 0.959 | 1.030 | single(非8192运行时分批) | +| Neo | 1000 | 0.498 | 0.551 | 0.502 | 0.594 | 0.570 | single(非8192运行时分批) | +| Neo | 4096 | OOM/缺参照 | 2.854 | 2.854 | 3.239 | OOM/缺参照 | single(非8192运行时分批) | +| Nano | 512 | 8.177 | 5.504 | 5.704 | 6.556 | 8.634 | 回退原生,不能算ECS验证 | +| Nano | 1000 | 7.570 | 9.229 | 6.968 | 8.142 | 8.053 | 回退原生,不能算ECS验证 | +| Nano | 4096 | 2.816 | 2.557 | 2.127 | 2.438 | 3.052 | 回退原生,不能算ECS验证 | +| Mini | 512 | 2.326 | 1.541 | 2.770 | 2.164 | 2.636 | 回退原生,不能算ECS验证 | +| Mini | 1000 | 0.800 | 0.726 | 1.328 | 1.286 | 1.028 | 回退原生,不能算ECS验证 | +| Mini | 4096 | 18.006 | 8.724 | 8.598 | 10.488 | 14.464 | 回退原生,不能算ECS验证 | +| Pro | 64 | 0.075(1/3,未齐) | 0.073(1/3,未齐) | 0.121(2/3,未齐) | 0.095(1/3,未齐) | 0.144(1/3,未齐) | 回退原生,不能算ECS验证 | +| Pro | 512 | OOM/缺参照 | 待测 | 待测 | 待测 | OOM/缺参照 | 回退原生,不能算ECS验证 | +| Pro | 4096 | 待测 | 待测 | 待测 | 待测 | 待测 | 回退原生,不能算ECS验证 | + +## 真正8192边运行时分批:与PR单批路径分开 + +| 模型 | 原子数 | 自身 | 对BASE | 对Torch | 对PR单批 | 已观察真实cohort | +| --- | ---: | ---: | ---: | ---: | ---: | --- | +| Neo | 512 | 1.052 | 1.047 | 1.037 | 1.104 | [(80898, 8192, 10)] | +| Neo | 1000 | 0.416 | 0.603 | 0.544 | 0.511 | [(158002, 8192, 20)] | +| Neo | 4096 | 3.002 | 3.527 | OOM/缺参照 | 3.168 | [(647170, 8192, 80)] | + +## 4096原子位力最大绝对误差范围(eV) + +范围是各对输出max_abs的min~max,非置信区间;所有比较仅对同一帧进行。 + +| 模型 | Torch自身 | BASE自身 | PR自身 | PR vs BASE | PR vs Torch | +| --- | --- | --- | --- | --- | --- | +| Neo | OOM/缺参照 | 2.275e-05 ~ 2.513e-04 | 2.126e-05 ~ 1.705e-04 | 2.113e-05 ~ 2.482e-04 | OOM/缺参照 | +| Nano | 9.505e-05 ~ 6.979e-04 | 5.914e-05 ~ 4.544e-04 | 6.502e-05 ~ 7.514e-04 | 7.473e-05 ~ 6.500e-04 | 9.420e-05 ~ 1.060e-03 | +| Mini | 5.062e-05 ~ 4.385e-04 | 4.477e-05 ~ 3.680e-04 | 3.166e-05 ~ 3.210e-04 | 4.190e-05 ~ 3.580e-04 | 7.984e-04 ~ 1.493e-03 | +| Pro | 待测 | 待测 | 待测 | 待测 | 待测 | + +## 必须保留的限制 + +- 判据仍为逐元素atol=1e-5、rtol=1e-4,finite必需;relative分母max(abs(ref),1e-8)。不因BASE自身波动自动放宽。所有输出误差详情见ACCURACY_TABLE.md与pair_details.json。 +- Torch是关闭Triton的编译路径,不是无限精度真值。Neo4096该路径三次OOM,因此不能宣称该规模对Torch参照通过。 +- BASE固定PR原基线668b60cc;当前远端master4f78c2d0不属于本矩阵。原模型权重不改、TF32/AMP关闭;不混合FP16x3。 +- 非Neo模型的PR候选是安全回退,不是多模型ECS性能成果。ECS_RUNTIME实验只在独立进程把分支阈值置0,不改PR源文件;真实调用计数确认实际分批。 +- Pro是官方登记的Pro-MPtrj,不是OMat24-Pro;官方MD5/HF SHA256匹配。旧fitting type只在读取时兼容映射,严格权重检查零缺失;三路同样处理,见models/pro_mptrj/COMPATIBILITY.md。 +- 本轮只有碳晶胞/三帧扰动的实现等价性测试,不是DFT预测准确率、所有化学体系或完整MD轨迹验收。 +- 能量/位力eV、力eV/Å、stress eV/ų。相同数值atol跨单位不是相同物理精度;stress通过不能覆盖virial失败。任何阈值调整需事前约定,本轮未调整。 +- 九次调用包含首次编译,用于误差样本,不报稳态P50或加速比。详见SCIENCE_AND_PROTOCOL.md;原始NPZ逐次保留。 diff --git a/doc/development/ecs-edge-cohort-multimodel-update.md b/doc/development/ecs-edge-cohort-multimodel-update.md new file mode 100644 index 0000000000..46200e720f --- /dev/null +++ b/doc/development/ecs-edge-cohort-multimodel-update.md @@ -0,0 +1,62 @@ +# ECS multi-model and N4096 follow-up (2026-10-19) + +This is a measurement update for the default-off Draft PR, not a claim of multi-model production acceptance. The production implementation is unchanged from PR head `9e2e4c5de1b90cf2d6bc8b2706bc103a06778dae`; BASE is pinned to `668b60cc2a9559f79abb9c33acd959833376344f`, not subsequent upstream master. + +## Read the results by execution path + +- **PR candidate:** unmodified current PR code. In the measured Neo make_fx/AOT deployment graphs, the small-edge single-cohort branch is specialized even for N4096. Those runs are **not** evidence of an 8192-edge workspace bound at large E. +- **ECS_RUNTIME diagnostic:** separate processes set `SINGLE_COHORT_MAX_EDGES=0` before compilation, without editing production files. Runtime instrumentation confirms `(E, capacity, batches)` of `(80898,8192,10)`, `(158002,8192,20)` and `(647170,8192,80)`. At N4096 the final batch contains two edges. This override is not a fix submitted in the PR. +- **Nano, Mini, Pro:** the Neo-specific eligibility guard falls back to the native implementation. These are compatibility/repeatability observations, **not evidence of ECS acceleration or of generalized ECS support**. + +The associated [snapshot](ecs-edge-cohort-multimodel-summary.md), [full accuracy table](ecs-edge-cohort-multimodel-accuracy.md), and [machine-readable summary](ecs-edge-cohort-multimodel-results.json) retain incomplete runs and OOM explicitly. Pro measurements are still in progress at this snapshot; no pending cell is a pass. + +## Protocol and scientific gate + +RTX 5090; PyTorch 2.11.0+cu128, Triton 3.6.0; strict level-2 FP32 mixing, TF32/AMP disabled. Normal ASE energy/forces/virial/stress evaluation, diamond carbon at 3.567 Angstrom, seed0 and three 0.02-Angstrom-perturbed frames. Neo/Nano/Mini use N512/1000/4096; Pro uses N64/512/4096. For each model/size/mode: three independent processes, three frames, three repeats per frame. Completed groups therefore retain 27 evaluations per mode. Every comparison uses the same frame; inputs and model identity are checked. All modes for a model/size use the same physical GPU. + +TORCH means the normal compiled path with `DP_TRITON_INFER=0`, not eager execution or an exact reference. BASE uses level2; PR candidate additionally enables `DP_SO2_EDGE_COHORT_INFER=1`. Each model/mode has its own cache reused by subsequent repeats; this is not a latency study with matched autotune selections. The short user-requested pause does not become a timing sample. + +Every output must be finite and satisfy `abs(candidate-reference) <= 1e-5 + 1e-4*abs(reference)`. Max-relative uses `max(abs(reference),1e-8)`. Summary ratios are worst elementwise error/tolerance; <=1 is within the criterion. Full tables include energy, force, virial and stress separately and distinguish within-process repeats from across-process repeats. Ranges are min/max of pairwise max-absolute error, not confidence intervals. BASE or TORCH self-failure does **not** turn a candidate failure into a pass. All-pairs comparisons are descriptive, not independent statistical replicates. + +The N4096 Neo compiled TORCH path OOMed in all three processes. BASE self-repeat worst ratio is 2.854, PR self-repeat 2.854, PR-vs-BASE 3.239; actual runtime batching-vs-BASE is 3.527. Thus **N4096 is not accepted under the fixed criterion**. Existing fluctuations complicate attribution, but do not establish that the candidate is harmless. No threshold was relaxed. + +Energy and virial are in eV, force in eV/Angstrom, stress in eV/Angstrom^3; identical numerical tolerances across units are not equivalent physical tolerances. This is implementation-equivalence testing on perturbed carbon crystals, not DFT predictive-accuracy or long-MD validation. + +## N4096 historical performance, not a current-PR speed claim + +The following is explicitly the **2026-10-18 runtime prototype**, each arm one GPU0 process, 8 warmups and 30 synchronized wall-clock samples through the normal full API, plus separate memory replay. First/JIT execution is excluded from steady timing and included in the full memory window. Decimal GB=1e9 bytes. It is not the controlled N64 latency study and not a new performance measurement of the current PR. + +| Strategy | Frame P50 ms | Time reduction | Steady allocated GB | Steady reduction | Full-window peak including first GB | Full-peak reduction | +| --- | ---: | ---: | ---: | ---: | ---: | ---: | +| Historical BASE | 156.495125 | — | 23.970400 | — | 24.061593 | — | +| Historical runtime ECS prototype | 152.996582 | 2.2356% | 22.256657 | 7.1494% | 22.256657 | 7.5013% | + +BASE/candidate P90: 156.614295/153.179559 ms. Candidate first-call-only allocated peak is 22.255608 GB; the full window is slightly higher at 22.256657 GB and is the primary capacity value above. The historical third-frame virial check failed (error/tolerance 1.394), and TORCH OOMed. These are **unaccepted historical observations**, not a stable speedup claim or a substitute for new precision/latency acceptance. The newer multi-process results further prohibit treating this historical row as accepted. + +[Historical per-call timing, memory and accuracy JSON](ecs-edge-cohort-n4096-historical-results.json) contains both original result objects and the aggregate row. It is deliberately separate from the current accuracy snapshot. + +## Model identity + +- Neo: `DPA4-Neo-OMat24-v20260627.pt`, SHA256 `8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d`. +- Nano/Mini: official OMat24 v20260805 checkpoints; exact SHA256 and loaded parameter counts are retained in the machine-readable snapshot. +- Pro: **DPA-4.0.1-Pro-MPtrj v2026.06.05**, not OMat24-Pro. [Official registry](https://github.com/janosh/matbench-discovery/blob/main/models/deepmd/dpa-4.0.1-pro-mptrj.yml), [official record](https://doi.org/10.6084/m9.figshare.32647224). Downloaded mirror revision `452f673645030b1daeda91c75cf6e1b1c346ee5f` of `JinukMoon/oh-my-mlip-mirror-dpa4`; 273318000 bytes, official MD5 `2174bb3095b197489f978d31393c1e06`, SHA256 `446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221`, both verified. +- Pro's legacy checkpoint fitting type `ener` is unsupported by the current reader. All three modes apply the same **in-memory metadata-only** alias `ener -> dpa4_ener`, referring to the same historical SeZMEnergyFittingNet class; tensor contents and original file are unchanged. Strict CPU state loading has zero missing/unexpected keys. Therefore Pro BASE is the native computation with disclosed reader compatibility, not proof that the unmodified default reader loads this checkpoint directly. + +## Reproduction and limitations of published evidence + +The public benchmark already provides normal API runs for the three primary modes. For example, from the candidate checkout, with a prebuilt compatible CUDA installation, an idle selected GPU and separate output/cache directories: + +```bash +python source/tests/pt_expt/kernels/benchmark_so2_edge_cohort.py \ + --source-root /absolute/path/to/base-checkout --model /absolute/path/to/neo.pt \ + --mode base --gpu 0 --nrep 8 --warmup 8 --samples 30 \ + --out /absolute/path/to/new-base-output --cache-dir /absolute/path/to/new-base-cache +python source/tests/pt_expt/kernels/benchmark_so2_edge_cohort.py \ + --source-root /absolute/path/to/candidate-checkout --model /absolute/path/to/neo.pt \ + --mode ecs --gpu 0 --nrep 8 --warmup 8 --samples 30 \ + --out /absolute/path/to/new-ecs-output --cache-dir /absolute/path/to/new-ecs-cache +``` + +`nrep=2,4,5,8` corresponds to diamond N64,512,1000,4096. Use `--mode torch` for the compiled TORCH reference. Repeat independently with fresh outputs; do not compare across cards or source revisions. These commands exercise the current PR's deployment route and **do not force runtime batching**, and are not an exact replay of the new three-frame/repeat all-pairs matrix. Generated graph route inspection is mandatory. + +This supplement publishes complete aggregate metrics/route counts and the historical per-call result objects, not model weights, compiler caches, full matrix output-array archives or its independent orchestration harness. Therefore it does not claim that the original full matrix can be audited end-to-end from GitHub alone yet. Existing focused unit tests do not replace full-model numerical acceptance or PT2/C++ deployment validation. Keep this PR Draft and default-off; dynamic dispatch correction, unresolved accuracy failures and portable full-matrix reproduction remain gates. diff --git a/doc/development/ecs-edge-cohort-n4096-historical-results.json b/doc/development/ecs-edge-cohort-n4096-historical-results.json new file mode 100644 index 0000000000..fc93180ad3 --- /dev/null +++ b/doc/development/ecs-edge-cohort-n4096-historical-results.json @@ -0,0 +1 @@ +{"label": "2026-10-18 historical prototype; not current PR accepted performance", "metrics": [{"label": "N4096 GPU0", "bases": ["model_n4096_BASE_r0"], "candidates": ["model_n4096_SPLIT_r0"], "base": {"p50": 156.49512538220733, "p90": 156.6142953466624, "complete": 24061592576, "first": 24061592576, "steady": 23970400256}, "candidate": {"p50": 152.99658162984997, "p90": 153.1795586925, "complete": 22256656896, "first": 22255608320, "steady": 22256656896}, "time_reduction_pct": 2.235560848181617, "throughput_increase_pct": 2.2866809931881393, "peak_reduction_pct": 7.501314280420135}], "base": {"variant": "BASE", "n_atoms": 4096, "status": "completed", "first_ms": 127721.33345692419, "wall_ms": {"median": 156.49512538220733, "p90": 156.6142953466624, "min": 156.24970709905028, "max": 156.7487590946257, "samples": [156.6109189298004, 156.6446830984205, 156.6600319929421, 156.5163000486791, 156.5106299240142, 156.38837916776538, 156.33732313290238, 156.52387496083975, 156.60078101791441, 156.53209085576236, 156.48909914307296, 156.39495220966637, 156.56973188742995, 156.49431897327304, 156.4414391759783, 156.60207299515605, 156.4169730991125, 156.50827600620687, 156.49593179114163, 156.46439278498292, 156.32704296149313, 156.4743521157652, 156.4188168849796, 156.34497697465122, 156.7487590946257, 156.57230583019555, 156.5067518968135, 156.24970709905028, 156.46444307640195, 156.38035396113992]}, "event_elapsed_ms": {"median": 156.46929168701172, "p90": 156.5800567626953, "min": 156.22454833984375, "max": 156.7229766845703, "samples": [156.55673217773438, 156.6096649169922, 156.6345977783203, 156.49026489257812, 156.48431396484375, 156.36288452148438, 156.31173706054688, 156.49862670898438, 156.57498168945312, 156.5063934326172, 156.463623046875, 156.36764526367188, 156.54428100585938, 156.46847534179688, 156.41448974609375, 156.57676696777344, 156.3907470703125, 156.48294067382812, 156.47010803222656, 156.4393310546875, 156.30213928222656, 156.44851684570312, 156.39334106445312, 156.31983947753906, 156.7229766845703, 156.54534912109375, 156.4803466796875, 156.22454833984375, 156.43887329101562, 156.35494995117188]}, "event_scope": "entire API call on default stream; includes host gaps, not kernel-sum", "throughput_atoms_per_s": 26173.339201437473, "memory": {"before": {"allocated": 5105152, "reserved": 10485760}, "first": {"allocated": 24061592576, "reserved": 25612517376}, "complete": {"allocated": 24061592576, "reserved": 25612517376}, "steady": {"allocated": 23970400256, "reserved": 25612517376}}, "accuracy": {}, "precision_pass": null, "finite": true, "repeat_noise": [{"0_energy": {"passed": true, "finite": true, "max_abs": 2.9265880584716797e-05, "mean_abs": 2.9265880584716797e-05, "max_relative": 7.886113191931168e-10, "max_ratio": 7.886091941720186e-06, "bitwise_equal": false}, "0_forces": {"passed": true, "finite": true, "max_abs": 4.884153433692973e-06, "mean_abs": 9.149693440342201e-07, "max_relative": 0.00889732273496248, "max_ratio": 0.2910700292909392, "bitwise_equal": false}, "0_virial": {"passed": true, "finite": true, "max_abs": 5.8138769023940995e-05, "mean_abs": 2.451276976723883e-05, "max_relative": 8.539738394836927e-06, "max_ratio": 0.08416117881003406, "bitwise_equal": false}, "0_stress": {"passed": true, "finite": true, "max_abs": 2.17191859625248e-09, "mean_abs": 1.0305605540217744e-09, "max_relative": 7.413133353615878e-06, "max_ratio": 0.0002165573843127067, "bitwise_equal": false}, "1_energy": {"passed": true, "finite": true, "max_abs": 2.7418136596679688e-05, "mean_abs": 2.7418136596679688e-05, "max_relative": 7.388215798445052e-10, "max_ratio": 7.388195889876355e-06, "bitwise_equal": false}, "1_forces": {"passed": true, "finite": true, "max_abs": 5.104048616644263e-06, "mean_abs": 9.041639133447527e-07, "max_relative": 0.004201276226914469, "max_ratio": 0.3953098166826058, "bitwise_equal": false}, "1_virial": {"passed": true, "finite": true, "max_abs": 6.962561059253858e-05, "mean_abs": 2.107040639979611e-05, "max_relative": 5.43448615477429e-06, "max_ratio": 0.052840692037927565, "bitwise_equal": false}, "1_stress": {"passed": true, "finite": true, "max_abs": 2.996330586424456e-09, "mean_abs": 1.1047521660612597e-09, "max_relative": 4.99864983666676e-06, "max_ratio": 0.0002560513501337903, "bitwise_equal": false}, "2_energy": {"passed": true, "finite": true, "max_abs": 6.318092346191406e-06, "mean_abs": 6.318092346191406e-06, "max_relative": 1.7025891569317975e-10, "max_ratio": 1.7025845688348422e-06, "bitwise_equal": false}, "2_forces": {"passed": true, "finite": true, "max_abs": 4.345201946698296e-06, "mean_abs": 8.973631530350161e-07, "max_relative": 0.009160570898173351, "max_ratio": 0.2585237591083319, "bitwise_equal": false}, "2_virial": {"passed": false, "finite": true, "max_abs": 4.878430729604588e-05, "mean_abs": 3.48720067884963e-05, "max_relative": 0.00033190783739215886, "max_ratio": 1.951259215314597, "bitwise_equal": false}, "2_stress": {"passed": true, "finite": true, "max_abs": 2.0994273645935646e-09, "mean_abs": 1.573438653265807e-09, "max_relative": 0.00030282239781688844, "max_ratio": 0.00018589707072300967, "bitwise_equal": false}}, {"0_energy": {"passed": true, "finite": true, "max_abs": 1.5735626220703125e-05, "mean_abs": 1.5735626220703125e-05, "max_relative": 4.24019120706686e-10, "max_ratio": 4.2401797812915054e-06, "bitwise_equal": false}, "0_forces": {"passed": true, "finite": true, "max_abs": 4.3063727730441315e-06, "mean_abs": 9.188343195349852e-07, "max_relative": 0.006987951957098469, "max_ratio": 0.3120841199726096, "bitwise_equal": false}, "0_virial": {"passed": true, "finite": true, "max_abs": 6.109445045909823e-05, "mean_abs": 3.24522909918517e-05, "max_relative": 1.8795819182412397e-05, "max_ratio": 0.18234821568949947, "bitwise_equal": false}, "0_stress": {"passed": true, "finite": true, "max_abs": 2.5286423024364034e-09, "mean_abs": 1.3836886305613391e-09, "max_relative": 1.807701579455256e-05, "max_ratio": 0.00025251101374019124, "bitwise_equal": false}, "1_energy": {"passed": true, "finite": true, "max_abs": 3.445148468017578e-05, "mean_abs": 3.445148468017578e-05, "max_relative": 9.28345376413313e-10, "max_ratio": 9.283428748583768e-06, "bitwise_equal": false}, "1_forces": {"passed": true, "finite": true, "max_abs": 4.32300487318571e-06, "mean_abs": 9.033382835171473e-07, "max_relative": 0.01992064925111337, "max_ratio": 0.31270697386062474, "bitwise_equal": false}, "1_virial": {"passed": true, "finite": true, "max_abs": 7.120987754660746e-05, "mean_abs": 3.692904697663282e-05, "max_relative": 2.6659592549725727e-05, "max_ratio": 0.2564222778183442, "bitwise_equal": false}, "1_stress": {"passed": true, "finite": true, "max_abs": 3.0645093442027704e-09, "mean_abs": 1.7591220708337056e-09, "max_relative": 2.5538060802868567e-05, "max_ratio": 0.0002767056309370525, "bitwise_equal": false}, "2_energy": {"passed": true, "finite": true, "max_abs": 1.8298625946044922e-05, "mean_abs": 1.8298625946044922e-05, "max_relative": 4.931083690359074e-10, "max_ratio": 4.931070402191477e-06, "bitwise_equal": false}, "2_forces": {"passed": true, "finite": true, "max_abs": 4.929079365112443e-06, "mean_abs": 9.045929155445032e-07, "max_relative": 0.01990776395603181, "max_ratio": 0.34067505914575524, "bitwise_equal": false}, "2_virial": {"passed": true, "finite": true, "max_abs": 4.2985089976355084e-05, "mean_abs": 1.5045866729130392e-05, "max_relative": 4.8285469002276166e-05, "max_ratio": 0.283868622467302, "bitwise_equal": false}, "2_stress": {"passed": true, "finite": true, "max_abs": 1.8498586794313265e-09, "mean_abs": 7.57343633627384e-10, "max_relative": 3.625686855444034e-05, "max_ratio": 0.0001579067987562571, "bitwise_equal": false}}, {"0_energy": {"passed": true, "finite": true, "max_abs": 1.138448715209961e-05, "mean_abs": 1.138448715209961e-05, "max_relative": 3.067714092991554e-10, "max_ratio": 3.067705826616203e-06, "bitwise_equal": false}, "0_forces": {"passed": true, "finite": true, "max_abs": 4.337393775699638e-06, "mean_abs": 9.153347373364882e-07, "max_relative": 0.003453387066208108, "max_ratio": 0.3243502877882624, "bitwise_equal": false}, "0_virial": {"passed": true, "finite": true, "max_abs": 5.974733539915178e-05, "mean_abs": 1.7404405973901287e-05, "max_relative": 7.671207762715631e-06, "max_ratio": 0.07442245715065961, "bitwise_equal": false}, "0_stress": {"passed": true, "finite": true, "max_abs": 2.571220087538295e-09, "mean_abs": 8.507799138810654e-10, "max_relative": 6.457081150393548e-06, "max_ratio": 0.00021996820202594585, "bitwise_equal": false}, "1_energy": {"passed": true, "finite": true, "max_abs": 7.867813110351562e-06, "mean_abs": 7.867813110351562e-06, "max_relative": 2.1200967073798844e-10, "max_ratio": 2.1200909944862587e-06, "bitwise_equal": false}, "1_forces": {"passed": true, "finite": true, "max_abs": 4.462131720117668e-06, "mean_abs": 8.939192206212782e-07, "max_relative": 0.006532996118553083, "max_ratio": 0.2969028415738903, "bitwise_equal": false}, "1_virial": {"passed": true, "finite": true, "max_abs": 8.251958126948011e-05, "mean_abs": 4.200807418936531e-05, "max_relative": 2.3517496601978674e-05, "max_ratio": 0.22620042774300894, "bitwise_equal": false}, "1_stress": {"passed": true, "finite": true, "max_abs": 3.551221216396838e-09, "mean_abs": 2.001896538951505e-09, "max_relative": 2.331850128288378e-05, "max_ratio": 0.00030346951407896554, "bitwise_equal": false}, "2_energy": {"passed": true, "finite": true, "max_abs": 2.6881694793701172e-05, "mean_abs": 2.6881694793701172e-05, "max_relative": 7.244034997889063e-10, "max_ratio": 7.244015476835036e-06, "bitwise_equal": false}, "2_forces": {"passed": true, "finite": true, "max_abs": 4.435662745549962e-06, "mean_abs": 8.951618996311229e-07, "max_relative": 0.008627904809941005, "max_ratio": 0.3208832000069531, "bitwise_equal": false}, "2_virial": {"passed": true, "finite": true, "max_abs": 6.991453687987814e-05, "mean_abs": 2.1630571821671137e-05, "max_relative": 8.316946456667983e-05, "max_ratio": 0.48895044048911596, "bitwise_equal": false}, "2_stress": {"passed": true, "finite": true, "max_abs": 3.00876450143317e-09, "mean_abs": 1.153982387823025e-09, "max_relative": 6.545378981810836e-05, "max_ratio": 0.0002568327926427503, "bitwise_equal": false}}], "wrappers": ["/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/megakernel_20261018/results/model_n4096_BASE_r0/inductor/cn/ccnwp66p5csppow52lqfxt6bvq23uclugz3vo2xshmrimvm4d7nm.py"], "pbs_calls": 0, "gpu_end": "index, name, uuid, driver_version, clocks.current.sm [MHz], clocks.current.memory [MHz], temperature.gpu, power.draw [W]\n0, NVIDIA GeForce RTX 5090, GPU-8a1f47f6-0655-97e5-8ed5-433be97af788, 595.91.07, 2520 MHz, 13801 MHz, 54, 553.00 W\n1, NVIDIA GeForce RTX 5090, GPU-fcc63da0-f1b3-74c7-f868-681a40ef5f03, 595.91.07, 2392 MHz, 13801 MHz, 39, 52.09 W\n"}, "candidate": {"variant": "COHORT", "n_atoms": 4096, "status": "completed", "cohort_calls": [{"edges": 647170, "cohort": 8192, "shape": [2, 2, 647170, 320], "scratch_bytes": 48234496, "chunks": 80}, {"edges": 647170, "cohort": 8192, "shape": [2, 2, 647170, 320], "scratch_bytes": 48234496, "chunks": 80}], "first_ms": 130661.74752404913, "wall_ms": {"median": 152.99658162984997, "p90": 153.1795586925, "min": 152.67666708678007, "max": 153.37918419390917, "samples": [152.80796587467194, 152.67666708678007, 152.8230239637196, 152.69553288817406, 152.8115631081164, 153.11050694435835, 152.9747301246971, 152.96156611293554, 152.96317916363478, 152.75542601011693, 152.97105396166444, 153.01843313500285, 152.74724084883928, 153.37918419390917, 152.67967293038964, 153.13789900392294, 153.12884212471545, 152.86589483730495, 152.83745108172297, 153.1532269436866, 153.0529980082065, 153.17489788867533, 153.14369997940958, 152.74089900776744, 153.0236629769206, 153.27849402092397, 153.03492406383157, 153.1700089108199, 153.22150592692196, 153.0451129656285]}, "event_elapsed_ms": {"median": 152.96900177001953, "p90": 153.15320434570313, "min": 152.64944458007812, "max": 153.35218811035156, "samples": [152.76416015625, 152.64944458007812, 152.79225158691406, 152.6684112548828, 152.7843780517578, 153.0836181640625, 152.94805908203125, 152.93299865722656, 152.9363555908203, 152.72866821289062, 152.94143676757812, 152.9899444580078, 152.71241760253906, 153.35218811035156, 152.6525115966797, 153.11004638671875, 153.10208129882812, 152.839111328125, 152.8105926513672, 153.12716674804688, 153.0273895263672, 153.1485137939453, 153.1181182861328, 152.71612548828125, 152.99781799316406, 153.25001525878906, 153.0081024169922, 153.1427764892578, 153.19541931152344, 153.0175323486328]}, "event_scope": "entire API call on default stream; includes host gaps, not kernel-sum", "throughput_atoms_per_s": 26771.839974239407, "memory": {"before": {"allocated": 5105152, "reserved": 10485760}, "first": {"allocated": 22255608320, "reserved": 23284678656}, "complete": {"allocated": 22256656896, "reserved": 23284678656}, "steady": {"allocated": 22256656896, "reserved": 23284678656}}, "accuracy": {"0_energy": {"passed": true, "finite": true, "max_abs": 3.343820571899414e-05, "mean_abs": 3.343820571899414e-05, "max_relative": 9.010406315017077e-10, "max_ratio": 9.01038203524445e-06, "bitwise_equal": false}, "0_forces": {"passed": true, "finite": true, "max_abs": 4.501290604252972e-06, "mean_abs": 8.91570794295819e-07, "max_relative": 0.005271177009723984, "max_ratio": 0.3066038253772984, "bitwise_equal": false}, "0_virial": {"passed": true, "finite": true, "max_abs": 3.648587642857137e-05, "mean_abs": 2.5113980236351414e-05, "max_relative": 5.359243840853268e-06, "max_ratio": 0.05281663890890637, "bitwise_equal": false}, "0_stress": {"passed": true, "finite": true, "max_abs": 1.5677478502678852e-09, "mean_abs": 1.0383072766689974e-09, "max_relative": 5.35099423106069e-06, "max_ratio": 0.00015631680409278805, "bitwise_equal": false}, "1_energy": {"passed": true, "finite": true, "max_abs": 2.568960189819336e-05, "mean_abs": 2.568960189819336e-05, "max_relative": 6.922436976369169e-10, "max_ratio": 6.92241832290589e-06, "bitwise_equal": false}, "1_forces": {"passed": true, "finite": true, "max_abs": 4.585176689886339e-06, "mean_abs": 9.03569674277525e-07, "max_relative": 0.02285817500002087, "max_ratio": 0.3945459308993431, "bitwise_equal": false}, "1_virial": {"passed": true, "finite": true, "max_abs": 3.517240652772813e-05, "mean_abs": 1.1819337419992513e-05, "max_relative": 1.3954780960416497e-05, "max_ratio": 0.13422248347013363, "bitwise_equal": false}, "1_stress": {"passed": true, "finite": true, "max_abs": 1.4151081694521814e-09, "mean_abs": 4.355814262791754e-10, "max_relative": 1.3046341526179833e-05, "max_ratio": 0.00014135748956382648, "bitwise_equal": false}, "2_energy": {"passed": true, "finite": true, "max_abs": 2.181529998779297e-05, "mean_abs": 2.181529998779297e-05, "max_relative": 5.878751239972056e-10, "max_ratio": 5.87873539805238e-06, "bitwise_equal": false}, "2_forces": {"passed": true, "finite": true, "max_abs": 4.215275630770066e-06, "mean_abs": 8.904889935006855e-07, "max_relative": 0.019653782612936366, "max_ratio": 0.2874058287597916, "bitwise_equal": false}, "2_virial": {"passed": false, "finite": true, "max_abs": 5.778060074135283e-05, "mean_abs": 3.161071630145932e-05, "max_relative": 0.00023704483448762598, "max_ratio": 1.3935673269149225, "bitwise_equal": false}, "2_stress": {"passed": true, "finite": true, "max_abs": 2.4865818779029603e-09, "mean_abs": 1.303268248067739e-09, "max_relative": 0.00019835846034592781, "max_ratio": 0.00021213693395571626, "bitwise_equal": false}}, "precision_pass": false, "finite": true, "repeat_noise": [{"0_energy": {"passed": true, "finite": true, "max_abs": 3.254413604736328e-05, "mean_abs": 3.254413604736328e-05, "max_relative": 8.769486352168433e-10, "max_ratio": 8.76946272158763e-06, "bitwise_equal": false}, "0_forces": {"passed": true, "finite": true, "max_abs": 4.417631743081074e-06, "mean_abs": 8.952935879356224e-07, "max_relative": 0.008491087125014079, "max_ratio": 0.3145522822525354, "bitwise_equal": false}, "0_virial": {"passed": true, "finite": true, "max_abs": 6.0164278977481445e-05, "mean_abs": 3.642535952789553e-05, "max_relative": 9.36718038851264e-06, "max_ratio": 0.09087599442425827, "bitwise_equal": false}, "0_stress": {"passed": true, "finite": true, "max_abs": 2.589163210220402e-09, "mean_abs": 1.7415695341842635e-09, "max_relative": 8.87234163493955e-06, "max_ratio": 0.00022120559967418757, "bitwise_equal": false}, "1_energy": {"passed": true, "finite": true, "max_abs": 4.357099533081055e-05, "mean_abs": 4.357099533081055e-05, "max_relative": 1.1740838575923202e-09, "max_ratio": 1.1740806938610818e-05, "bitwise_equal": false}, "1_forces": {"passed": true, "finite": true, "max_abs": 4.675827472766514e-06, "mean_abs": 9.063906547856029e-07, "max_relative": 0.036599505319544375, "max_ratio": 0.25737358251348613, "bitwise_equal": false}, "1_virial": {"passed": true, "finite": true, "max_abs": 6.619611639280265e-05, "mean_abs": 1.5910744091129914e-05, "max_relative": 7.100533705438889e-06, "max_ratio": 0.06829566278201162, "bitwise_equal": false}, "1_stress": {"passed": true, "finite": true, "max_abs": 2.8487426792511705e-09, "mean_abs": 7.86154918125996e-10, "max_relative": 4.018101960426984e-06, "max_ratio": 0.00024352512769494378, "bitwise_equal": false}, "2_energy": {"passed": true, "finite": true, "max_abs": 5.543231964111328e-06, "mean_abs": 5.543231964111328e-06, "max_relative": 1.493781051901628e-10, "max_ratio": 1.4937770264958134e-06, "bitwise_equal": false}, "2_forces": {"passed": true, "finite": true, "max_abs": 5.050062881650774e-06, "mean_abs": 9.144685035093681e-07, "max_relative": 0.01441034960873239, "max_ratio": 0.26638835178894216, "bitwise_equal": false}, "2_virial": {"passed": false, "finite": true, "max_abs": 8.364572613572818e-05, "mean_abs": 3.839447309850197e-05, "max_relative": 0.000184569063466378, "max_ratio": 1.0849605187992253, "bitwise_equal": false}, "2_stress": {"passed": true, "finite": true, "max_abs": 3.5996847377872676e-09, "mean_abs": 1.8820248030649647e-09, "max_relative": 0.00011520072200172714, "max_ratio": 0.0003072746604392913, "bitwise_equal": false}}, {"0_energy": {"passed": true, "finite": true, "max_abs": 4.5239925384521484e-05, "mean_abs": 4.5239925384521484e-05, "max_relative": 1.2190549709333042e-09, "max_ratio": 1.2190516860228957e-05, "bitwise_equal": false}, "0_forces": {"passed": true, "finite": true, "max_abs": 4.041406871380104e-06, "mean_abs": 9.10446354352643e-07, "max_relative": 0.010763071033174065, "max_ratio": 0.33355556159599536, "bitwise_equal": false}, "0_virial": {"passed": true, "finite": true, "max_abs": 7.440286099757998e-05, "mean_abs": 4.985620084922241e-05, "max_relative": 1.4714845122841687e-05, "max_ratio": 0.1427565402627751, "bitwise_equal": false}, "0_stress": {"passed": true, "finite": true, "max_abs": 2.685574055564903e-09, "mean_abs": 2.074982249124145e-09, "max_relative": 1.0691958937955372e-05, "max_ratio": 0.00026777288197899044, "bitwise_equal": false}, "1_energy": {"passed": true, "finite": true, "max_abs": 2.8133392333984375e-05, "mean_abs": 2.8133392333984375e-05, "max_relative": 7.580951857504448e-10, "max_ratio": 7.580931429581814e-06, "bitwise_equal": false}, "1_forces": {"passed": true, "finite": true, "max_abs": 4.483156914147912e-06, "mean_abs": 9.03248236864816e-07, "max_relative": 0.04296409797590931, "max_ratio": 0.3690551714081974, "bitwise_equal": false}, "1_virial": {"passed": true, "finite": true, "max_abs": 4.099238883004119e-05, "mean_abs": 1.4892180924480019e-05, "max_relative": 1.626399347358029e-05, "max_ratio": 0.15643334146976215, "bitwise_equal": false}, "1_stress": {"passed": true, "finite": true, "max_abs": 1.5855046972318345e-09, "mean_abs": 6.310284352658936e-10, "max_relative": 1.4617473127173401e-05, "max_ratio": 0.00015837868206729078, "bitwise_equal": false}, "2_energy": {"passed": true, "finite": true, "max_abs": 2.6166439056396484e-05, "mean_abs": 2.6166439056396484e-05, "max_relative": 7.05128905144962e-10, "max_ratio": 7.051270049802818e-06, "bitwise_equal": false}, "2_forces": {"passed": true, "finite": true, "max_abs": 5.150550572707857e-06, "mean_abs": 9.104971860139301e-07, "max_relative": 0.00848035650300558, "max_ratio": 0.27860275748639024, "bitwise_equal": false}, "2_virial": {"passed": false, "finite": true, "max_abs": 0.0001093739360840118, "mean_abs": 4.6400631288048525e-05, "max_relative": 0.000256288674699523, "max_ratio": 1.5066132082220152, "bitwise_equal": false}, "2_stress": {"passed": true, "finite": true, "max_abs": 4.706895460199201e-09, "mean_abs": 2.3719541324566295e-09, "max_relative": 0.0002549724062461468, "max_ratio": 0.0004017878813312413, "bitwise_equal": false}}, {"0_energy": {"passed": true, "finite": true, "max_abs": 1.7821788787841797e-05, "mean_abs": 1.7821788787841797e-05, "max_relative": 4.802337764282713e-10, "max_ratio": 4.802324823726559e-06, "bitwise_equal": false}, "0_forces": {"passed": true, "finite": true, "max_abs": 5.0092467134277285e-06, "mean_abs": 9.146910072664108e-07, "max_relative": 0.005768027904387839, "max_ratio": 0.25206304738573826, "bitwise_equal": false}, "0_virial": {"passed": true, "finite": true, "max_abs": 8.904238183049529e-05, "mean_abs": 4.9794779707321465e-05, "max_relative": 7.67255975425693e-06, "max_ratio": 0.07576742928305333, "bitwise_equal": false}, "0_stress": {"passed": true, "finite": true, "max_abs": 3.8319292287869455e-09, "mean_abs": 2.51668933997219e-09, "max_relative": 6.952811946488008e-06, "max_ratio": 0.0003273815260532409, "bitwise_equal": false}, "1_energy": {"passed": true, "finite": true, "max_abs": 5.27501106262207e-05, "mean_abs": 5.27501106262207e-05, "max_relative": 1.421428473282084e-09, "max_ratio": 1.42142464304659e-05, "bitwise_equal": false}, "1_forces": {"passed": true, "finite": true, "max_abs": 4.4334826725389576e-06, "mean_abs": 9.03712043306938e-07, "max_relative": 0.021659841146778047, "max_ratio": 0.2560348612406004, "bitwise_equal": false}, "1_virial": {"passed": true, "finite": true, "max_abs": 0.00011154932775525594, "mean_abs": 5.0556706962683824e-05, "max_relative": 1.44654286966944e-05, "max_ratio": 0.1391340540373662, "bitwise_equal": false}, "1_stress": {"passed": true, "finite": true, "max_abs": 4.800513202229961e-09, "mean_abs": 2.6663310544559663e-09, "max_relative": 1.3561270113081683e-05, "max_ratio": 0.0004102277252605286, "bitwise_equal": false}, "2_energy": {"passed": true, "finite": true, "max_abs": 9.715557098388672e-06, "mean_abs": 9.715557098388672e-06, "max_relative": 2.61813238128995e-10, "max_ratio": 2.618125326008791e-06, "bitwise_equal": false}, "2_forces": {"passed": true, "finite": true, "max_abs": 4.431313683994631e-06, "mean_abs": 9.057077641526737e-07, "max_relative": 0.00852032258076752, "max_ratio": 0.290614836431981, "bitwise_equal": false}, "2_virial": {"passed": false, "finite": true, "max_abs": 4.987805443201765e-05, "mean_abs": 2.7012913177230462e-05, "max_relative": 0.0002144051028488081, "max_ratio": 1.2603470335234133, "bitwise_equal": false}, "2_stress": {"passed": true, "finite": true, "max_abs": 2.0668965696954422e-09, "mean_abs": 1.1189062796575815e-09, "max_relative": 0.00019382247305812142, "max_ratio": 0.00020639913063781194, "bitwise_equal": false}}], "wrappers": ["/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/megakernel_20261018/results/model_n4096_SPLIT_r0/inductor/6p/c6psnzostje44djrfofoyjfda4nemxgr37x23mi2ttc3n4hjmz5m.py"], "pbs_calls": 2, "gpu_end": "index, name, uuid, driver_version, clocks.current.sm [MHz], clocks.current.memory [MHz], temperature.gpu, power.draw [W]\n0, NVIDIA GeForce RTX 5090, GPU-8a1f47f6-0655-97e5-8ed5-433be97af788, 595.91.07, 2580 MHz, 13801 MHz, 56, 566.91 W\n1, NVIDIA GeForce RTX 5090, GPU-fcc63da0-f1b3-74c7-f868-681a40ef5f03, 595.91.07, 180 MHz, 405 MHz, 35, 12.92 W\n"}} From 8897b9bad8c718e03b71410119ab64b3fd212d4c Mon Sep 17 00:00:00 2001 From: Macqueen Ma-hnu Date: Mon, 26 Oct 2026 00:27:39 +0800 Subject: [PATCH 4/7] docs(pt): complete ECS multi-model and atom-scale validation --- .../ecs-edge-cohort-multimodel-results.json | 6369 ++-- .../ecs-edge-cohort-multimodel-summary.md | 12 +- .../ecs-edge-cohort-multimodel-update.md | 2 + .../ecs-validation-20261025/ACCURACY_TABLE.md | 266 + .../ecs-validation-20261025/README.md | 74 + .../ecs-validation-20261025/REPORT.md | 171 + .../ecs-validation-20261025/analyze.py | 250 + .../port-to-2ba617bc.patch | 720 + .../pro_cpu_load_check.json | 318 + .../ecs-validation-20261025/provenance.json | 2749 ++ .../ecs-validation-20261025/report.py | 223 + .../ecs-validation-20261025/run_matrix.py | 119 + .../ecs-validation-20261025/runs.json | 23956 ++++++++++++++++ .../ecs-validation-20261025/summary.json | 11584 ++++++++ .../ecs-validation-20261025/validation.json | 165 + .../ecs-validation-20261025/worker.py | 370 + 16 files changed, 44663 insertions(+), 2685 deletions(-) create mode 100644 doc/development/ecs-validation-20261025/ACCURACY_TABLE.md create mode 100644 doc/development/ecs-validation-20261025/README.md create mode 100644 doc/development/ecs-validation-20261025/REPORT.md create mode 100644 doc/development/ecs-validation-20261025/analyze.py create mode 100644 doc/development/ecs-validation-20261025/port-to-2ba617bc.patch create mode 100644 doc/development/ecs-validation-20261025/pro_cpu_load_check.json create mode 100644 doc/development/ecs-validation-20261025/provenance.json create mode 100644 doc/development/ecs-validation-20261025/report.py create mode 100644 doc/development/ecs-validation-20261025/run_matrix.py create mode 100644 doc/development/ecs-validation-20261025/runs.json create mode 100644 doc/development/ecs-validation-20261025/summary.json create mode 100644 doc/development/ecs-validation-20261025/validation.json create mode 100644 doc/development/ecs-validation-20261025/worker.py diff --git a/doc/development/ecs-edge-cohort-multimodel-results.json b/doc/development/ecs-edge-cohort-multimodel-results.json index 33c7790b62..5e00d3a703 100644 --- a/doc/development/ecs-edge-cohort-multimodel-results.json +++ b/doc/development/ecs-edge-cohort-multimodel-results.json @@ -3583,11 +3583,11 @@ } }, { - "run": "Pro_n512_TORCH_p0", + "run": "Pro_n4096_BASE_p0", "model": "Pro", - "n": 512, - "mode": "TORCH", - "gpu": "1", + "n": 4096, + "mode": "BASE", + "gpu": "0", "process": "p0", "status": "oom", "raw_status": "oom", @@ -3598,23 +3598,183 @@ "parameter_count": 22678990, "first_peak": null, "complete_peak": { - "allocated": 32676858368, - "reserved": 32847691776 + "allocated": 32029964800, + "reserved": 32136757248 } }, { - "run": "Pro_n64_BASE_p0", + "run": "Pro_n4096_BASE_p1", "model": "Pro", - "n": 64, + "n": 4096, + "mode": "BASE", + "gpu": "0", + "process": "p1", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 31929301504, + "reserved": 31989956608 + } + }, + { + "run": "Pro_n4096_BASE_p2", + "model": "Pro", + "n": 4096, "mode": "BASE", "gpu": "0", + "process": "p2", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 31929301504, + "reserved": 31989956608 + } + }, + { + "run": "Pro_n4096_ECS_p0", + "model": "Pro", + "n": 4096, + "mode": "ECS", + "gpu": "0", + "process": "p0", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 32029964800, + "reserved": 32136757248 + } + }, + { + "run": "Pro_n4096_ECS_p1", + "model": "Pro", + "n": 4096, + "mode": "ECS", + "gpu": "0", + "process": "p1", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 31929301504, + "reserved": 31989956608 + } + }, + { + "run": "Pro_n4096_ECS_p2", + "model": "Pro", + "n": 4096, + "mode": "ECS", + "gpu": "0", + "process": "p2", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 31929301504, + "reserved": 31989956608 + } + }, + { + "run": "Pro_n4096_TORCH_p0", + "model": "Pro", + "n": 4096, + "mode": "TORCH", + "gpu": "0", + "process": "p0", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 32290010624, + "reserved": 32598130688 + } + }, + { + "run": "Pro_n4096_TORCH_p1", + "model": "Pro", + "n": 4096, + "mode": "TORCH", + "gpu": "0", + "process": "p1", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 32189347328, + "reserved": 32598130688 + } + }, + { + "run": "Pro_n4096_TORCH_p2", + "model": "Pro", + "n": 4096, + "mode": "TORCH", + "gpu": "0", + "process": "p2", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 32189347328, + "reserved": 32598130688 + } + }, + { + "run": "Pro_n512_BASE_p0", + "model": "Pro", + "n": 512, + "mode": "BASE", + "gpu": "1", "process": "p0", "status": "completed", "raw_status": "completed", "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", "routes": [ { - "sha256": "31eaf0474fc2582f3f41c6b9d2d853d341219c9a4b3b73104ee1a919fd2d9a70", + "sha256": "03b0d8cf53980781bdeb784606657500fd2a867d6c32e0a268f968c63064e3ac", "opaque_cohort_calls": 0, "single_cohort_named_calls": 0, "stack_kernel_definitions": 22, @@ -3625,27 +3785,89 @@ "finite": true, "parameter_count": 22678990, "first_peak": { - "allocated": 3656641536, - "reserved": 3783262208 + "allocated": 26158820352, + "reserved": 27103592448 }, "complete_peak": { - "allocated": 3656641536, - "reserved": 3783262208 + "allocated": 26158820352, + "reserved": 27103592448 } }, { - "run": "Pro_n64_ECS_p0", + "run": "Pro_n512_BASE_p1", "model": "Pro", - "n": 64, + "n": 512, + "mode": "BASE", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "03b0d8cf53980781bdeb784606657500fd2a867d6c32e0a268f968c63064e3ac", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 26058157056, + "reserved": 27103592448 + }, + "complete_peak": { + "allocated": 26058157056, + "reserved": 27103592448 + } + }, + { + "run": "Pro_n512_BASE_p2", + "model": "Pro", + "n": 512, + "mode": "BASE", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "03b0d8cf53980781bdeb784606657500fd2a867d6c32e0a268f968c63064e3ac", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 26058157056, + "reserved": 27103592448 + }, + "complete_peak": { + "allocated": 26058157056, + "reserved": 27103592448 + } + }, + { + "run": "Pro_n512_ECS_p0", + "model": "Pro", + "n": 512, "mode": "ECS", - "gpu": "0", + "gpu": "1", "process": "p0", "status": "completed", "raw_status": "completed", "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", "routes": [ { - "sha256": "f2d0ae9335e31e7bd09b3d90af402d5dae9eb5ed20226a4d9d1890bff5793f0d", + "sha256": "f0b67d5cb103a03d0058b9d5a9658f88df29a8d5d164b405d8521335ab8ec1ce", "opaque_cohort_calls": 0, "single_cohort_named_calls": 0, "stack_kernel_definitions": 22, @@ -3656,27 +3878,27 @@ "finite": true, "parameter_count": 22678990, "first_peak": { - "allocated": 3656641536, - "reserved": 3783262208 + "allocated": 26158820352, + "reserved": 27103592448 }, "complete_peak": { - "allocated": 3656641536, - "reserved": 3783262208 + "allocated": 26158820352, + "reserved": 27103592448 } }, { - "run": "Pro_n64_ECS_p1", + "run": "Pro_n512_ECS_p1", "model": "Pro", - "n": 64, + "n": 512, "mode": "ECS", - "gpu": "0", + "gpu": "1", "process": "p1", "status": "completed", "raw_status": "completed", "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", "routes": [ { - "sha256": "f2d0ae9335e31e7bd09b3d90af402d5dae9eb5ed20226a4d9d1890bff5793f0d", + "sha256": "f0b67d5cb103a03d0058b9d5a9658f88df29a8d5d164b405d8521335ab8ec1ce", "opaque_cohort_calls": 0, "single_cohort_named_calls": 0, "stack_kernel_definitions": 22, @@ -3687,30 +3909,30 @@ "finite": true, "parameter_count": 22678990, "first_peak": { - "allocated": 3555978240, - "reserved": 3699376128 + "allocated": 26058157056, + "reserved": 27103592448 }, "complete_peak": { - "allocated": 3555978240, - "reserved": 3699376128 + "allocated": 26058157056, + "reserved": 27103592448 } }, { - "run": "Pro_n64_TORCH_p0", + "run": "Pro_n512_ECS_p2", "model": "Pro", - "n": 64, - "mode": "TORCH", - "gpu": "0", - "process": "p0", + "n": 512, + "mode": "ECS", + "gpu": "1", + "process": "p2", "status": "completed", "raw_status": "completed", "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", "routes": [ { - "sha256": "d54dc4989a6398f93d01ea9b60cfbc8d162c584844993d18a3afd203669452e4", + "sha256": "f0b67d5cb103a03d0058b9d5a9658f88df29a8d5d164b405d8521335ab8ec1ce", "opaque_cohort_calls": 0, "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, + "stack_kernel_definitions": 22, "single_cohort_marker": false } ], @@ -3718,38 +3940,633 @@ "finite": true, "parameter_count": 22678990, "first_peak": { - "allocated": 7752399872, - "reserved": 8145338368 + "allocated": 26058157056, + "reserved": 27103592448 }, "complete_peak": { - "allocated": 7752399872, - "reserved": 8145338368 + "allocated": 26058157056, + "reserved": 27103592448 } - } - ], - "comparisons": [ + }, { - "model": "Mini", + "run": "Pro_n512_TORCH_p0", + "model": "Pro", "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, + "mode": "TORCH", + "gpu": "1", + "process": "p0", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 32676858368, + "reserved": 32847691776 + } + }, + { + "run": "Pro_n512_TORCH_p1", + "model": "Pro", + "n": 512, + "mode": "TORCH", + "gpu": "1", + "process": "p1", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 32676858368, + "reserved": 32847691776 + } + }, + { + "run": "Pro_n512_TORCH_p2", + "model": "Pro", + "n": 512, + "mode": "TORCH", + "gpu": "1", + "process": "p2", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 32676858368, + "reserved": 32847691776 + } + }, + { + "run": "Pro_n64_BASE_p0", + "model": "Pro", + "n": 64, + "mode": "BASE", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "31eaf0474fc2582f3f41c6b9d2d853d341219c9a4b3b73104ee1a919fd2d9a70", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 3656641536, + "reserved": 3783262208 + }, + "complete_peak": { + "allocated": 3656641536, + "reserved": 3783262208 + } + }, + { + "run": "Pro_n64_BASE_p1", + "model": "Pro", + "n": 64, + "mode": "BASE", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "31eaf0474fc2582f3f41c6b9d2d853d341219c9a4b3b73104ee1a919fd2d9a70", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 3555978240, + "reserved": 3699376128 + }, + "complete_peak": { + "allocated": 3555978240, + "reserved": 3699376128 + } + }, + { + "run": "Pro_n64_BASE_p2", + "model": "Pro", + "n": 64, + "mode": "BASE", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "31eaf0474fc2582f3f41c6b9d2d853d341219c9a4b3b73104ee1a919fd2d9a70", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 3555978240, + "reserved": 3699376128 + }, + "complete_peak": { + "allocated": 3555978240, + "reserved": 3699376128 + } + }, + { + "run": "Pro_n64_ECS_p0", + "model": "Pro", + "n": 64, + "mode": "ECS", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "f2d0ae9335e31e7bd09b3d90af402d5dae9eb5ed20226a4d9d1890bff5793f0d", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 3656641536, + "reserved": 3783262208 + }, + "complete_peak": { + "allocated": 3656641536, + "reserved": 3783262208 + } + }, + { + "run": "Pro_n64_ECS_p1", + "model": "Pro", + "n": 64, + "mode": "ECS", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "f2d0ae9335e31e7bd09b3d90af402d5dae9eb5ed20226a4d9d1890bff5793f0d", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 3555978240, + "reserved": 3699376128 + }, + "complete_peak": { + "allocated": 3555978240, + "reserved": 3699376128 + } + }, + { + "run": "Pro_n64_ECS_p2", + "model": "Pro", + "n": 64, + "mode": "ECS", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "f2d0ae9335e31e7bd09b3d90af402d5dae9eb5ed20226a4d9d1890bff5793f0d", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 3555978240, + "reserved": 3699376128 + }, + "complete_peak": { + "allocated": 3555978240, + "reserved": 3699376128 + } + }, + { + "run": "Pro_n64_TORCH_p0", + "model": "Pro", + "n": 64, + "mode": "TORCH", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "d54dc4989a6398f93d01ea9b60cfbc8d162c584844993d18a3afd203669452e4", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 7752399872, + "reserved": 8145338368 + }, + "complete_peak": { + "allocated": 7752399872, + "reserved": 8145338368 + } + }, + { + "run": "Pro_n64_TORCH_p1", + "model": "Pro", + "n": 64, + "mode": "TORCH", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "d54dc4989a6398f93d01ea9b60cfbc8d162c584844993d18a3afd203669452e4", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 7752399872, + "reserved": 8145338368 + }, + "complete_peak": { + "allocated": 7752399872, + "reserved": 8145338368 + } + }, + { + "run": "Pro_n64_TORCH_p2", + "model": "Pro", + "n": 64, + "mode": "TORCH", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "d54dc4989a6398f93d01ea9b60cfbc8d162c584844993d18a3afd203669452e4", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 7752399872, + "reserved": 8145338368 + }, + "complete_peak": { + "allocated": 7752399872, + "reserved": 8145338368 + } + } + ], + "comparisons": [ + { + "model": "Mini", + "n": 512, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 1.9073486328125e-05 + ], + "worst_mean_abs": 1.9073486328125e-05, + "worst_max_relative": 4.107218964838322e-09, + "worst_tolerance_ratio": 4.107130523301802e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.742866099778254e-06, + 7.457862025717077e-06 + ], + "worst_mean_abs": 1.5914368669058111e-06, + "worst_max_relative": 0.022706930419765924, + "worst_tolerance_ratio": 0.5330082713608827 + }, + "virial": { + "comparisons": 27, + "failures": 5, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.9414789234506458e-05, + 0.00010075638114237506 + ], + "worst_mean_abs": 4.490057265028725e-05, + "worst_max_relative": 0.00037430960387721865, + "worst_tolerance_ratio": 2.325619491095815 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.477172333207992e-09, + 3.453298559868284e-08 + ], + "worst_mean_abs": 1.5742615091094245e-08, + "worst_max_relative": 0.0003677758905958666, + "worst_tolerance_ratio": 0.0033971439422584896 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 2.682209014892578e-05 + ], + "worst_mean_abs": 2.682209014892578e-05, + "worst_max_relative": 5.776065127309253e-09, + "worst_tolerance_ratio": 5.7759407439755024e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.57359965291937e-06, + 8.402122760209352e-06 + ], + "worst_mean_abs": 1.5750863560325835e-06, + "worst_max_relative": 0.022694625408821053, + "worst_tolerance_ratio": 0.6534603706501315 + }, + "virial": { + "comparisons": 81, + "failures": 14, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.16080184003431e-05, + 0.00010169408309934624 + ], + "worst_mean_abs": 4.00106575227562e-05, + "worst_max_relative": 0.0003347357074241739, + "worst_tolerance_ratio": 2.0800050112545687 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.439189795427348e-09, + 3.501115054815873e-08 + ], + "worst_mean_abs": 1.5725543107664093e-08, + "worst_max_relative": 0.0003245584752382981, + "worst_tolerance_ratio": 0.00326680948823279 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.940696716308594e-07, + 2.9087066650390625e-05 + ], + "worst_mean_abs": 2.9087066650390625e-05, + "worst_max_relative": 6.263508908435247e-09, + "worst_tolerance_ratio": 6.263374035092612e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.664545644545882e-06, + 7.634197266348508e-06 + ], + "worst_mean_abs": 1.5398084600272588e-06, + "worst_max_relative": 0.01527470489153405, + "worst_tolerance_ratio": 0.4897388680845277 + }, + "virial": { + "comparisons": 27, + "failures": 2, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.8218679983306174e-05, + 8.902023510870549e-05 + ], + "worst_mean_abs": 3.9107133109395065e-05, + "worst_max_relative": 0.00019313039028895026, + "worst_tolerance_ratio": 1.3209042372833233 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.846861273568413e-09, + 3.064780917938492e-08 + ], + "worst_mean_abs": 1.3624246735633962e-08, + "worst_max_relative": 0.00018943096336173764, + "worst_tolerance_ratio": 0.0029313792112797502 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-07, + 3.5762786865234375e-05 + ], + "worst_mean_abs": 3.5762786865234375e-05, + "worst_max_relative": 7.701035532087647e-09, + "worst_tolerance_ratio": 7.700869704207835e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.393918644180928e-06, + 8.533491972162466e-06 + ], + "worst_mean_abs": 1.557366035165822e-06, + "worst_max_relative": 0.017106518549718987, + "worst_tolerance_ratio": 0.6167101843814231 + }, + "virial": { + "comparisons": 81, + "failures": 6, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7799352178826666e-05, + 9.779887717087377e-05 + ], + "worst_mean_abs": 4.818979831123905e-05, + "worst_max_relative": 0.00024798785198630455, + "worst_tolerance_ratio": 1.5409381236871473 + }, + "stress": { + "comparisons": 81, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.7881393432617188e-07, - 1.9073486328125e-05 + 6.127945498257681e-09, + 3.3670112441208655e-08 ], - "worst_mean_abs": 1.9073486328125e-05, - "worst_max_relative": 4.107218964838322e-09, - "worst_tolerance_ratio": 4.107130523301802e-05 + "worst_mean_abs": 1.7532207829965393e-08, + "worst_max_relative": 0.00024433120825848395, + "worst_tolerance_ratio": 0.0027762899185930284 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-07, + 2.7835369110107422e-05 + ], + "worst_mean_abs": 2.7835369110107422e-05, + "worst_max_relative": 5.994272019885146e-09, + "worst_tolerance_ratio": 5.99414293762598e-05 }, "forces": { "comparisons": 27, @@ -3757,25 +4574,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.742866099778254e-06, - 7.457862025717077e-06 + 5.506870500937566e-06, + 8.241168691469625e-06 ], - "worst_mean_abs": 1.5914368669058111e-06, - "worst_max_relative": 0.022706930419765924, - "worst_tolerance_ratio": 0.5330082713608827 + "worst_mean_abs": 1.5532761270029396e-06, + "worst_max_relative": 0.025041921857038487, + "worst_tolerance_ratio": 0.70548537886412 }, "virial": { "comparisons": 27, - "failures": 5, + "failures": 4, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.9414789234506458e-05, - 0.00010075638114237506 + 2.3876290850655124e-05, + 0.00011017325687845414 ], - "worst_mean_abs": 4.490057265028725e-05, - "worst_max_relative": 0.00037430960387721865, - "worst_tolerance_ratio": 2.325619491095815 + "worst_mean_abs": 4.179817674949188e-05, + "worst_max_relative": 0.0003778793094029295, + "worst_tolerance_ratio": 2.3481402054115694 }, "stress": { "comparisons": 27, @@ -3783,88 +4600,280 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.477172333207992e-09, - 3.453298559868284e-08 + 7.637356115586247e-09, + 3.793035312921189e-08 + ], + "worst_mean_abs": 1.7095092173069228e-08, + "worst_max_relative": 0.00037597114801343295, + "worst_tolerance_ratio": 0.0031285542444244303 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.980232238769531e-07, + 2.7060508728027344e-05 + ], + "worst_mean_abs": 2.7060508728027344e-05, + "worst_max_relative": 5.827407916547872e-09, + "worst_tolerance_ratio": 5.827282427585e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.5380993724263305e-06, + 8.990824328591884e-06 + ], + "worst_mean_abs": 1.5569749687369438e-06, + "worst_max_relative": 0.021686035834322718, + "worst_tolerance_ratio": 0.6758367393868097 + }, + "virial": { + "comparisons": 81, + "failures": 15, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.569513067158141e-06, + 0.00011845013214184519 + ], + "worst_mean_abs": 4.965149203699997e-05, + "worst_max_relative": 0.0004456971202636045, + "worst_tolerance_ratio": 2.769559185063532 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.6002155639141128e-09, + 4.0779908550697685e-08 + ], + "worst_mean_abs": 1.924762625364578e-08, + "worst_max_relative": 0.00044005154582593144, + "worst_tolerance_ratio": 0.00336359111823531 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 3.8564205169677734e-05 + ], + "worst_mean_abs": 3.8564205169677734e-05, + "worst_max_relative": 8.304283310424971e-09, + "worst_tolerance_ratio": 8.30410449269479e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.663303791982656e-06, + 1.1937818188201277e-05 + ], + "worst_mean_abs": 2.152193331162966e-06, + "worst_max_relative": 0.027011933000708296, + "worst_tolerance_ratio": 0.8735868500593729 + }, + "virial": { + "comparisons": 243, + "failures": 32, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.733559977969207e-05, + 0.00023924866006552747 + ], + "worst_mean_abs": 8.830730162766464e-05, + "worst_max_relative": 0.00033093060677551645, + "worst_tolerance_ratio": 2.056393230686562 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.00678243900232e-08, + 8.236832076471967e-08 + ], + "worst_mean_abs": 3.3025334414918103e-08, + "worst_max_relative": 0.00032558612971655363, + "worst_tolerance_ratio": 0.006780276978945852 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 3.629922866821289e-05 + ], + "worst_mean_abs": 3.629922866821289e-05, + "worst_max_relative": 7.816941517443018e-09, + "worst_tolerance_ratio": 7.816773185329399e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.537658524015001e-06, + 1.3618943592419441e-05 + ], + "worst_mean_abs": 2.1200117095310723e-06, + "worst_max_relative": 0.03454607400986916, + "worst_tolerance_ratio": 0.817607665512196 + }, + "virial": { + "comparisons": 243, + "failures": 43, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.12305283659498e-05, + 0.00020637063148143397 + ], + "worst_mean_abs": 7.148432305993503e-05, + "worst_max_relative": 0.000424182295357236, + "worst_tolerance_ratio": 2.6358565297087027 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.796597570881021e-08, + 7.104910165756095e-08 ], - "worst_mean_abs": 1.5742615091094245e-08, - "worst_max_relative": 0.0003677758905958666, - "worst_tolerance_ratio": 0.0033971439422584896 + "worst_mean_abs": 2.87626209603984e-08, + "worst_max_relative": 0.00042234026847539377, + "worst_tolerance_ratio": 0.005860238429637883 } } }, { "model": "Mini", "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.0, - 2.682209014892578e-05 + 1.1920928955078125e-07, + 3.224611282348633e-05 ], - "worst_mean_abs": 2.682209014892578e-05, - "worst_max_relative": 5.776065127309253e-09, - "worst_tolerance_ratio": 5.7759407439755024e-05 + "worst_mean_abs": 3.224611282348633e-05, + "worst_max_relative": 6.943767091573225e-09, + "worst_tolerance_ratio": 6.943617570099292e-05 }, "forces": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.57359965291937e-06, - 8.402122760209352e-06 + 5.3174597951510805e-06, + 8.22734991834384e-06 ], - "worst_mean_abs": 1.5750863560325835e-06, - "worst_max_relative": 0.022694625408821053, - "worst_tolerance_ratio": 0.6534603706501315 + "worst_mean_abs": 1.5536268872231973e-06, + "worst_max_relative": 0.024867903762799057, + "worst_tolerance_ratio": 0.651250070953936 }, "virial": { - "comparisons": 81, - "failures": 14, + "comparisons": 243, + "failures": 38, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.16080184003431e-05, - 0.00010169408309934624 + 7.0912217609020445e-06, + 0.00011696194470545151 ], - "worst_mean_abs": 4.00106575227562e-05, - "worst_max_relative": 0.0003347357074241739, - "worst_tolerance_ratio": 2.0800050112545687 + "worst_mean_abs": 4.99161199233939e-05, + "worst_max_relative": 0.0003482517415345143, + "worst_tolerance_ratio": 2.163954326281322 }, "stress": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.439189795427348e-09, - 3.501115054815873e-08 + 2.441359663041265e-09, + 4.026755667796422e-08 ], - "worst_mean_abs": 1.5725543107664093e-08, - "worst_max_relative": 0.0003245584752382981, - "worst_tolerance_ratio": 0.00326680948823279 + "worst_mean_abs": 2.1456696329332512e-08, + "worst_max_relative": 0.00034341701619046487, + "worst_tolerance_ratio": 0.0033146845764085 } } }, { "model": "Mini", - "n": 512, - "left": "BASE", - "right": "BASE", + "n": 1000, + "left": "TORCH", + "right": "TORCH", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { "comparisons": 27, @@ -3872,12 +4881,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.940696716308594e-07, - 2.9087066650390625e-05 + 7.748603820800781e-07, + 3.9517879486083984e-05 ], - "worst_mean_abs": 2.9087066650390625e-05, - "worst_max_relative": 6.263508908435247e-09, - "worst_tolerance_ratio": 6.263374035092612e-05 + "worst_mean_abs": 3.9517879486083984e-05, + "worst_max_relative": 4.356669741437475e-09, + "worst_tolerance_ratio": 4.356621711628606e-05 }, "forces": { "comparisons": 27, @@ -3885,25 +4894,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.664545644545882e-06, - 7.634197266348508e-06 + 5.942365068123401e-06, + 8.478775190390309e-06 ], - "worst_mean_abs": 1.5398084600272588e-06, - "worst_max_relative": 0.01527470489153405, - "worst_tolerance_ratio": 0.4897388680845277 + "worst_mean_abs": 1.5863148284608308e-06, + "worst_max_relative": 0.028526428101089317, + "worst_tolerance_ratio": 0.64037145633476 }, "virial": { "comparisons": 27, - "failures": 2, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.8218679983306174e-05, - 8.902023510870549e-05 + 3.820122779529811e-05, + 0.00014857636131182517 ], - "worst_mean_abs": 3.9107133109395065e-05, - "worst_max_relative": 0.00019313039028895026, - "worst_tolerance_ratio": 1.3209042372833233 + "worst_mean_abs": 7.005933384760275e-05, + "worst_max_relative": 7.778825565317479e-05, + "worst_tolerance_ratio": 0.6828019056856349 }, "stress": { "comparisons": 27, @@ -3911,24 +4920,24 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.846861273568413e-09, - 3.064780917938492e-08 + 6.733765378630352e-09, + 2.6189691162276096e-08 ], - "worst_mean_abs": 1.3624246735633962e-08, - "worst_max_relative": 0.00018943096336173764, - "worst_tolerance_ratio": 0.0029313792112797502 + "worst_mean_abs": 1.457033769568098e-08, + "worst_max_relative": 7.733627472768208e-05, + "worst_tolerance_ratio": 0.002168605657331468 } } }, { "model": "Mini", - "n": 512, - "left": "BASE", - "right": "BASE", + "n": 1000, + "left": "TORCH", + "right": "TORCH", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { "comparisons": 81, @@ -3936,12 +4945,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.384185791015625e-07, - 3.5762786865234375e-05 + 4.172325134277344e-07, + 5.251169204711914e-05 ], - "worst_mean_abs": 3.5762786865234375e-05, - "worst_max_relative": 7.701035532087647e-09, - "worst_tolerance_ratio": 7.700869704207835e-05 + "worst_mean_abs": 5.251169204711914e-05, + "worst_max_relative": 5.789179542546182e-09, + "worst_tolerance_ratio": 5.789115720130659e-05 }, "forces": { "comparisons": 81, @@ -3949,25 +4958,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.393918644180928e-06, - 8.533491972162466e-06 + 6.128346421663267e-06, + 8.85906298431216e-06 ], - "worst_mean_abs": 1.557366035165822e-06, - "worst_max_relative": 0.017106518549718987, - "worst_tolerance_ratio": 0.6167101843814231 + "worst_mean_abs": 1.5858116145045023e-06, + "worst_max_relative": 0.035866367370026735, + "worst_tolerance_ratio": 0.6952924318191501 }, "virial": { "comparisons": 81, - "failures": 6, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.7799352178826666e-05, - 9.779887717087377e-05 + 2.881299246926261e-05, + 0.00018624514531495606 ], - "worst_mean_abs": 4.818979831123905e-05, - "worst_max_relative": 0.00024798785198630455, - "worst_tolerance_ratio": 1.5409381236871473 + "worst_mean_abs": 7.087044207242254e-05, + "worst_max_relative": 8.846122945552217e-05, + "worst_tolerance_ratio": 0.7997259680431392 }, "stress": { "comparisons": 81, @@ -3975,24 +4984,24 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.127945498257681e-09, - 3.3670112441208655e-08 + 4.860993178725653e-09, + 3.282960218606301e-08 ], - "worst_mean_abs": 1.7532207829965393e-08, - "worst_max_relative": 0.00024433120825848395, - "worst_tolerance_ratio": 0.0027762899185930284 + "worst_mean_abs": 1.508338001173599e-08, + "worst_max_relative": 8.597899611759951e-05, + "worst_tolerance_ratio": 0.0027151275182070653 } } }, { "model": "Mini", - "n": 512, - "left": "ECS", - "right": "ECS", + "n": 1000, + "left": "BASE", + "right": "BASE", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { "comparisons": 27, @@ -4000,12 +5009,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.384185791015625e-07, - 2.7835369110107422e-05 + 5.364418029785156e-07, + 3.4749507904052734e-05 ], - "worst_mean_abs": 2.7835369110107422e-05, - "worst_max_relative": 5.994272019885146e-09, - "worst_tolerance_ratio": 5.99414293762598e-05 + "worst_mean_abs": 3.4749507904052734e-05, + "worst_max_relative": 3.830978073473516e-09, + "worst_tolerance_ratio": 3.8309358391165834e-05 }, "forces": { "comparisons": 27, @@ -4013,25 +5022,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.506870500937566e-06, - 8.241168691469625e-06 + 5.791463756565918e-06, + 8.083614283727059e-06 ], - "worst_mean_abs": 1.5532761270029396e-06, - "worst_max_relative": 0.025041921857038487, - "worst_tolerance_ratio": 0.70548537886412 + "worst_mean_abs": 1.5654142928888798e-06, + "worst_max_relative": 0.022267338382567378, + "worst_tolerance_ratio": 0.5262451100879552 }, "virial": { "comparisons": 27, - "failures": 4, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.3876290850655124e-05, - 0.00011017325687845414 + 2.8142286400800742e-05, + 9.626649527660902e-05 ], - "worst_mean_abs": 4.179817674949188e-05, - "worst_max_relative": 0.0003778793094029295, - "worst_tolerance_ratio": 2.3481402054115694 + "worst_mean_abs": 4.906634041638528e-05, + "worst_max_relative": 7.868577486122334e-05, + "worst_tolerance_ratio": 0.7113450717653167 }, "stress": { "comparisons": 27, @@ -4039,24 +5048,24 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.637356115586247e-09, - 3.793035312921189e-08 + 4.86420350488204e-09, + 1.6968983211629318e-08 ], - "worst_mean_abs": 1.7095092173069228e-08, - "worst_max_relative": 0.00037597114801343295, - "worst_tolerance_ratio": 0.0031285542444244303 + "worst_mean_abs": 1.0269484017041576e-08, + "worst_max_relative": 7.670224268113352e-05, + "worst_tolerance_ratio": 0.0016003199025075713 } } }, { "model": "Mini", - "n": 512, - "left": "ECS", - "right": "ECS", + "n": 1000, + "left": "BASE", + "right": "BASE", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { "comparisons": 81, @@ -4064,12 +5073,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.980232238769531e-07, - 2.7060508728027344e-05 + 1.7881393432617188e-07, + 5.239248275756836e-05 ], - "worst_mean_abs": 2.7060508728027344e-05, - "worst_max_relative": 5.827407916547872e-09, - "worst_tolerance_ratio": 5.827282427585e-05 + "worst_mean_abs": 5.239248275756836e-05, + "worst_max_relative": 5.77603728899446e-09, + "worst_tolerance_ratio": 5.775973611464394e-05 }, "forces": { "comparisons": 81, @@ -4077,25 +5086,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.5380993724263305e-06, - 8.990824328591884e-06 + 5.876774522572958e-06, + 9.180504784378485e-06 ], - "worst_mean_abs": 1.5569749687369438e-06, - "worst_max_relative": 0.021686035834322718, - "worst_tolerance_ratio": 0.6758367393868097 + "worst_mean_abs": 1.5166922351791586e-06, + "worst_max_relative": 0.024991496343053986, + "worst_tolerance_ratio": 0.6145430677102461 }, "virial": { "comparisons": 81, - "failures": 15, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.569513067158141e-06, - 0.00011845013214184519 + 1.5804571143362978e-05, + 0.00015448823683072987 ], - "worst_mean_abs": 4.965149203699997e-05, - "worst_max_relative": 0.0004456971202636045, - "worst_tolerance_ratio": 2.769559185063532 + "worst_mean_abs": 6.872088453079172e-05, + "worst_max_relative": 8.254997716815356e-05, + "worst_tolerance_ratio": 0.7255680521387728 }, "stress": { "comparisons": 81, @@ -4103,152 +5112,152 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.6002155639141128e-09, - 4.0779908550697685e-08 + 2.7208376095233e-09, + 2.723178287034056e-08 ], - "worst_mean_abs": 1.924762625364578e-08, - "worst_max_relative": 0.00044005154582593144, - "worst_tolerance_ratio": 0.00336359111823531 + "worst_mean_abs": 1.2526201209286545e-08, + "worst_max_relative": 8.145594315865483e-05, + "worst_tolerance_ratio": 0.002248987714180648 } } }, { "model": "Mini", - "n": 512, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", + "n": 1000, + "left": "ECS", + "right": "ECS", + "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.0, - 3.8564205169677734e-05 + 2.384185791015625e-07, + 3.1948089599609375e-05 ], - "worst_mean_abs": 3.8564205169677734e-05, - "worst_max_relative": 8.304283310424971e-09, - "worst_tolerance_ratio": 8.30410449269479e-05 + "worst_mean_abs": 3.1948089599609375e-05, + "worst_max_relative": 3.52254103850891e-09, + "worst_tolerance_ratio": 3.522502200009603e-05 }, "forces": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.663303791982656e-06, - 1.1937818188201277e-05 + 5.834985036701212e-06, + 8.293950088500424e-06 ], - "worst_mean_abs": 2.152193331162966e-06, - "worst_max_relative": 0.027011933000708296, - "worst_tolerance_ratio": 0.8735868500593729 + "worst_mean_abs": 1.5108064601431307e-06, + "worst_max_relative": 0.022459755247186467, + "worst_tolerance_ratio": 0.56193002673636 }, "virial": { - "comparisons": 243, - "failures": 32, + "comparisons": 27, + "failures": 1, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.733559977969207e-05, - 0.00023924866006552747 + 3.425416394353675e-05, + 0.00011839176586647682 ], - "worst_mean_abs": 8.830730162766464e-05, - "worst_max_relative": 0.00033093060677551645, - "worst_tolerance_ratio": 2.056393230686562 + "worst_mean_abs": 6.122121819412346e-05, + "worst_max_relative": 0.0001267831416301408, + "worst_tolerance_ratio": 1.1128590436428347 }, "stress": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.00678243900232e-08, - 8.236832076471967e-08 + 6.018658010506755e-09, + 2.086902490400222e-08 ], - "worst_mean_abs": 3.3025334414918103e-08, - "worst_max_relative": 0.00032558612971655363, - "worst_tolerance_ratio": 0.006780276978945852 + "worst_mean_abs": 1.1913043066248526e-08, + "worst_max_relative": 0.00012627819848035887, + "worst_tolerance_ratio": 0.001730394962176401 } } }, { "model": "Mini", - "n": 512, + "n": 1000, "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", + "right": "ECS", + "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.1920928955078125e-07, - 3.629922866821289e-05 + 2.384185791015625e-07, + 4.5180320739746094e-05 ], - "worst_mean_abs": 3.629922866821289e-05, - "worst_max_relative": 7.816941517443018e-09, - "worst_tolerance_ratio": 7.816773185329399e-05 + "worst_mean_abs": 4.5180320739746094e-05, + "worst_max_relative": 4.981503938591997e-09, + "worst_tolerance_ratio": 4.9814490139976675e-05 }, "forces": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.537658524015001e-06, - 1.3618943592419441e-05 + 5.954550295506067e-06, + 8.708296609150068e-06 ], - "worst_mean_abs": 2.1200117095310723e-06, - "worst_max_relative": 0.03454607400986916, - "worst_tolerance_ratio": 0.817607665512196 + "worst_mean_abs": 1.5252042484687849e-06, + "worst_max_relative": 0.024314376078653954, + "worst_tolerance_ratio": 0.5975201411033858 }, "virial": { - "comparisons": 243, - "failures": 43, + "comparisons": 81, + "failures": 2, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.12305283659498e-05, - 0.00020637063148143397 + 1.6786013901537444e-05, + 0.00012927349403923927 ], - "worst_mean_abs": 7.148432305993503e-05, - "worst_max_relative": 0.000424182295357236, - "worst_tolerance_ratio": 2.6358565297087027 + "worst_mean_abs": 8.633279841221666e-05, + "worst_max_relative": 0.0001512958390354819, + "worst_tolerance_ratio": 1.3280231154655262 }, "stress": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.796597570881021e-08, - 7.104910165756095e-08 + 2.9588860285534313e-09, + 2.2787157084869225e-08 ], - "worst_mean_abs": 2.87626209603984e-08, - "worst_max_relative": 0.00042234026847539377, - "worst_tolerance_ratio": 0.005860238429637883 + "worst_mean_abs": 1.6278732358084545e-08, + "worst_max_relative": 0.00014966355988451065, + "worst_tolerance_ratio": 0.0018920518398214939 } } }, { "model": "Mini", - "n": 512, - "left": "ECS", - "right": "BASE", + "n": 1000, + "left": "BASE", + "right": "TORCH", "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { "comparisons": 243, @@ -4257,11 +5266,11 @@ "all_bitwise": false, "max_abs_range": [ 1.1920928955078125e-07, - 3.224611282348633e-05 + 6.008148193359375e-05 ], - "worst_mean_abs": 3.224611282348633e-05, - "worst_max_relative": 6.943767091573225e-09, - "worst_tolerance_ratio": 6.943617570099292e-05 + "worst_mean_abs": 6.008148193359375e-05, + "worst_max_relative": 6.623715072515949e-09, + "worst_tolerance_ratio": 6.623642049820323e-05 }, "forces": { "comparisons": 243, @@ -4269,25 +5278,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.3174597951510805e-06, - 8.22734991834384e-06 + 8.291399922200071e-06, + 1.2718351468876676e-05 ], - "worst_mean_abs": 1.5536268872231973e-06, - "worst_max_relative": 0.024867903762799057, - "worst_tolerance_ratio": 0.651250070953936 + "worst_mean_abs": 2.1091967869192595e-06, + "worst_max_relative": 0.028304485787336776, + "worst_tolerance_ratio": 0.8790025137802328 }, "virial": { "comparisons": 243, - "failures": 38, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.0912217609020445e-06, - 0.00011696194470545151 + 0.0001898050359869785, + 0.0004217280413456592 ], - "worst_mean_abs": 4.99161199233939e-05, - "worst_max_relative": 0.0003482517415345143, - "worst_tolerance_ratio": 2.163954326281322 + "worst_mean_abs": 0.00012275276463464331, + "worst_max_relative": 0.00011132661163576985, + "worst_tolerance_ratio": 0.9771910074031923 }, "stress": { "comparisons": 243, @@ -4295,152 +5304,152 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.441359663041265e-09, - 4.026755667796422e-08 + 3.345710737276408e-08, + 7.433838774759116e-08 ], - "worst_mean_abs": 2.1456696329332512e-08, - "worst_max_relative": 0.00034341701619046487, - "worst_tolerance_ratio": 0.0033146845764085 + "worst_mean_abs": 2.7130958842371993e-08, + "worst_max_relative": 0.00010724889769686823, + "worst_tolerance_ratio": 0.006129491384645123 } } }, { "model": "Mini", "n": 1000, - "left": "TORCH", + "left": "ECS", "right": "TORCH", - "scope": "within_process", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": true, + "all_passed": false, "metrics": { "energy": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.748603820800781e-07, - 3.9517879486083984e-05 + 5.960464477539063e-08, + 4.5418739318847656e-05 ], - "worst_mean_abs": 3.9517879486083984e-05, - "worst_max_relative": 4.356669741437475e-09, - "worst_tolerance_ratio": 4.356621711628606e-05 + "worst_mean_abs": 4.5418739318847656e-05, + "worst_max_relative": 5.007213208806261e-09, + "worst_tolerance_ratio": 5.0071580071249995e-05 }, "forces": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.942365068123401e-06, - 8.478775190390309e-06 + 7.863358360671313e-06, + 1.1660318759654231e-05 ], - "worst_mean_abs": 1.5863148284608308e-06, - "worst_max_relative": 0.028526428101089317, - "worst_tolerance_ratio": 0.64037145633476 + "worst_mean_abs": 2.122320797962656e-06, + "worst_max_relative": 0.03168218354665909, + "worst_tolerance_ratio": 0.8441338653785047 }, "virial": { - "comparisons": 27, - "failures": 0, + "comparisons": 243, + "failures": 1, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.820122779529811e-05, - 0.00014857636131182517 + 0.0002126726797939682, + 0.00038946517976512496 ], - "worst_mean_abs": 7.005933384760275e-05, - "worst_max_relative": 7.778825565317479e-05, - "worst_tolerance_ratio": 0.6828019056856349 + "worst_mean_abs": 0.00013147606721784931, + "worst_max_relative": 0.00011711922097857225, + "worst_tolerance_ratio": 1.0280470606493994 }, "stress": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.733765378630352e-09, - 2.6189691162276096e-08 + 3.74880078715667e-08, + 6.86513836126168e-08 ], - "worst_mean_abs": 1.457033769568098e-08, - "worst_max_relative": 7.733627472768208e-05, - "worst_tolerance_ratio": 0.002168605657331468 + "worst_mean_abs": 2.8893696401648187e-08, + "worst_max_relative": 0.00011674111640792188, + "worst_tolerance_ratio": 0.005660575607669639 } } }, { "model": "Mini", "n": 1000, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": true, + "all_passed": false, "metrics": { "energy": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.172325134277344e-07, - 5.251169204711914e-05 + 2.384185791015625e-07, + 5.2988529205322266e-05 ], - "worst_mean_abs": 5.251169204711914e-05, - "worst_max_relative": 5.789179542546182e-09, - "worst_tolerance_ratio": 5.789115720130659e-05 + "worst_mean_abs": 5.2988529205322266e-05, + "worst_max_relative": 5.8417487484824516e-09, + "worst_tolerance_ratio": 5.841684346520871e-05 }, "forces": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.128346421663267e-06, - 8.85906298431216e-06 + 5.501919348560591e-06, + 9.309888041819647e-06 ], - "worst_mean_abs": 1.5858116145045023e-06, - "worst_max_relative": 0.035866367370026735, - "worst_tolerance_ratio": 0.6952924318191501 + "worst_mean_abs": 1.5298866226064236e-06, + "worst_max_relative": 0.03154387792380262, + "worst_tolerance_ratio": 0.6930236755093616 }, "virial": { - "comparisons": 81, - "failures": 0, + "comparisons": 243, + "failures": 8, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.881299246926261e-05, - 0.00018624514531495606 + 1.849106578788451e-05, + 0.00015355807795458531 ], - "worst_mean_abs": 7.087044207242254e-05, - "worst_max_relative": 8.846122945552217e-05, - "worst_tolerance_ratio": 0.7997259680431392 + "worst_mean_abs": 8.145100116310446e-05, + "worst_max_relative": 0.00014648826238079898, + "worst_tolerance_ratio": 1.2858467375364764 }, "stress": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.860993178725653e-09, - 3.282960218606301e-08 + 3.2594370848182397e-09, + 2.706782291014842e-08 ], - "worst_mean_abs": 1.508338001173599e-08, - "worst_max_relative": 8.597899611759951e-05, - "worst_tolerance_ratio": 0.0027151275182070653 + "worst_mean_abs": 1.5349518719225493e-08, + "worst_max_relative": 0.00014558851045815208, + "worst_tolerance_ratio": 0.0023133727922297533 } } }, { "model": "Mini", - "n": 1000, - "left": "BASE", - "right": "BASE", + "n": 4096, + "left": "TORCH", + "right": "TORCH", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": true, + "all_passed": false, "metrics": { "energy": { "comparisons": 27, @@ -4448,12 +5457,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.364418029785156e-07, - 3.4749507904052734e-05 + 5.960464477539063e-08, + 6.22868537902832e-05 ], - "worst_mean_abs": 3.4749507904052734e-05, - "worst_max_relative": 3.830978073473516e-09, - "worst_tolerance_ratio": 3.8309358391165834e-05 + "worst_mean_abs": 6.22868537902832e-05, + "worst_max_relative": 1.676505295726619e-09, + "worst_tolerance_ratio": 1.6765007832777307e-05 }, "forces": { "comparisons": 27, @@ -4461,25 +5470,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.791463756565918e-06, - 8.083614283727059e-06 + 7.276442724135634e-06, + 9.493022817164132e-06 ], - "worst_mean_abs": 1.5654142928888798e-06, - "worst_max_relative": 0.022267338382567378, - "worst_tolerance_ratio": 0.5262451100879552 + "worst_mean_abs": 1.5604888942388797e-06, + "worst_max_relative": 0.7221657199292606, + "worst_tolerance_ratio": 0.6766329649396017 }, "virial": { "comparisons": 27, - "failures": 0, + "failures": 8, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.8142286400800742e-05, - 9.626649527660902e-05 + 5.061616724866269e-05, + 0.0004385140394447262 ], - "worst_mean_abs": 4.906634041638528e-05, - "worst_max_relative": 7.868577486122334e-05, - "worst_tolerance_ratio": 0.7113450717653167 + "worst_mean_abs": 0.00014062627027793754, + "worst_max_relative": 0.003646330978402356, + "worst_tolerance_ratio": 12.078487533882 }, "stress": { "comparisons": 27, @@ -4487,24 +5496,24 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.86420350488204e-09, - 1.6968983211629318e-08 + 2.0662720149255617e-09, + 1.887140405054666e-08 ], - "worst_mean_abs": 1.0269484017041576e-08, - "worst_max_relative": 7.670224268113352e-05, - "worst_tolerance_ratio": 0.0016003199025075713 + "worst_mean_abs": 8.27017624404072e-09, + "worst_max_relative": 0.003516495170973442, + "worst_tolerance_ratio": 0.0015584606357800237 } } }, { "model": "Mini", - "n": 1000, - "left": "BASE", - "right": "BASE", + "n": 4096, + "left": "TORCH", + "right": "TORCH", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": true, + "all_passed": false, "metrics": { "energy": { "comparisons": 81, @@ -4512,12 +5521,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.7881393432617188e-07, - 5.239248275756836e-05 + 5.960464477539063e-08, + 8.33272933959961e-05 ], - "worst_mean_abs": 5.239248275756836e-05, - "worst_max_relative": 5.77603728899446e-09, - "worst_tolerance_ratio": 5.775973611464394e-05 + "worst_mean_abs": 8.33272933959961e-05, + "worst_max_relative": 2.242938611229538e-09, + "worst_tolerance_ratio": 2.2429325738798685e-05 }, "forces": { "comparisons": 81, @@ -4525,25 +5534,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.876774522572958e-06, - 9.180504784378485e-06 + 6.791250073412414e-06, + 9.901864735928356e-06 ], - "worst_mean_abs": 1.5166922351791586e-06, - "worst_max_relative": 0.024991496343053986, - "worst_tolerance_ratio": 0.6145430677102461 + "worst_mean_abs": 1.5610593938481738e-06, + "worst_max_relative": 0.4002606254997042, + "worst_tolerance_ratio": 0.8863501561494904 }, "virial": { "comparisons": 81, - "failures": 0, + "failures": 23, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.5804571143362978e-05, - 0.00015448823683072987 + 5.726828905849857e-05, + 0.00038339606288673167 ], - "worst_mean_abs": 6.872088453079172e-05, - "worst_max_relative": 8.254997716815356e-05, - "worst_tolerance_ratio": 0.7255680521387728 + "worst_mean_abs": 0.00012411605811251606, + "worst_max_relative": 0.005435660459240495, + "worst_tolerance_ratio": 18.005649373090712 }, "stress": { "comparisons": 81, @@ -4551,20 +5560,20 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.7208376095233e-09, - 2.723178287034056e-08 + 2.0838191543397916e-09, + 1.6499407919784437e-08 ], - "worst_mean_abs": 1.2526201209286545e-08, - "worst_max_relative": 8.145594315865483e-05, - "worst_tolerance_ratio": 0.002248987714180648 + "worst_mean_abs": 6.620879229180118e-09, + "worst_max_relative": 0.005318989456488086, + "worst_tolerance_ratio": 0.0013625734568615139 } } }, { "model": "Mini", - "n": 1000, - "left": "ECS", - "right": "ECS", + "n": 4096, + "left": "BASE", + "right": "BASE", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -4576,12 +5585,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.384185791015625e-07, - 3.1948089599609375e-05 + 3.0994415283203125e-06, + 0.0001398921012878418 ], - "worst_mean_abs": 3.1948089599609375e-05, - "worst_max_relative": 3.52254103850891e-09, - "worst_tolerance_ratio": 3.522502200009603e-05 + "worst_mean_abs": 0.0001398921012878418, + "worst_max_relative": 3.765317327969958e-09, + "worst_tolerance_ratio": 3.76530719331883e-05 }, "forces": { "comparisons": 27, @@ -4589,25 +5598,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.834985036701212e-06, - 8.293950088500424e-06 + 7.087830623753177e-06, + 8.594069466738574e-06 ], - "worst_mean_abs": 1.5108064601431307e-06, - "worst_max_relative": 0.022459755247186467, - "worst_tolerance_ratio": 0.56193002673636 + "worst_mean_abs": 1.5664331380786528e-06, + "worst_max_relative": 0.20380743711916677, + "worst_tolerance_ratio": 0.7154379637523316 }, "virial": { "comparisons": 27, - "failures": 1, + "failures": 8, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.425416394353675e-05, - 0.00011839176586647682 + 4.909067436908998e-05, + 0.0002918480684002134 ], - "worst_mean_abs": 6.122121819412346e-05, - "worst_max_relative": 0.0001267831416301408, - "worst_tolerance_ratio": 1.1128590436428347 + "worst_mean_abs": 0.00014369099240547141, + "worst_max_relative": 0.002270021526724481, + "worst_tolerance_ratio": 7.532844258693963 }, "stress": { "comparisons": 27, @@ -4615,20 +5624,20 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.018658010506755e-09, - 2.086902490400222e-08 + 2.043441544284392e-09, + 1.2559649920779181e-08 ], - "worst_mean_abs": 1.1913043066248526e-08, - "worst_max_relative": 0.00012627819848035887, - "worst_tolerance_ratio": 0.001730394962176401 + "worst_mean_abs": 6.742370555133717e-09, + "worst_max_relative": 0.002241454623967595, + "worst_tolerance_ratio": 0.0010381545420209263 } } }, { "model": "Mini", - "n": 1000, - "left": "ECS", - "right": "ECS", + "n": 4096, + "left": "BASE", + "right": "BASE", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -4640,12 +5649,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.384185791015625e-07, - 4.5180320739746094e-05 + 3.5762786865234375e-07, + 0.00010132789611816406 ], - "worst_mean_abs": 4.5180320739746094e-05, - "worst_max_relative": 4.981503938591997e-09, - "worst_tolerance_ratio": 4.9814490139976675e-05 + "worst_mean_abs": 0.00010132789611816406, + "worst_max_relative": 2.727328283617756e-09, + "worst_tolerance_ratio": 2.727320942796688e-05 }, "forces": { "comparisons": 81, @@ -4653,25 +5662,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.954550295506067e-06, - 8.708296609150068e-06 + 6.8528062333594875e-06, + 9.191420122678373e-06 ], - "worst_mean_abs": 1.5252042484687849e-06, - "worst_max_relative": 0.024314376078653954, - "worst_tolerance_ratio": 0.5975201411033858 + "worst_mean_abs": 1.5732223744548312e-06, + "worst_max_relative": 0.18329228341065706, + "worst_tolerance_ratio": 0.7799507458293996 }, "virial": { "comparisons": 81, - "failures": 2, + "failures": 22, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.6786013901537444e-05, - 0.00012927349403923927 + 4.476562237698545e-05, + 0.0003680483274592916 ], - "worst_mean_abs": 8.633279841221666e-05, - "worst_max_relative": 0.0001512958390354819, - "worst_tolerance_ratio": 1.3280231154655262 + "worst_mean_abs": 0.00015585519983603766, + "worst_max_relative": 0.002624879950042877, + "worst_tolerance_ratio": 8.723608658126022 }, "stress": { "comparisons": 81, @@ -4679,148 +5688,148 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.9588860285534313e-09, - 2.2787157084869225e-08 + 1.8939265835423054e-09, + 1.5838919790317485e-08 ], - "worst_mean_abs": 1.6278732358084545e-08, - "worst_max_relative": 0.00014966355988451065, - "worst_tolerance_ratio": 0.0018920518398214939 + "worst_mean_abs": 7.895335861396732e-09, + "worst_max_relative": 0.002555107312160029, + "worst_tolerance_ratio": 0.00130921213401913 } } }, { "model": "Mini", - "n": 1000, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", + "n": 4096, + "left": "ECS", + "right": "ECS", + "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": true, + "all_passed": false, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.1920928955078125e-07, - 6.008148193359375e-05 + 8.940696716308594e-07, + 6.74128532409668e-05 ], - "worst_mean_abs": 6.008148193359375e-05, - "worst_max_relative": 6.623715072515949e-09, - "worst_tolerance_ratio": 6.623642049820323e-05 + "worst_mean_abs": 6.74128532409668e-05, + "worst_max_relative": 1.8145662145648e-09, + "worst_tolerance_ratio": 1.8145613302711886e-05 }, "forces": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.291399922200071e-06, - 1.2718351468876676e-05 + 6.750748702488707e-06, + 9.570433796790567e-06 ], - "worst_mean_abs": 2.1091967869192595e-06, - "worst_max_relative": 0.028304485787336776, - "worst_tolerance_ratio": 0.8790025137802328 + "worst_mean_abs": 1.5654228514700462e-06, + "worst_max_relative": 0.1940384920707749, + "worst_tolerance_ratio": 0.6900402518680474 }, "virial": { - "comparisons": 243, - "failures": 0, + "comparisons": 27, + "failures": 8, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.0001898050359869785, - 0.0004217280413456592 + 8.40954579843789e-05, + 0.00031341504619852856 ], - "worst_mean_abs": 0.00012275276463464331, - "worst_max_relative": 0.00011132661163576985, - "worst_tolerance_ratio": 0.9771910074031923 + "worst_mean_abs": 0.00011494670785019669, + "worst_max_relative": 0.0023209112428726544, + "worst_tolerance_ratio": 7.697119905423461 }, "stress": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.345710737276408e-08, - 7.433838774759116e-08 + 3.5043528513449364e-09, + 1.3418043221934562e-08 ], - "worst_mean_abs": 2.7130958842371993e-08, - "worst_max_relative": 0.00010724889769686823, - "worst_tolerance_ratio": 0.006129491384645123 + "worst_mean_abs": 5.061515259439919e-09, + "worst_max_relative": 0.002300637106666749, + "worst_tolerance_ratio": 0.001339775244846595 } } }, { "model": "Mini", - "n": 1000, + "n": 4096, "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", + "right": "ECS", + "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 4.5418739318847656e-05 + 2.980232238769531e-07, + 8.285045623779297e-05 ], - "worst_mean_abs": 4.5418739318847656e-05, - "worst_max_relative": 5.007213208806261e-09, - "worst_tolerance_ratio": 5.0071580071249995e-05 + "worst_mean_abs": 8.285045623779297e-05, + "worst_max_relative": 2.229991942162116e-09, + "worst_tolerance_ratio": 2.2299859399614004e-05 }, "forces": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.863358360671313e-06, - 1.1660318759654231e-05 + 6.7165563111259985e-06, + 1.0402043724155874e-05 ], - "worst_mean_abs": 2.122320797962656e-06, - "worst_max_relative": 0.03168218354665909, - "worst_tolerance_ratio": 0.8441338653785047 + "worst_mean_abs": 1.5775589820036128e-06, + "worst_max_relative": 0.31907697952552433, + "worst_tolerance_ratio": 0.775910261198558 }, "virial": { - "comparisons": 243, - "failures": 1, + "comparisons": 81, + "failures": 23, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.0002126726797939682, - 0.00038946517976512496 + 3.1655765042160056e-05, + 0.00032096389321623064 ], - "worst_mean_abs": 0.00013147606721784931, - "worst_max_relative": 0.00011711922097857225, - "worst_tolerance_ratio": 1.0280470606493994 + "worst_mean_abs": 0.00015008436423366887, + "worst_max_relative": 0.0025925645377863913, + "worst_tolerance_ratio": 8.598036728535737 }, "stress": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.74880078715667e-08, - 6.86513836126168e-08 + 1.3623024097686454e-09, + 1.3812646276756269e-08 ], - "worst_mean_abs": 2.8893696401648187e-08, - "worst_max_relative": 0.00011674111640792188, - "worst_tolerance_ratio": 0.005660575607669639 + "worst_mean_abs": 6.986395788021346e-09, + "worst_max_relative": 0.0025183162807413994, + "worst_tolerance_ratio": 0.0011402141223968124 } } }, { "model": "Mini", - "n": 1000, - "left": "ECS", - "right": "BASE", + "n": 4096, + "left": "BASE", + "right": "TORCH", "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, @@ -4832,38 +5841,38 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.384185791015625e-07, - 5.2988529205322266e-05 + 1.0728836059570312e-06, + 0.00016301870346069336 ], - "worst_mean_abs": 5.2988529205322266e-05, - "worst_max_relative": 5.8417487484824516e-09, - "worst_tolerance_ratio": 5.841684346520871e-05 + "worst_mean_abs": 0.00016301870346069336, + "worst_max_relative": 4.387789895861748e-09, + "worst_tolerance_ratio": 4.387778085776192e-05 }, "forces": { "comparisons": 243, - "failures": 0, + "failures": 2, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.501919348560591e-06, - 9.309888041819647e-06 + 9.423113859208243e-06, + 1.3698024262875919e-05 ], - "worst_mean_abs": 1.5298866226064236e-06, - "worst_max_relative": 0.03154387792380262, - "worst_tolerance_ratio": 0.6930236755093616 + "worst_mean_abs": 2.096169248551909e-06, + "worst_max_relative": 1.0291521497278877, + "worst_tolerance_ratio": 1.1239877746851845 }, "virial": { "comparisons": 243, - "failures": 8, + "failures": 70, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.849106578788451e-05, - 0.00015355807795458531 + 0.0008077665756331953, + 0.001487490278407222 ], - "worst_mean_abs": 8.145100116310446e-05, - "worst_max_relative": 0.00014648826238079898, - "worst_tolerance_ratio": 1.2858467375364764 + "worst_mean_abs": 0.0003777903051544524, + "worst_max_relative": 0.004940751438751109, + "worst_tolerance_ratio": 16.366261048280453 }, "stress": { "comparisons": 243, @@ -4871,148 +5880,148 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.2594370848182397e-09, - 2.706782291014842e-08 + 3.4762146834677043e-08, + 6.401398254182733e-08 ], - "worst_mean_abs": 1.5349518719225493e-08, - "worst_max_relative": 0.00014558851045815208, - "worst_tolerance_ratio": 0.0023133727922297533 + "worst_mean_abs": 2.2350332404915513e-08, + "worst_max_relative": 0.004732033259315227, + "worst_tolerance_ratio": 0.005286478508103251 } } }, { "model": "Mini", "n": 4096, - "left": "TORCH", + "left": "ECS", "right": "TORCH", - "scope": "within_process", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 6.22868537902832e-05 + 1.6093254089355469e-06, + 0.00014352798461914062 ], - "worst_mean_abs": 6.22868537902832e-05, - "worst_max_relative": 1.676505295726619e-09, - "worst_tolerance_ratio": 1.6765007832777307e-05 + "worst_mean_abs": 0.00014352798461914062, + "worst_max_relative": 3.863373507672836e-09, + "worst_tolerance_ratio": 3.8633631085755974e-05 }, "forces": { - "comparisons": 27, - "failures": 0, + "comparisons": 243, + "failures": 1, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.276442724135634e-06, - 9.493022817164132e-06 + 9.17761948571183e-06, + 1.4198029854473049e-05 ], - "worst_mean_abs": 1.5604888942388797e-06, - "worst_max_relative": 0.7221657199292606, - "worst_tolerance_ratio": 0.6766329649396017 + "worst_mean_abs": 2.0938754517473338e-06, + "worst_max_relative": 1.0733294214283975, + "worst_tolerance_ratio": 1.029790420180238 }, "virial": { - "comparisons": 27, - "failures": 8, + "comparisons": 243, + "failures": 78, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.061616724866269e-05, - 0.0004385140394447262 + 0.0007983658128409843, + 0.0014929920704389588 ], - "worst_mean_abs": 0.00014062627027793754, - "worst_max_relative": 0.003646330978402356, - "worst_tolerance_ratio": 12.078487533882 + "worst_mean_abs": 0.00041110880985206766, + "worst_max_relative": 0.0043664187794303444, + "worst_tolerance_ratio": 14.463781567674816 }, "stress": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.0662720149255617e-09, - 1.887140405054666e-08 + 3.4357586029681864e-08, + 6.425075156288318e-08 ], - "worst_mean_abs": 8.27017624404072e-09, - "worst_max_relative": 0.003516495170973442, - "worst_tolerance_ratio": 0.0015584606357800237 + "worst_mean_abs": 2.3453786021136437e-08, + "worst_max_relative": 0.004132374567092805, + "worst_tolerance_ratio": 0.005303810124016367 } } }, { "model": "Mini", "n": 4096, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 8.33272933959961e-05 + 0.0, + 0.00012302398681640625 ], - "worst_mean_abs": 8.33272933959961e-05, - "worst_max_relative": 2.242938611229538e-09, - "worst_tolerance_ratio": 2.2429325738798685e-05 + "worst_mean_abs": 0.00012302398681640625, + "worst_max_relative": 3.3112973984629697e-09, + "worst_tolerance_ratio": 3.311288485842567e-05 }, "forces": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.791250073412414e-06, - 9.901864735928356e-06 + 6.8387619158727375e-06, + 9.65639859451528e-06 ], - "worst_mean_abs": 1.5610593938481738e-06, - "worst_max_relative": 0.4002606254997042, - "worst_tolerance_ratio": 0.8863501561494904 + "worst_mean_abs": 1.5684248104771456e-06, + "worst_max_relative": 0.23001588493410238, + "worst_tolerance_ratio": 0.7937229548451024 }, "virial": { - "comparisons": 81, - "failures": 23, + "comparisons": 243, + "failures": 77, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.726828905849857e-05, - 0.00038339606288673167 + 4.1898494316683355e-05, + 0.00035797328678199847 ], - "worst_mean_abs": 0.00012411605811251606, - "worst_max_relative": 0.005435660459240495, - "worst_tolerance_ratio": 18.005649373090712 + "worst_mean_abs": 0.0001650340310146683, + "worst_max_relative": 0.0031558916605099246, + "worst_tolerance_ratio": 10.488389693129538 }, "stress": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.0838191543397916e-09, - 1.6499407919784437e-08 + 1.8030971507543292e-09, + 1.5405341509400206e-08 ], - "worst_mean_abs": 6.620879229180118e-09, - "worst_max_relative": 0.005318989456488086, - "worst_tolerance_ratio": 0.0013625734568615139 + "worst_mean_abs": 7.644362534762456e-09, + "worst_max_relative": 0.0031073255040813606, + "worst_tolerance_ratio": 0.0013527499848575806 } } }, { - "model": "Mini", - "n": 4096, - "left": "BASE", - "right": "BASE", + "model": "Nano", + "n": 512, + "left": "TORCH", + "right": "TORCH", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -5024,38 +6033,38 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.0994415283203125e-06, - 0.0001398921012878418 + 1.7881393432617188e-07, + 5.1856040954589844e-05 ], - "worst_mean_abs": 0.0001398921012878418, - "worst_max_relative": 3.765317327969958e-09, - "worst_tolerance_ratio": 3.76530719331883e-05 + "worst_mean_abs": 5.1856040954589844e-05, + "worst_max_relative": 1.1146273195787414e-08, + "worst_tolerance_ratio": 0.00011146033615724139 }, "forces": { "comparisons": 27, - "failures": 0, + "failures": 1, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.087830623753177e-06, - 8.594069466738574e-06 + 8.766965064133103e-06, + 1.7291203498359664e-05 ], - "worst_mean_abs": 1.5664331380786528e-06, - "worst_max_relative": 0.20380743711916677, - "worst_tolerance_ratio": 0.7154379637523316 + "worst_mean_abs": 2.4852107935273687e-06, + "worst_max_relative": 0.010189450127120941, + "worst_tolerance_ratio": 1.1316950726095287 }, "virial": { "comparisons": 27, - "failures": 8, + "failures": 19, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.909067436908998e-05, - 0.0002918480684002134 + 4.055394600510631e-05, + 0.00017451233514942377 ], - "worst_mean_abs": 0.00014369099240547141, - "worst_max_relative": 0.002270021526724481, - "worst_tolerance_ratio": 7.532844258693963 + "worst_mean_abs": 7.271361934029713e-05, + "worst_max_relative": 0.000973825857175036, + "worst_tolerance_ratio": 5.19613769295286 }, "stress": { "comparisons": 27, @@ -5063,20 +6072,20 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.043441544284392e-09, - 1.2559649920779181e-08 + 1.364606633805698e-08, + 6.008095508228768e-08 ], - "worst_mean_abs": 6.742370555133717e-09, - "worst_max_relative": 0.002241454623967595, - "worst_tolerance_ratio": 0.0010381545420209263 + "worst_mean_abs": 3.016862249368783e-08, + "worst_max_relative": 0.0009738258571749244, + "worst_tolerance_ratio": 0.005997799269904227 } } }, { - "model": "Mini", - "n": 4096, - "left": "BASE", - "right": "BASE", + "model": "Nano", + "n": 512, + "left": "TORCH", + "right": "TORCH", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -5088,12 +6097,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.5762786865234375e-07, - 0.00010132789611816406 + 8.940696716308594e-07, + 5.030632019042969e-05 ], - "worst_mean_abs": 0.00010132789611816406, - "worst_max_relative": 2.727328283617756e-09, - "worst_tolerance_ratio": 2.727320942796688e-05 + "worst_mean_abs": 5.030632019042969e-05, + "worst_max_relative": 1.0813166297665457e-08, + "worst_tolerance_ratio": 0.00010812933877461117 }, "forces": { "comparisons": 81, @@ -5101,25 +6110,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.8528062333594875e-06, - 9.191420122678373e-06 + 8.257411050038854e-06, + 1.4883388791631091e-05 ], - "worst_mean_abs": 1.5732223744548312e-06, - "worst_max_relative": 0.18329228341065706, - "worst_tolerance_ratio": 0.7799507458293996 + "worst_mean_abs": 2.4939856850593307e-06, + "worst_max_relative": 0.010467927873105857, + "worst_tolerance_ratio": 0.92627465387243 }, "virial": { "comparisons": 81, - "failures": 22, + "failures": 55, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.476562237698545e-05, - 0.0003680483274592916 + 3.3969889001617126e-05, + 0.000177425786994867 ], - "worst_mean_abs": 0.00015585519983603766, - "worst_max_relative": 0.002624879950042877, - "worst_tolerance_ratio": 8.723608658126022 + "worst_mean_abs": 8.643101677442545e-05, + "worst_max_relative": 0.0015335712596714877, + "worst_tolerance_ratio": 8.176976981513697 }, "stress": { "comparisons": 81, @@ -5127,20 +6136,20 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.8939265835423054e-09, - 1.5838919790317485e-08 + 1.06715270511374e-08, + 6.10839957516365e-08 ], - "worst_mean_abs": 7.895335861396732e-09, - "worst_max_relative": 0.002555107312160029, - "worst_tolerance_ratio": 0.00130921213401913 + "worst_mean_abs": 3.4568533389661146e-08, + "worst_max_relative": 0.0015335712596714383, + "worst_tolerance_ratio": 0.006079983328441283 } } }, { - "model": "Mini", - "n": 4096, - "left": "ECS", - "right": "ECS", + "model": "Nano", + "n": 512, + "left": "BASE", + "right": "BASE", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -5152,12 +6161,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.940696716308594e-07, - 6.74128532409668e-05 + 6.556510925292969e-07, + 5.233287811279297e-05 ], - "worst_mean_abs": 6.74128532409668e-05, - "worst_max_relative": 1.8145662145648e-09, - "worst_tolerance_ratio": 1.8145613302711886e-05 + "worst_mean_abs": 5.233287811279297e-05, + "worst_max_relative": 1.1248767940533848e-08, + "worst_tolerance_ratio": 0.00011248526157423533 }, "forces": { "comparisons": 27, @@ -5165,25 +6174,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.750748702488707e-06, - 9.570433796790567e-06 + 8.955419840361856e-06, + 1.2407035157480095e-05 ], - "worst_mean_abs": 1.5654228514700462e-06, - "worst_max_relative": 0.1940384920707749, - "worst_tolerance_ratio": 0.6900402518680474 + "worst_mean_abs": 2.3820959727540053e-06, + "worst_max_relative": 0.014175671068021032, + "worst_tolerance_ratio": 0.9985887251538444 }, "virial": { "comparisons": 27, - "failures": 8, + "failures": 16, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.40954579843789e-05, - 0.00031341504619852856 + 4.078018649089632e-05, + 0.00014113911835411663 ], - "worst_mean_abs": 0.00011494670785019669, - "worst_max_relative": 0.0023209112428726544, - "worst_tolerance_ratio": 7.697119905423461 + "worst_mean_abs": 5.867724483298186e-05, + "worst_max_relative": 0.0008068531987614919, + "worst_tolerance_ratio": 4.305249171469632 }, "stress": { "comparisons": 27, @@ -5191,20 +6200,20 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.5043528513449364e-09, - 1.3418043221934562e-08 + 1.4039767164337243e-08, + 4.859125300759638e-08 ], - "worst_mean_abs": 5.061515259439919e-09, - "worst_max_relative": 0.002300637106666749, - "worst_tolerance_ratio": 0.001339775244846595 + "worst_mean_abs": 2.300090254293145e-08, + "worst_max_relative": 0.0008068531987614425, + "worst_tolerance_ratio": 0.004836521115564516 } } }, { - "model": "Mini", - "n": 4096, - "left": "ECS", - "right": "ECS", + "model": "Nano", + "n": 512, + "left": "BASE", + "right": "BASE", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -5216,12 +6225,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.980232238769531e-07, - 8.285045623779297e-05 + 3.5762786865234375e-07, + 4.851818084716797e-05 ], - "worst_mean_abs": 8.285045623779297e-05, - "worst_max_relative": 2.229991942162116e-09, - "worst_tolerance_ratio": 2.2299859399614004e-05 + "worst_mean_abs": 4.851818084716797e-05, + "worst_max_relative": 1.0428812073570891e-08, + "worst_tolerance_ratio": 0.00010428587914747008 }, "forces": { "comparisons": 81, @@ -5229,25 +6238,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.7165563111259985e-06, - 1.0402043724155874e-05 + 8.637859011173532e-06, + 1.3563694178486685e-05 ], - "worst_mean_abs": 1.5775589820036128e-06, - "worst_max_relative": 0.31907697952552433, - "worst_tolerance_ratio": 0.775910261198558 + "worst_mean_abs": 2.4346400257469346e-06, + "worst_max_relative": 0.015886447905594896, + "worst_tolerance_ratio": 0.9570533597256069 }, "virial": { "comparisons": 81, - "failures": 23, + "failures": 46, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.1655765042160056e-05, - 0.00032096389321623064 + 2.392236031578676e-05, + 0.00019932577964731912 ], - "worst_mean_abs": 0.00015008436423366887, - "worst_max_relative": 0.0025925645377863913, - "worst_tolerance_ratio": 8.598036728535737 + "worst_mean_abs": 7.058121769615905e-05, + "worst_max_relative": 0.0010319400928531612, + "worst_tolerance_ratio": 5.504206441162648 }, "stress": { "comparisons": 81, @@ -5255,148 +6264,148 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.3623024097686454e-09, - 1.3812646276756269e-08 + 7.192721904639523e-09, + 6.862370618949216e-08 ], - "worst_mean_abs": 6.986395788021346e-09, - "worst_max_relative": 0.0025183162807413994, - "worst_tolerance_ratio": 0.0011402141223968124 + "worst_mean_abs": 2.8727820049359945e-08, + "worst_max_relative": 0.0010319400928531695, + "worst_tolerance_ratio": 0.00683044422496838 } } }, { - "model": "Mini", - "n": 4096, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", + "model": "Nano", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.0728836059570312e-06, - 0.00016301870346069336 + 2.384185791015625e-07, + 4.869699478149414e-05 ], - "worst_mean_abs": 0.00016301870346069336, - "worst_max_relative": 4.387789895861748e-09, - "worst_tolerance_ratio": 4.387778085776192e-05 + "worst_mean_abs": 4.869699478149414e-05, + "worst_max_relative": 1.046940065239034e-08, + "worst_tolerance_ratio": 0.00010469175574859201 }, "forces": { - "comparisons": 243, - "failures": 2, + "comparisons": 27, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.423113859208243e-06, - 1.3698024262875919e-05 + 8.85038370768143e-06, + 1.1738225811797065e-05 ], - "worst_mean_abs": 2.096169248551909e-06, - "worst_max_relative": 1.0291521497278877, - "worst_tolerance_ratio": 1.1239877746851845 + "worst_mean_abs": 2.3721802568320454e-06, + "worst_max_relative": 0.01568527460065144, + "worst_tolerance_ratio": 0.8663496194533588 }, "virial": { - "comparisons": 243, - "failures": 70, + "comparisons": 27, + "failures": 17, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.0008077665756331953, - 0.001487490278407222 + 2.7086178096880076e-05, + 0.0001370057513943035 ], - "worst_mean_abs": 0.0003777903051544524, - "worst_max_relative": 0.004940751438751109, - "worst_tolerance_ratio": 16.366261048280453 + "worst_mean_abs": 5.41683037192437e-05, + "worst_max_relative": 0.0007383546059137198, + "worst_tolerance_ratio": 3.9392610735795146 }, "stress": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.4762146834677043e-08, - 6.401398254182733e-08 + 9.07666457614217e-09, + 4.716822102281311e-08 ], - "worst_mean_abs": 2.2350332404915513e-08, - "worst_max_relative": 0.004732033259315227, - "worst_tolerance_ratio": 0.005286478508103251 + "worst_mean_abs": 2.0727788063474185e-08, + "worst_max_relative": 0.0007383546059137015, + "worst_tolerance_ratio": 0.004708738885116302 } } }, - { - "model": "Mini", - "n": 4096, + { + "model": "Nano", + "n": 512, "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", + "right": "ECS", + "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.6093254089355469e-06, - 0.00014352798461914062 + 2.980232238769531e-07, + 6.03795051574707e-05 ], - "worst_mean_abs": 0.00014352798461914062, - "worst_max_relative": 3.863373507672836e-09, - "worst_tolerance_ratio": 3.8633631085755974e-05 + "worst_mean_abs": 6.03795051574707e-05, + "worst_max_relative": 1.2981031633325677e-08, + "worst_tolerance_ratio": 0.00012980752559227344 }, "forces": { - "comparisons": 243, + "comparisons": 81, "failures": 1, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.17761948571183e-06, - 1.4198029854473049e-05 + 8.53285565494133e-06, + 1.2596385623453443e-05 ], - "worst_mean_abs": 2.0938754517473338e-06, - "worst_max_relative": 1.0733294214283975, - "worst_tolerance_ratio": 1.029790420180238 + "worst_mean_abs": 2.4180107231326488e-06, + "worst_max_relative": 0.014537569015271005, + "worst_tolerance_ratio": 1.0298114212605975 }, "virial": { - "comparisons": 243, - "failures": 78, + "comparisons": 81, + "failures": 58, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.0007983658128409843, - 0.0014929920704389588 + 2.3916469979567978e-05, + 0.00021912684620095657 ], - "worst_mean_abs": 0.00041110880985206766, - "worst_max_relative": 0.0043664187794303444, - "worst_tolerance_ratio": 14.463781567674816 + "worst_mean_abs": 9.241606229517776e-05, + "worst_max_relative": 0.001069438922939849, + "worst_tolerance_ratio": 5.703692380445624 }, "stress": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.4357586029681864e-08, - 6.425075156288318e-08 + 8.233941499544845e-09, + 7.544080017407367e-08 ], - "worst_mean_abs": 2.3453786021136437e-08, - "worst_max_relative": 0.004132374567092805, - "worst_tolerance_ratio": 0.005303810124016367 + "worst_mean_abs": 3.3064764676507106e-08, + "worst_max_relative": 0.0010694389229398242, + "worst_tolerance_ratio": 0.007531148182654655 } } }, { - "model": "Mini", - "n": 4096, - "left": "ECS", - "right": "BASE", + "model": "Nano", + "n": 512, + "left": "BASE", + "right": "TORCH", "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, @@ -5408,38 +6417,38 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.0, - 0.00012302398681640625 + 2.9802322387695312e-06, + 0.00011521577835083008 ], - "worst_mean_abs": 0.00012302398681640625, - "worst_max_relative": 3.3112973984629697e-09, - "worst_tolerance_ratio": 3.311288485842567e-05 + "worst_mean_abs": 0.00011521577835083008, + "worst_max_relative": 2.476522538788169e-08, + "worst_tolerance_ratio": 0.0002476469307953421 }, "forces": { "comparisons": 243, - "failures": 0, + "failures": 2, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.8387619158727375e-06, - 9.65639859451528e-06 + 8.866833237419769e-06, + 1.3863820811366168e-05 ], - "worst_mean_abs": 1.5684248104771456e-06, - "worst_max_relative": 0.23001588493410238, - "worst_tolerance_ratio": 0.7937229548451024 + "worst_mean_abs": 2.5348655705687787e-06, + "worst_max_relative": 0.013337817701576112, + "worst_tolerance_ratio": 1.0895565306476451 }, "virial": { "comparisons": 243, - "failures": 77, + "failures": 166, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.1898494316683355e-05, - 0.00035797328678199847 + 1.1533558528009635e-05, + 0.00026236270172219633 ], - "worst_mean_abs": 0.0001650340310146683, - "worst_max_relative": 0.0031558916605099246, - "worst_tolerance_ratio": 10.488389693129538 + "worst_mean_abs": 8.760870563310578e-05, + "worst_max_relative": 0.0017800165310995787, + "worst_tolerance_ratio": 9.491019155270966 }, "stress": { "comparisons": 243, @@ -5447,148 +6456,148 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.8030971507543292e-09, - 1.5405341509400206e-08 + 3.970763506574212e-09, + 9.032600293808549e-08 ], - "worst_mean_abs": 7.644362534762456e-09, - "worst_max_relative": 0.0031073255040813606, - "worst_tolerance_ratio": 0.0013527499848575806 + "worst_mean_abs": 3.721045395060893e-08, + "worst_max_relative": 0.001780016531099546, + "worst_tolerance_ratio": 0.008990575212540899 } } }, { "model": "Nano", "n": 512, - "left": "TORCH", + "left": "ECS", "right": "TORCH", - "scope": "within_process", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.7881393432617188e-07, - 5.1856040954589844e-05 + 4.172325134277344e-07, + 0.00011283159255981445 ], - "worst_mean_abs": 5.1856040954589844e-05, - "worst_max_relative": 1.1146273195787414e-08, - "worst_tolerance_ratio": 0.00011146033615724139 + "worst_mean_abs": 0.00011283159255981445, + "worst_max_relative": 2.425275305704089e-08, + "worst_tolerance_ratio": 0.0002425223176386873 }, "forces": { - "comparisons": 27, - "failures": 1, + "comparisons": 243, + "failures": 4, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.766965064133103e-06, - 1.7291203498359664e-05 + 8.494724019314503e-06, + 1.3567397007641091e-05 ], - "worst_mean_abs": 2.4852107935273687e-06, - "worst_max_relative": 0.010189450127120941, - "worst_tolerance_ratio": 1.1316950726095287 + "worst_mean_abs": 2.5153659548103903e-06, + "worst_max_relative": 0.0181708317516515, + "worst_tolerance_ratio": 1.1458655299522276 }, "virial": { - "comparisons": 27, - "failures": 19, + "comparisons": 243, + "failures": 165, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.055394600510631e-05, - 0.00017451233514942377 + 2.6507507705053612e-05, + 0.0002646941713170259 ], - "worst_mean_abs": 7.271361934029713e-05, - "worst_max_relative": 0.000973825857175036, - "worst_tolerance_ratio": 5.19613769295286 + "worst_mean_abs": 8.891479116783045e-05, + "worst_max_relative": 0.0016192342608923164, + "worst_tolerance_ratio": 8.633730708953884 }, "stress": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.364606633805698e-08, - 6.008095508228768e-08 + 9.12598171586964e-09, + 9.112867926396365e-08 ], - "worst_mean_abs": 3.016862249368783e-08, - "worst_max_relative": 0.0009738258571749244, - "worst_tolerance_ratio": 0.005997799269904227 + "worst_mean_abs": 4.0642593242164365e-08, + "worst_max_relative": 0.0016192342608922212, + "worst_tolerance_ratio": 0.009097245497940457 } } }, { "model": "Nano", "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.940696716308594e-07, - 5.030632019042969e-05 + 4.172325134277344e-07, + 5.412101745605469e-05 ], - "worst_mean_abs": 5.030632019042969e-05, - "worst_max_relative": 1.0813166297665457e-08, - "worst_tolerance_ratio": 0.00010812933877461117 + "worst_mean_abs": 5.412101745605469e-05, + "worst_max_relative": 1.163551516308483e-08, + "worst_tolerance_ratio": 0.00011635265015713475 }, "forces": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.257411050038854e-06, - 1.4883388791631091e-05 + 8.594751452761784e-06, + 1.2694701985616064e-05 ], - "worst_mean_abs": 2.4939856850593307e-06, - "worst_max_relative": 0.010467927873105857, - "worst_tolerance_ratio": 0.92627465387243 + "worst_mean_abs": 2.406626944534996e-06, + "worst_max_relative": 0.013580493456645044, + "worst_tolerance_ratio": 0.9010885235448788 }, "virial": { - "comparisons": 81, - "failures": 55, + "comparisons": 243, + "failures": 149, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.3969889001617126e-05, - 0.000177425786994867 + 2.3583172267138686e-05, + 0.00020684066423237724 ], - "worst_mean_abs": 8.643101677442545e-05, - "worst_max_relative": 0.0015335712596714877, - "worst_tolerance_ratio": 8.176976981513697 + "worst_mean_abs": 9.152253924828003e-05, + "worst_max_relative": 0.00122862157084563, + "worst_tolerance_ratio": 6.556428359117095 }, "stress": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.06715270511374e-08, - 6.10839957516365e-08 + 8.11919405277093e-09, + 7.121092412346996e-08 ], - "worst_mean_abs": 3.4568533389661146e-08, - "worst_max_relative": 0.0015335712596714383, - "worst_tolerance_ratio": 0.006079983328441283 + "worst_mean_abs": 3.897775028357132e-08, + "worst_max_relative": 0.0012286215708456672, + "worst_tolerance_ratio": 0.0070631307291112826 } } }, { "model": "Nano", - "n": 512, - "left": "BASE", - "right": "BASE", + "n": 1000, + "left": "TORCH", + "right": "TORCH", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -5600,12 +6609,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.556510925292969e-07, - 5.233287811279297e-05 + 1.7881393432617188e-07, + 6.705522537231445e-05 ], - "worst_mean_abs": 5.233287811279297e-05, - "worst_max_relative": 1.1248767940533848e-08, - "worst_tolerance_ratio": 0.00011248526157423533 + "worst_mean_abs": 6.705522537231445e-05, + "worst_max_relative": 7.380278326890236e-09, + "worst_tolerance_ratio": 7.380197098457416e-05 }, "forces": { "comparisons": 27, @@ -5613,12 +6622,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.955419840361856e-06, - 1.2407035157480095e-05 + 9.814197049706763e-06, + 1.3283340038583447e-05 ], - "worst_mean_abs": 2.3820959727540053e-06, - "worst_max_relative": 0.014175671068021032, - "worst_tolerance_ratio": 0.9985887251538444 + "worst_mean_abs": 2.4807729523439273e-06, + "worst_max_relative": 0.07064961006734138, + "worst_tolerance_ratio": 0.9788772275704567 }, "virial": { "comparisons": 27, @@ -5626,12 +6635,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.078018649089632e-05, - 0.00014113911835411663 + 5.536978601194953e-05, + 0.0002621348498155207 ], - "worst_mean_abs": 5.867724483298186e-05, - "worst_max_relative": 0.0008068531987614919, - "worst_tolerance_ratio": 4.305249171469632 + "worst_mean_abs": 0.00012002781364079457, + "worst_max_relative": 0.0009239748258999796, + "worst_tolerance_ratio": 5.8244675613468155 }, "stress": { "comparisons": 27, @@ -5639,20 +6648,20 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.4039767164337243e-08, - 4.859125300759638e-08 + 9.760082845759998e-09, + 4.620674984019517e-08 ], - "worst_mean_abs": 2.300090254293145e-08, - "worst_max_relative": 0.0008068531987614425, - "worst_tolerance_ratio": 0.004836521115564516 + "worst_mean_abs": 2.6329522555160016e-08, + "worst_max_relative": 0.0009239748259000392, + "worst_tolerance_ratio": 0.004602318845526104 } } }, { "model": "Nano", - "n": 512, - "left": "BASE", - "right": "BASE", + "n": 1000, + "left": "TORCH", + "right": "TORCH", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -5664,12 +6673,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.5762786865234375e-07, - 4.851818084716797e-05 + 8.940696716308594e-07, + 7.909536361694336e-05 ], - "worst_mean_abs": 4.851818084716797e-05, - "worst_max_relative": 1.0428812073570891e-08, - "worst_tolerance_ratio": 0.00010428587914747008 + "worst_mean_abs": 7.909536361694336e-05, + "worst_max_relative": 8.705448302029638e-09, + "worst_tolerance_ratio": 8.705352488580437e-05 }, "forces": { "comparisons": 81, @@ -5677,25 +6686,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.637859011173532e-06, - 1.3563694178486685e-05 + 9.71709807728871e-06, + 1.3557718373746752e-05 ], - "worst_mean_abs": 2.4346400257469346e-06, - "worst_max_relative": 0.015886447905594896, - "worst_tolerance_ratio": 0.9570533597256069 + "worst_mean_abs": 2.4842726585575423e-06, + "worst_max_relative": 0.0759977817387832, + "worst_tolerance_ratio": 0.9464874742734661 }, "virial": { "comparisons": 81, - "failures": 46, + "failures": 37, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.392236031578676e-05, - 0.00019932577964731912 + 3.9306211052858586e-05, + 0.0002863409727107413 ], - "worst_mean_abs": 7.058121769615905e-05, - "worst_max_relative": 0.0010319400928531612, - "worst_tolerance_ratio": 5.504206441162648 + "worst_mean_abs": 0.0001303773573005065, + "worst_max_relative": 0.0012003422249451164, + "worst_tolerance_ratio": 7.569965617367002 }, "stress": { "comparisons": 81, @@ -5703,20 +6712,20 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.192721904639523e-09, - 6.862370618949216e-08 + 6.794077330569102e-09, + 5.047358527248032e-08 ], - "worst_mean_abs": 2.8727820049359945e-08, - "worst_max_relative": 0.0010319400928531695, - "worst_tolerance_ratio": 0.00683044422496838 + "worst_mean_abs": 2.8648492434288087e-08, + "worst_max_relative": 0.0012003422249451568, + "worst_tolerance_ratio": 0.005033468296844829 } } }, { "model": "Nano", - "n": 512, - "left": "ECS", - "right": "ECS", + "n": 1000, + "left": "BASE", + "right": "BASE", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -5728,12 +6737,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.384185791015625e-07, - 4.869699478149414e-05 + 1.0728836059570312e-06, + 5.555152893066406e-05 ], - "worst_mean_abs": 4.869699478149414e-05, - "worst_max_relative": 1.046940065239034e-08, - "worst_tolerance_ratio": 0.00010469175574859201 + "worst_mean_abs": 5.555152893066406e-05, + "worst_max_relative": 6.114054849798781e-09, + "worst_tolerance_ratio": 6.113987558662058e-05 }, "forces": { "comparisons": 27, @@ -5741,25 +6750,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.85038370768143e-06, - 1.1738225811797065e-05 + 8.786312321262812e-06, + 1.2459468539560703e-05 ], - "worst_mean_abs": 2.3721802568320454e-06, - "worst_max_relative": 0.01568527460065144, - "worst_tolerance_ratio": 0.8663496194533588 + "worst_mean_abs": 2.398441079157478e-06, + "worst_max_relative": 0.054261871315451383, + "worst_tolerance_ratio": 0.981170727447744 }, "virial": { "comparisons": 27, - "failures": 17, + "failures": 16, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.7086178096880076e-05, - 0.0001370057513943035 + 4.3762921964507484e-05, + 0.00024579854120920785 ], - "worst_mean_abs": 5.41683037192437e-05, - "worst_max_relative": 0.0007383546059137198, - "worst_tolerance_ratio": 3.9392610735795146 + "worst_mean_abs": 8.738184682748834e-05, + "worst_max_relative": 0.0010202174990259238, + "worst_tolerance_ratio": 6.432208406329726 }, "stress": { "comparisons": 27, @@ -5767,20 +6776,20 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.07666457614217e-09, - 4.716822102281311e-08 + 7.638471180983035e-09, + 4.33271337738181e-08 ], - "worst_mean_abs": 2.0727788063474185e-08, - "worst_max_relative": 0.0007383546059137015, - "worst_tolerance_ratio": 0.004708738885116302 + "worst_mean_abs": 1.942982704128361e-08, + "worst_max_relative": 0.0010202174990259479, + "worst_tolerance_ratio": 0.00432644372151242 } } }, { "model": "Nano", - "n": 512, - "left": "ECS", - "right": "ECS", + "n": 1000, + "left": "BASE", + "right": "BASE", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -5792,38 +6801,38 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.980232238769531e-07, - 6.03795051574707e-05 + 5.960464477539063e-08, + 7.152557373046875e-05 ], - "worst_mean_abs": 6.03795051574707e-05, - "worst_max_relative": 1.2981031633325677e-08, - "worst_tolerance_ratio": 0.00012980752559227344 + "worst_mean_abs": 7.152557373046875e-05, + "worst_max_relative": 7.873296361694648e-09, + "worst_tolerance_ratio": 7.873209696030856e-05 }, "forces": { "comparisons": 81, - "failures": 1, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.53285565494133e-06, - 1.2596385623453443e-05 + 9.121134496581362e-06, + 1.3018717602619745e-05 ], - "worst_mean_abs": 2.4180107231326488e-06, - "worst_max_relative": 0.014537569015271005, - "worst_tolerance_ratio": 1.0298114212605975 + "worst_mean_abs": 2.4319626653784706e-06, + "worst_max_relative": 0.07096529492391204, + "worst_tolerance_ratio": 0.9636731237738646 }, "virial": { "comparisons": 81, - "failures": 58, + "failures": 40, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.3916469979567978e-05, - 0.00021912684620095657 + 5.2807989383119036e-05, + 0.00024990545577008305 ], - "worst_mean_abs": 9.241606229517776e-05, - "worst_max_relative": 0.001069438922939849, - "worst_tolerance_ratio": 5.703692380445624 + "worst_mean_abs": 0.00010055815697852645, + "worst_max_relative": 0.0014632222010244572, + "worst_tolerance_ratio": 9.228714532236777 }, "stress": { "comparisons": 81, @@ -5831,148 +6840,148 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.233941499544845e-09, - 7.544080017407367e-08 + 9.308512609806571e-09, + 4.405106336146725e-08 ], - "worst_mean_abs": 3.3064764676507106e-08, - "worst_max_relative": 0.0010694389229398242, - "worst_tolerance_ratio": 0.007531148182654655 + "worst_mean_abs": 2.1024017026820106e-08, + "worst_max_relative": 0.001463222201024455, + "worst_tolerance_ratio": 0.004403780555167392 } } }, { "model": "Nano", - "n": 512, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", + "n": 1000, + "left": "ECS", + "right": "ECS", + "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.9802322387695312e-06, - 0.00011521577835083008 + 1.1920928955078125e-06, + 5.5849552154541016e-05 ], - "worst_mean_abs": 0.00011521577835083008, - "worst_max_relative": 2.476522538788169e-08, - "worst_tolerance_ratio": 0.0002476469307953421 + "worst_mean_abs": 5.5849552154541016e-05, + "worst_max_relative": 6.146855565015758e-09, + "worst_tolerance_ratio": 6.146787912875264e-05 }, "forces": { - "comparisons": 243, - "failures": 2, + "comparisons": 27, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.866833237419769e-06, - 1.3863820811366168e-05 + 9.347885804089628e-06, + 1.2423431734021051e-05 ], - "worst_mean_abs": 2.5348655705687787e-06, - "worst_max_relative": 0.013337817701576112, - "worst_tolerance_ratio": 1.0895565306476451 + "worst_mean_abs": 2.370844754204071e-06, + "worst_max_relative": 0.07831361613437446, + "worst_tolerance_ratio": 0.8888699896371453 }, "virial": { - "comparisons": 243, - "failures": 166, + "comparisons": 27, + "failures": 18, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.1533558528009635e-05, - 0.00026236270172219633 + 4.847402131780143e-05, + 0.00021978145290779683 ], - "worst_mean_abs": 8.760870563310578e-05, - "worst_max_relative": 0.0017800165310995787, - "worst_tolerance_ratio": 9.491019155270966 + "worst_mean_abs": 9.373285963277923e-05, + "worst_max_relative": 0.0007817389212867293, + "worst_tolerance_ratio": 4.930178883993715 }, "stress": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.970763506574212e-09, - 9.032600293808549e-08 + 8.544560093270894e-09, + 3.874107781233168e-08 ], - "worst_mean_abs": 3.721045395060893e-08, - "worst_max_relative": 0.001780016531099546, - "worst_tolerance_ratio": 0.008990575212540899 + "worst_mean_abs": 1.9247010281329946e-08, + "worst_max_relative": 0.0007817389212866785, + "worst_tolerance_ratio": 0.003869580060182906 } } }, { "model": "Nano", - "n": 512, + "n": 1000, "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", + "right": "ECS", + "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.172325134277344e-07, - 0.00011283159255981445 + 5.960464477539063e-08, + 6.943941116333008e-05 ], - "worst_mean_abs": 0.00011283159255981445, - "worst_max_relative": 2.425275305704089e-08, - "worst_tolerance_ratio": 0.0002425223176386873 + "worst_mean_abs": 6.943941116333008e-05, + "worst_max_relative": 7.642568505042894e-09, + "worst_tolerance_ratio": 7.64248439112325e-05 }, "forces": { - "comparisons": 243, - "failures": 4, + "comparisons": 81, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.494724019314503e-06, - 1.3567397007641091e-05 + 9.23915536077402e-06, + 1.4299878046131198e-05 ], - "worst_mean_abs": 2.5153659548103903e-06, - "worst_max_relative": 0.0181708317516515, - "worst_tolerance_ratio": 1.1458655299522276 + "worst_mean_abs": 2.407887343467058e-06, + "worst_max_relative": 0.05869106076708458, + "worst_tolerance_ratio": 0.9989764370069022 }, "virial": { - "comparisons": 243, - "failures": 165, + "comparisons": 81, + "failures": 48, "all_finite": true, "all_bitwise": false, - "max_abs_range": [ - 2.6507507705053612e-05, - 0.0002646941713170259 + "max_abs_range": [ + 2.857040161718949e-05, + 0.00023186765260030384 ], - "worst_mean_abs": 8.891479116783045e-05, - "worst_max_relative": 0.0016192342608923164, - "worst_tolerance_ratio": 8.633730708953884 + "worst_mean_abs": 8.918196586041007e-05, + "worst_max_relative": 0.0011053859730406233, + "worst_tolerance_ratio": 6.968473052985282 }, "stress": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.12598171586964e-09, - 9.112867926396365e-08 + 5.036130836032042e-09, + 4.0871523291447984e-08 ], - "worst_mean_abs": 4.0642593242164365e-08, - "worst_max_relative": 0.0016192342608922212, - "worst_tolerance_ratio": 0.009097245497940457 + "worst_mean_abs": 2.0005938244898643e-08, + "worst_max_relative": 0.001105385973040554, + "worst_tolerance_ratio": 0.004080365509216011 } } }, { "model": "Nano", - "n": 512, - "left": "ECS", - "right": "BASE", + "n": 1000, + "left": "BASE", + "right": "TORCH", "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, @@ -5984,38 +6993,38 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.172325134277344e-07, - 5.412101745605469e-05 + 1.049041748046875e-05, + 0.0001621246337890625 ], - "worst_mean_abs": 5.412101745605469e-05, - "worst_max_relative": 1.163551516308483e-08, - "worst_tolerance_ratio": 0.00011635265015713475 + "worst_mean_abs": 0.0001621246337890625, + "worst_max_relative": 1.7846138241864485e-08, + "worst_tolerance_ratio": 0.0001784594179969714 }, "forces": { "comparisons": 243, - "failures": 0, + "failures": 2, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.594751452761784e-06, - 1.2694701985616064e-05 + 9.188628087297701e-06, + 1.4893052075137803e-05 ], - "worst_mean_abs": 2.406626944534996e-06, - "worst_max_relative": 0.013580493456645044, - "worst_tolerance_ratio": 0.9010885235448788 + "worst_mean_abs": 2.4770690623598473e-06, + "worst_max_relative": 0.09800483993834193, + "worst_tolerance_ratio": 1.0179765327467225 }, "virial": { "comparisons": 243, - "failures": 149, + "failures": 117, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.3583172267138686e-05, - 0.00020684066423237724 + 3.177535218368277e-05, + 0.000263732172986586 ], - "worst_mean_abs": 9.152253924828003e-05, - "worst_max_relative": 0.00122862157084563, - "worst_tolerance_ratio": 6.556428359117095 + "worst_mean_abs": 0.0001287893058575672, + "worst_max_relative": 0.0014646597448872386, + "worst_tolerance_ratio": 9.232787445477102 }, "stress": { "comparisons": 243, @@ -6023,148 +7032,148 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.11919405277093e-09, - 7.121092412346996e-08 + 5.601070405007388e-09, + 4.648831145715295e-08 ], - "worst_mean_abs": 3.897775028357132e-08, - "worst_max_relative": 0.0012286215708456672, - "worst_tolerance_ratio": 0.0070631307291112826 + "worst_mean_abs": 2.680569938080476e-08, + "worst_max_relative": 0.0014646597448872685, + "worst_tolerance_ratio": 0.004630363153779405 } } }, { "model": "Nano", "n": 1000, - "left": "TORCH", + "left": "ECS", "right": "TORCH", - "scope": "within_process", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.7881393432617188e-07, - 6.705522537231445e-05 + 1.2636184692382812e-05, + 0.00016629695892333984 ], - "worst_mean_abs": 6.705522537231445e-05, - "worst_max_relative": 7.380278326890236e-09, - "worst_tolerance_ratio": 7.380197098457416e-05 + "worst_mean_abs": 0.00016629695892333984, + "worst_max_relative": 1.8305413858383056e-08, + "worst_tolerance_ratio": 0.0001830521236071876 }, "forces": { - "comparisons": 27, - "failures": 0, + "comparisons": 243, + "failures": 1, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.814197049706763e-06, - 1.3283340038583447e-05 + 9.16956886065634e-06, + 1.3855962025743906e-05 ], - "worst_mean_abs": 2.4807729523439273e-06, - "worst_max_relative": 0.07064961006734138, - "worst_tolerance_ratio": 0.9788772275704567 + "worst_mean_abs": 2.4856888680901968e-06, + "worst_max_relative": 0.07750219826656735, + "worst_tolerance_ratio": 1.0193027676902944 }, "virial": { - "comparisons": 27, - "failures": 16, + "comparisons": 243, + "failures": 130, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.536978601194953e-05, - 0.0002621348498155207 + 1.3949001278712458e-05, + 0.00030735774929868676 ], - "worst_mean_abs": 0.00012002781364079457, - "worst_max_relative": 0.0009239748258999796, - "worst_tolerance_ratio": 5.8244675613468155 + "worst_mean_abs": 9.88773719763605e-05, + "worst_max_relative": 0.0012774312466267725, + "worst_tolerance_ratio": 8.052553651103347 }, "stress": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.760082845759998e-09, - 4.620674984019517e-08 + 2.458803219257161e-09, + 5.417823171275087e-08 ], - "worst_mean_abs": 2.6329522555160016e-08, - "worst_max_relative": 0.0009239748259000392, - "worst_tolerance_ratio": 0.004602318845526104 + "worst_mean_abs": 2.1585082166671613e-08, + "worst_max_relative": 0.0012774312466267916, + "worst_tolerance_ratio": 0.00541148836119021 } } }, { "model": "Nano", "n": 1000, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.940696716308594e-07, - 7.909536361694336e-05 + 0.0, + 7.56978988647461e-05 ], - "worst_mean_abs": 7.909536361694336e-05, - "worst_max_relative": 8.705448302029638e-09, - "worst_tolerance_ratio": 8.705352488580437e-05 + "worst_mean_abs": 7.56978988647461e-05, + "worst_max_relative": 8.332571982793504e-09, + "worst_tolerance_ratio": 8.332480261632657e-05 }, "forces": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.71709807728871e-06, - 1.3557718373746752e-05 + 9.040669119997347e-06, + 1.3581996914702188e-05 ], - "worst_mean_abs": 2.4842726585575423e-06, - "worst_max_relative": 0.0759977817387832, - "worst_tolerance_ratio": 0.9464874742734661 + "worst_mean_abs": 2.3956786149273528e-06, + "worst_max_relative": 0.10272575989262127, + "worst_tolerance_ratio": 0.9698493269688897 }, "virial": { - "comparisons": 81, - "failures": 37, + "comparisons": 243, + "failures": 127, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.9306211052858586e-05, - 0.0002863409727107413 + 3.917792498153716e-05, + 0.00026902910003578917 ], - "worst_mean_abs": 0.0001303773573005065, - "worst_max_relative": 0.0012003422249451164, - "worst_tolerance_ratio": 7.569965617367002 + "worst_mean_abs": 0.00010588919322393784, + "worst_max_relative": 0.0012909136884334223, + "worst_tolerance_ratio": 8.141944475670089 }, "stress": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.794077330569102e-09, - 5.047358527248032e-08 + 6.905928685786884e-09, + 4.7422005635034846e-08 ], - "worst_mean_abs": 2.8648492434288087e-08, - "worst_max_relative": 0.0012003422249451568, - "worst_tolerance_ratio": 0.005033468296844829 + "worst_mean_abs": 2.1961323641635452e-08, + "worst_max_relative": 0.001290913688433364, + "worst_tolerance_ratio": 0.004736656047334457 } } }, { "model": "Nano", - "n": 1000, - "left": "BASE", - "right": "BASE", + "n": 4096, + "left": "TORCH", + "right": "TORCH", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -6176,38 +7185,38 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.0728836059570312e-06, - 5.555152893066406e-05 + 3.7550926208496094e-06, + 0.00018018484115600586 ], - "worst_mean_abs": 5.555152893066406e-05, - "worst_max_relative": 6.114054849798781e-09, - "worst_tolerance_ratio": 6.113987558662058e-05 + "worst_mean_abs": 0.00018018484115600586, + "worst_max_relative": 4.84178611221321e-09, + "worst_tolerance_ratio": 4.841773101779251e-05 }, "forces": { "comparisons": 27, - "failures": 0, + "failures": 1, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.786312321262812e-06, - 1.2459468539560703e-05 + 1.1379689637491808e-05, + 1.4982336132618457e-05 ], - "worst_mean_abs": 2.398441079157478e-06, - "worst_max_relative": 0.054261871315451383, - "worst_tolerance_ratio": 0.981170727447744 + "worst_mean_abs": 2.4547730052219226e-06, + "worst_max_relative": 0.049138968291372306, + "worst_tolerance_ratio": 1.0139251240867395 }, "virial": { "comparisons": 27, - "failures": 16, + "failures": 12, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.3762921964507484e-05, - 0.00024579854120920785 + 9.570922696866546e-05, + 0.0006978675185784766 ], - "worst_mean_abs": 8.738184682748834e-05, - "worst_max_relative": 0.0010202174990259238, - "worst_tolerance_ratio": 6.432208406329726 + "worst_mean_abs": 0.0002187298961636349, + "worst_max_relative": 0.00027057793322872046, + "worst_tolerance_ratio": 2.338400680089673 }, "stress": { "comparisons": 27, @@ -6215,20 +7224,20 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.638471180983035e-09, - 4.33271337738181e-08 + 4.118836185367045e-09, + 3.003265285029741e-08 ], - "worst_mean_abs": 1.942982704128361e-08, - "worst_max_relative": 0.0010202174990259479, - "worst_tolerance_ratio": 0.00432644372151242 + "worst_mean_abs": 1.3221937558734407e-08, + "worst_max_relative": 0.00026816880233796657, + "worst_tolerance_ratio": 0.002997649770709088 } } }, { "model": "Nano", - "n": 1000, - "left": "BASE", - "right": "BASE", + "n": 4096, + "left": "TORCH", + "right": "TORCH", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -6241,37 +7250,37 @@ "all_bitwise": false, "max_abs_range": [ 5.960464477539063e-08, - 7.152557373046875e-05 + 0.00020241737365722656 ], - "worst_mean_abs": 7.152557373046875e-05, - "worst_max_relative": 7.873296361694648e-09, - "worst_tolerance_ratio": 7.873209696030856e-05 + "worst_mean_abs": 0.00020241737365722656, + "worst_max_relative": 5.439201305868633e-09, + "worst_tolerance_ratio": 5.439186690111687e-05 }, "forces": { "comparisons": 81, - "failures": 0, + "failures": 1, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.121134496581362e-06, - 1.3018717602619745e-05 + 1.0645488186522556e-05, + 1.4430636024798105e-05 ], - "worst_mean_abs": 2.4319626653784706e-06, - "worst_max_relative": 0.07096529492391204, - "worst_tolerance_ratio": 0.9636731237738646 + "worst_mean_abs": 2.46566899329842e-06, + "worst_max_relative": 0.07148408070325418, + "worst_tolerance_ratio": 1.0410711169993532 }, "virial": { "comparisons": 81, - "failures": 40, + "failures": 31, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.2807989383119036e-05, - 0.00024990545577008305 + 9.50547983791239e-05, + 0.0006594723001405178 ], - "worst_mean_abs": 0.00010055815697852645, - "worst_max_relative": 0.0014632222010244572, - "worst_tolerance_ratio": 9.228714532236777 + "worst_mean_abs": 0.00023053475940364935, + "worst_max_relative": 0.00032581061955011103, + "worst_tolerance_ratio": 2.815859630238766 }, "stress": { "comparisons": 81, @@ -6279,20 +7288,20 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.308512609806571e-09, - 4.405106336146725e-08 + 3.964885182298301e-09, + 2.8380318795818353e-08 ], - "worst_mean_abs": 2.1024017026820106e-08, - "worst_max_relative": 0.001463222201024455, - "worst_tolerance_ratio": 0.004403780555167392 + "worst_mean_abs": 1.3796734660870624e-08, + "worst_max_relative": 0.00032551804695630913, + "worst_tolerance_ratio": 0.0028348150680754898 } } }, { "model": "Nano", - "n": 1000, - "left": "ECS", - "right": "ECS", + "n": 4096, + "left": "BASE", + "right": "BASE", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -6304,38 +7313,38 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.1920928955078125e-06, - 5.5849552154541016e-05 + 2.384185791015625e-06, + 0.00019854307174682617 ], - "worst_mean_abs": 5.5849552154541016e-05, - "worst_max_relative": 6.146855565015758e-09, - "worst_tolerance_ratio": 6.146787912875264e-05 + "worst_mean_abs": 0.00019854307174682617, + "worst_max_relative": 5.335067179365246e-09, + "worst_tolerance_ratio": 5.335052843500954e-05 }, "forces": { "comparisons": 27, - "failures": 0, + "failures": 1, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.347885804089628e-06, - 1.2423431734021051e-05 + 1.0975230118503987e-05, + 1.587357682808488e-05 ], - "worst_mean_abs": 2.370844754204071e-06, - "worst_max_relative": 0.07831361613437446, - "worst_tolerance_ratio": 0.8888699896371453 + "worst_mean_abs": 2.4553912382552072e-06, + "worst_max_relative": 0.06999299304932845, + "worst_tolerance_ratio": 1.1102064938466425 }, "virial": { "comparisons": 27, - "failures": 18, + "failures": 3, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.847402131780143e-05, - 0.00021978145290779683 + 0.00011327967093732738, + 0.00039563343946547036 ], - "worst_mean_abs": 9.373285963277923e-05, - "worst_max_relative": 0.0007817389212867293, - "worst_tolerance_ratio": 4.930178883993715 + "worst_mean_abs": 0.0001354829945695456, + "worst_max_relative": 0.00014950168507444765, + "worst_tolerance_ratio": 1.3307480327673997 }, "stress": { "comparisons": 27, @@ -6343,20 +7352,20 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.544560093270894e-09, - 3.874107781233168e-08 + 4.860255624461571e-09, + 1.7026042088350013e-08 ], - "worst_mean_abs": 1.9247010281329946e-08, - "worst_max_relative": 0.0007817389212866785, - "worst_tolerance_ratio": 0.003869580060182906 + "worst_mean_abs": 7.762377786989415e-09, + "worst_max_relative": 0.00014464547130629135, + "worst_tolerance_ratio": 0.0016974962104918695 } } }, { "model": "Nano", - "n": 1000, - "left": "ECS", - "right": "ECS", + "n": 4096, + "left": "BASE", + "right": "BASE", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -6368,38 +7377,38 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 6.943941116333008e-05 + 1.9073486328125e-06, + 0.00023704767227172852 ], - "worst_mean_abs": 6.943941116333008e-05, - "worst_max_relative": 7.642568505042894e-09, - "worst_tolerance_ratio": 7.64248439112325e-05 + "worst_mean_abs": 0.00023704767227172852, + "worst_max_relative": 6.3697275014967495e-09, + "worst_tolerance_ratio": 6.369710385395575e-05 }, "forces": { "comparisons": 81, - "failures": 0, + "failures": 6, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.23915536077402e-06, - 1.4299878046131198e-05 + 1.0602330129394488e-05, + 1.4191975860722295e-05 ], - "worst_mean_abs": 2.407887343467058e-06, - "worst_max_relative": 0.05869106076708458, - "worst_tolerance_ratio": 0.9989764370069022 + "worst_mean_abs": 2.4469045899728142e-06, + "worst_max_relative": 0.055807289324445675, + "worst_tolerance_ratio": 1.0603177923768075 }, "virial": { "comparisons": 81, - "failures": 48, + "failures": 21, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.857040161718949e-05, - 0.00023186765260030384 + 5.913783580169252e-05, + 0.0004544404157869053 ], - "worst_mean_abs": 8.918196586041007e-05, - "worst_max_relative": 0.0011053859730406233, - "worst_tolerance_ratio": 6.968473052985282 + "worst_mean_abs": 0.00016479349701025036, + "worst_max_relative": 0.00029586566081259353, + "worst_tolerance_ratio": 2.5569201058159927 }, "stress": { "comparisons": 81, @@ -6407,148 +7416,148 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.036130836032042e-09, - 4.0871523291447984e-08 + 2.3792624247740216e-09, + 1.9556793925989188e-08 ], - "worst_mean_abs": 2.0005938244898643e-08, - "worst_max_relative": 0.001105385973040554, - "worst_tolerance_ratio": 0.004080365509216011 + "worst_mean_abs": 9.251974924723359e-09, + "worst_max_relative": 0.0002902433440044892, + "worst_tolerance_ratio": 0.0019498117609229012 } } }, { "model": "Nano", - "n": 1000, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", + "n": 4096, + "left": "ECS", + "right": "ECS", + "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.049041748046875e-05, - 0.0001621246337890625 + 3.2782554626464844e-06, + 0.00010496377944946289 ], - "worst_mean_abs": 0.0001621246337890625, - "worst_max_relative": 1.7846138241864485e-08, - "worst_tolerance_ratio": 0.0001784594179969714 + "worst_mean_abs": 0.00010496377944946289, + "worst_max_relative": 2.820490341130655e-09, + "worst_tolerance_ratio": 2.820482762188252e-05 }, "forces": { - "comparisons": 243, - "failures": 2, + "comparisons": 27, + "failures": 1, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.188628087297701e-06, - 1.4893052075137803e-05 + 1.1012454613323897e-05, + 1.3474542688740598e-05 ], - "worst_mean_abs": 2.4770690623598473e-06, - "worst_max_relative": 0.09800483993834193, - "worst_tolerance_ratio": 1.0179765327467225 + "worst_mean_abs": 2.449811873339659e-06, + "worst_max_relative": 0.05712531834738512, + "worst_tolerance_ratio": 1.082895966258643 }, "virial": { - "comparisons": 243, - "failures": 117, + "comparisons": 27, + "failures": 2, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.177535218368277e-05, - 0.000263732172986586 + 6.502211816084014e-05, + 0.0007513522047641885 ], - "worst_mean_abs": 0.0001287893058575672, - "worst_max_relative": 0.0014646597448872386, - "worst_tolerance_ratio": 9.232787445477102 + "worst_mean_abs": 0.00018108663668983362, + "worst_max_relative": 0.0001329178480579422, + "worst_tolerance_ratio": 1.2806151022648269 }, "stress": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.601070405007388e-09, - 4.648831145715295e-08 + 2.450145628133662e-09, + 3.233436051010676e-08 ], - "worst_mean_abs": 2.680569938080476e-08, - "worst_max_relative": 0.0014646597448872685, - "worst_tolerance_ratio": 0.004630363153779405 + "worst_mean_abs": 1.1021736675087993e-08, + "worst_max_relative": 0.00013291784805790884, + "worst_tolerance_ratio": 0.0032224318346624507 } } }, { "model": "Nano", - "n": 1000, + "n": 4096, "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", + "right": "ECS", + "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.2636184692382812e-05, - 0.00016629695892333984 + 1.7881393432617188e-07, + 0.00010454654693603516 ], - "worst_mean_abs": 0.00016629695892333984, - "worst_max_relative": 1.8305413858383056e-08, - "worst_tolerance_ratio": 0.0001830521236071876 + "worst_mean_abs": 0.00010454654693603516, + "worst_max_relative": 2.809278852015124e-09, + "worst_tolerance_ratio": 2.8092713031991247e-05 }, "forces": { - "comparisons": 243, - "failures": 1, + "comparisons": 81, + "failures": 3, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.16956886065634e-06, - 1.3855962025743906e-05 + 1.0947816213580097e-05, + 1.4619595612330727e-05 ], - "worst_mean_abs": 2.4856888680901968e-06, - "worst_max_relative": 0.07750219826656735, - "worst_tolerance_ratio": 1.0193027676902944 + "worst_mean_abs": 2.4549537244605734e-06, + "worst_max_relative": 0.06653307314399023, + "worst_tolerance_ratio": 1.0633569021722804 }, "virial": { - "comparisons": 243, - "failures": 130, + "comparisons": 81, + "failures": 31, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.3949001278712458e-05, - 0.00030735774929868676 + 8.139299662079935e-05, + 0.0006386222641046047 ], - "worst_mean_abs": 9.88773719763605e-05, - "worst_max_relative": 0.0012774312466267725, - "worst_tolerance_ratio": 8.052553651103347 + "worst_mean_abs": 0.0002539937718310823, + "worst_max_relative": 0.00024616351240990165, + "worst_tolerance_ratio": 2.127400706559791 }, "stress": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.458803219257161e-09, - 5.417823171275087e-08 + 3.5027387675740877e-09, + 2.748303976003773e-08 ], - "worst_mean_abs": 2.1585082166671613e-08, - "worst_max_relative": 0.0012774312466267916, - "worst_tolerance_ratio": 0.00541148836119021 + "worst_mean_abs": 1.3628428496924967e-08, + "worst_max_relative": 0.0002280161720331115, + "worst_tolerance_ratio": 0.002742409539054613 } } }, { "model": "Nano", - "n": 1000, - "left": "ECS", - "right": "BASE", + "n": 4096, + "left": "BASE", + "right": "TORCH", "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, @@ -6560,38 +7569,38 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.0, - 7.56978988647461e-05 - ], - "worst_mean_abs": 7.56978988647461e-05, - "worst_max_relative": 8.332571982793504e-09, - "worst_tolerance_ratio": 8.332480261632657e-05 + 9.381771087646484e-05, + 0.0004324913024902344 + ], + "worst_mean_abs": 0.0004324913024902344, + "worst_max_relative": 1.1621567925613308e-08, + "worst_tolerance_ratio": 0.00011621536697129094 }, "forces": { "comparisons": 243, - "failures": 0, + "failures": 17, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.040669119997347e-06, - 1.3581996914702188e-05 + 1.0699448335649286e-05, + 1.5380760668648463e-05 ], - "worst_mean_abs": 2.3956786149273528e-06, - "worst_max_relative": 0.10272575989262127, - "worst_tolerance_ratio": 0.9698493269688897 + "worst_mean_abs": 2.495833944008858e-06, + "worst_max_relative": 0.1218041691795592, + "worst_tolerance_ratio": 1.1737606695090133 }, "virial": { "comparisons": 243, - "failures": 127, + "failures": 117, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.917792498153716e-05, - 0.00026902910003578917 + 8.534001994853213e-05, + 0.0010465449554954986 ], - "worst_mean_abs": 0.00010588919322393784, - "worst_max_relative": 0.0012909136884334223, - "worst_tolerance_ratio": 8.141944475670089 + "worst_mean_abs": 0.00033525630379976294, + "worst_max_relative": 0.000392902404057476, + "worst_tolerance_ratio": 3.395708892905022 }, "stress": { "comparisons": 243, @@ -6599,152 +7608,152 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.905928685786884e-09, - 4.7422005635034846e-08 + 3.6725984877084223e-09, + 4.503794846999953e-08 ], - "worst_mean_abs": 2.1961323641635452e-08, - "worst_max_relative": 0.001290913688433364, - "worst_tolerance_ratio": 0.004736656047334457 + "worst_mean_abs": 2.0184461408731757e-08, + "worst_max_relative": 0.00039102251639289447, + "worst_tolerance_ratio": 0.00449537229050707 } } }, { "model": "Nano", "n": 4096, - "left": "TORCH", + "left": "ECS", "right": "TORCH", - "scope": "within_process", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.7550926208496094e-06, - 0.00018018484115600586 + 0.00014007091522216797, + 0.00042897462844848633 ], - "worst_mean_abs": 0.00018018484115600586, - "worst_max_relative": 4.84178611221321e-09, - "worst_tolerance_ratio": 4.841773101779251e-05 + "worst_mean_abs": 0.00042897462844848633, + "worst_max_relative": 1.152764526163696e-08, + "worst_tolerance_ratio": 0.00011527614283989478 }, "forces": { - "comparisons": 27, - "failures": 1, + "comparisons": 243, + "failures": 14, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.1379689637491808e-05, - 1.4982336132618457e-05 + 1.0595065332630327e-05, + 1.6019595547867027e-05 ], - "worst_mean_abs": 2.4547730052219226e-06, - "worst_max_relative": 0.049138968291372306, - "worst_tolerance_ratio": 1.0139251240867395 + "worst_mean_abs": 2.4933623047420675e-06, + "worst_max_relative": 0.0874482499180023, + "worst_tolerance_ratio": 1.2258886678228993 }, "virial": { - "comparisons": 27, - "failures": 12, + "comparisons": 243, + "failures": 123, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.570922696866546e-05, - 0.0006978675185784766 + 9.419615040551221e-05, + 0.0010597201746023188 ], - "worst_mean_abs": 0.0002187298961636349, - "worst_max_relative": 0.00027057793322872046, - "worst_tolerance_ratio": 2.338400680089673 + "worst_mean_abs": 0.00034545831419389533, + "worst_max_relative": 0.00035317381025751937, + "worst_tolerance_ratio": 3.0523542542179176 }, "stress": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.118836185367045e-09, - 3.003265285029741e-08 + 3.616717896308061e-09, + 4.560494259298444e-08 ], - "worst_mean_abs": 1.3221937558734407e-08, - "worst_max_relative": 0.00026816880233796657, - "worst_tolerance_ratio": 0.002997649770709088 + "worst_mean_abs": 2.1400371781246815e-08, + "worst_max_relative": 0.00035240315221009375, + "worst_tolerance_ratio": 0.004544973120706526 } } }, { "model": "Nano", "n": 4096, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ 5.960464477539063e-08, - 0.00020241737365722656 + 0.00019782781600952148 ], - "worst_mean_abs": 0.00020241737365722656, - "worst_max_relative": 5.439201305868633e-09, - "worst_tolerance_ratio": 5.439186690111687e-05 + "worst_mean_abs": 0.00019782781600952148, + "worst_max_relative": 5.315847483732588e-09, + "worst_tolerance_ratio": 5.3158331995135595e-05 }, "forces": { - "comparisons": 81, - "failures": 1, + "comparisons": 243, + "failures": 12, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.0645488186522556e-05, - 1.4430636024798105e-05 + 1.0560452640362428e-05, + 1.6222246838282217e-05 ], - "worst_mean_abs": 2.46566899329842e-06, - "worst_max_relative": 0.07148408070325418, - "worst_tolerance_ratio": 1.0410711169993532 + "worst_mean_abs": 2.4624376478042813e-06, + "worst_max_relative": 0.09512105244866108, + "worst_tolerance_ratio": 1.165690936345912 }, "virial": { - "comparisons": 81, - "failures": 31, + "comparisons": 243, + "failures": 61, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.50547983791239e-05, - 0.0006594723001405178 + 7.472756020199256e-05, + 0.0006499977757217223 ], - "worst_mean_abs": 0.00023053475940364935, - "worst_max_relative": 0.00032581061955011103, - "worst_tolerance_ratio": 2.815859630238766 + "worst_mean_abs": 0.0002674953122048487, + "worst_max_relative": 0.000282155212670118, + "worst_tolerance_ratio": 2.4384372008718627 }, "stress": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.964885182298301e-09, - 2.8380318795818353e-08 + 3.0422888713994324e-09, + 2.797258366669768e-08 ], - "worst_mean_abs": 1.3796734660870624e-08, - "worst_max_relative": 0.00032551804695630913, - "worst_tolerance_ratio": 0.0028348150680754898 + "worst_mean_abs": 1.3092076453920842e-08, + "worst_max_relative": 0.00026665945244824915, + "worst_tolerance_ratio": 0.002792028462863683 } } }, { - "model": "Nano", - "n": 4096, - "left": "BASE", - "right": "BASE", + "model": "Neo", + "n": 512, + "left": "TORCH", + "right": "TORCH", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { "comparisons": 27, @@ -6752,38 +7761,38 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.384185791015625e-06, - 0.00019854307174682617 + 5.960464477539063e-08, + 1.9431114196777344e-05 ], - "worst_mean_abs": 0.00019854307174682617, - "worst_max_relative": 5.335067179365246e-09, - "worst_tolerance_ratio": 5.335052843500954e-05 + "worst_mean_abs": 1.9431114196777344e-05, + "worst_max_relative": 4.188324242995521e-09, + "worst_tolerance_ratio": 4.188233966742289e-05 }, "forces": { "comparisons": 27, - "failures": 1, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.0975230118503987e-05, - 1.587357682808488e-05 + 3.2609731945854037e-06, + 4.747404886984441e-06 ], - "worst_mean_abs": 2.4553912382552072e-06, - "worst_max_relative": 0.06999299304932845, - "worst_tolerance_ratio": 1.1102064938466425 + "worst_mean_abs": 8.978503810614952e-07, + "worst_max_relative": 0.017306737612618715, + "worst_tolerance_ratio": 0.38762796723166587 }, "virial": { "comparisons": 27, - "failures": 3, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.00011327967093732738, - 0.00039563343946547036 + 1.3201160093956332e-05, + 7.499779544417606e-05 ], - "worst_mean_abs": 0.0001354829945695456, - "worst_max_relative": 0.00014950168507444765, - "worst_tolerance_ratio": 1.3307480327673997 + "worst_mean_abs": 2.69405048188102e-05, + "worst_max_relative": 8.964576004914634e-05, + "worst_tolerance_ratio": 0.6231889149211002 }, "stress": { "comparisons": 27, @@ -6791,24 +7800,24 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.860255624461571e-09, - 1.7026042088350013e-08 + 4.516617465449846e-09, + 2.5820175837687476e-08 ], - "worst_mean_abs": 7.762377786989415e-09, - "worst_max_relative": 0.00014464547130629135, - "worst_tolerance_ratio": 0.0016974962104918695 + "worst_mean_abs": 1.2324172681592611e-08, + "worst_max_relative": 8.520618752773425e-05, + "worst_tolerance_ratio": 0.0022025215971098228 } } }, { - "model": "Nano", - "n": 4096, - "left": "BASE", - "right": "BASE", + "model": "Neo", + "n": 512, + "left": "TORCH", + "right": "TORCH", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { "comparisons": 81, @@ -6816,38 +7825,38 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.9073486328125e-06, - 0.00023704767227172852 + 4.76837158203125e-07, + 1.8835067749023438e-05 ], - "worst_mean_abs": 0.00023704767227172852, - "worst_max_relative": 6.3697275014967495e-09, - "worst_tolerance_ratio": 6.369710385395575e-05 + "worst_mean_abs": 1.8835067749023438e-05, + "worst_max_relative": 4.059848039222653e-09, + "worst_tolerance_ratio": 4.0597605321796415e-05 }, "forces": { "comparisons": 81, - "failures": 6, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.0602330129394488e-05, - 1.4191975860722295e-05 + 3.107717333250548e-06, + 5.44138504210423e-06 ], - "worst_mean_abs": 2.4469045899728142e-06, - "worst_max_relative": 0.055807289324445675, - "worst_tolerance_ratio": 1.0603177923768075 + "worst_mean_abs": 9.249311995593949e-07, + "worst_max_relative": 0.023970364032297572, + "worst_tolerance_ratio": 0.43357300038769725 }, "virial": { "comparisons": 81, - "failures": 21, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.913783580169252e-05, - 0.0004544404157869053 + 9.732121944772132e-06, + 7.460864499364561e-05 ], - "worst_mean_abs": 0.00016479349701025036, - "worst_max_relative": 0.00029586566081259353, - "worst_tolerance_ratio": 2.5569201058159927 + "worst_mean_abs": 2.28438773992343e-05, + "worst_max_relative": 9.538617603537895e-05, + "worst_tolerance_ratio": 0.6850553841253211 }, "stress": { "comparisons": 81, @@ -6855,24 +7864,24 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.3792624247740216e-09, - 1.9556793925989188e-08 + 2.688710901165882e-09, + 2.5686199459085124e-08 ], - "worst_mean_abs": 9.251974924723359e-09, - "worst_max_relative": 0.0002902433440044892, - "worst_tolerance_ratio": 0.0019498117609229012 + "worst_mean_abs": 1.0444381785731363e-08, + "worst_max_relative": 8.921009301339311e-05, + "worst_tolerance_ratio": 0.0021948404759923523 } } }, { - "model": "Nano", - "n": 4096, - "left": "ECS", - "right": "ECS", + "model": "Neo", + "n": 512, + "left": "BASE", + "right": "BASE", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { "comparisons": 27, @@ -6880,38 +7889,38 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.2782554626464844e-06, - 0.00010496377944946289 + 5.960464477539063e-08, + 2.5212764739990234e-05 ], - "worst_mean_abs": 0.00010496377944946289, - "worst_max_relative": 2.820490341130655e-09, - "worst_tolerance_ratio": 2.820482762188252e-05 + "worst_mean_abs": 2.5212764739990234e-05, + "worst_max_relative": 5.4353916727162585e-09, + "worst_tolerance_ratio": 5.435274498554467e-05 }, "forces": { "comparisons": 27, - "failures": 1, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.1012454613323897e-05, - 1.3474542688740598e-05 + 3.1476767397009553e-06, + 4.934298132752701e-06 ], - "worst_mean_abs": 2.449811873339659e-06, - "worst_max_relative": 0.05712531834738512, - "worst_tolerance_ratio": 1.082895966258643 + "worst_mean_abs": 8.77427157594419e-07, + "worst_max_relative": 0.010513017843535599, + "worst_tolerance_ratio": 0.405881842281788 }, "virial": { "comparisons": 27, - "failures": 2, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.502211816084014e-05, - 0.0007513522047641885 + 1.0980348301714571e-05, + 4.944424244968104e-05 ], - "worst_mean_abs": 0.00018108663668983362, - "worst_max_relative": 0.0001329178480579422, - "worst_tolerance_ratio": 1.2806151022648269 + "worst_mean_abs": 2.3102641591628743e-05, + "worst_max_relative": 8.879032695546355e-05, + "worst_tolerance_ratio": 0.6620543041148937 }, "stress": { "comparisons": 27, @@ -6919,24 +7928,24 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.450145628133662e-09, - 3.233436051010676e-08 + 3.5805127304895656e-09, + 1.7022620819873158e-08 ], - "worst_mean_abs": 1.1021736675087993e-08, - "worst_max_relative": 0.00013291784805790884, - "worst_tolerance_ratio": 0.0032224318346624507 + "worst_mean_abs": 9.680753474747053e-09, + "worst_max_relative": 8.730743784710452e-05, + "worst_tolerance_ratio": 0.0014579698068592367 } } }, { - "model": "Nano", - "n": 4096, - "left": "ECS", - "right": "ECS", + "model": "Neo", + "n": 512, + "left": "BASE", + "right": "BASE", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { "comparisons": 81, @@ -6944,38 +7953,38 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.7881393432617188e-07, - 0.00010454654693603516 + 2.384185791015625e-07, + 2.3543834686279297e-05 ], - "worst_mean_abs": 0.00010454654693603516, - "worst_max_relative": 2.809278852015124e-09, - "worst_tolerance_ratio": 2.8092713031991247e-05 + "worst_mean_abs": 2.3543834686279297e-05, + "worst_max_relative": 5.0756021805971586e-09, + "worst_tolerance_ratio": 5.0754927626434686e-05 }, "forces": { "comparisons": 81, - "failures": 3, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.0947816213580097e-05, - 1.4619595612330727e-05 + 3.1349115907630676e-06, + 5.107811531956941e-06 ], - "worst_mean_abs": 2.4549537244605734e-06, - "worst_max_relative": 0.06653307314399023, - "worst_tolerance_ratio": 1.0633569021722804 + "worst_mean_abs": 8.845002525243235e-07, + "worst_max_relative": 0.014682839719857066, + "worst_tolerance_ratio": 0.43502947533789327 }, "virial": { "comparisons": 81, - "failures": 31, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.139299662079935e-05, - 0.0006386222641046047 + 9.663102446211269e-06, + 6.807341956971413e-05 ], - "worst_mean_abs": 0.0002539937718310823, - "worst_max_relative": 0.00024616351240990165, - "worst_tolerance_ratio": 2.127400706559791 + "worst_mean_abs": 2.427963185406649e-05, + "worst_max_relative": 9.570601298052722e-05, + "worst_tolerance_ratio": 0.7136376509844654 }, "stress": { "comparisons": 81, @@ -6983,148 +7992,148 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.5027387675740877e-09, - 2.748303976003773e-08 + 3.3268045124268397e-09, + 2.3436257729630983e-08 ], - "worst_mean_abs": 1.3628428496924967e-08, - "worst_max_relative": 0.0002280161720331115, - "worst_tolerance_ratio": 0.002742409539054613 + "worst_mean_abs": 1.0438885066395518e-08, + "worst_max_relative": 9.286597361369884e-05, + "worst_tolerance_ratio": 0.0020072914446565035 } } }, { - "model": "Nano", - "n": 4096, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", + "model": "Neo", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.381771087646484e-05, - 0.0004324913024902344 + 1.1920928955078125e-07, + 1.627206802368164e-05 ], - "worst_mean_abs": 0.0004324913024902344, - "worst_max_relative": 1.1621567925613308e-08, - "worst_tolerance_ratio": 0.00011621536697129094 + "worst_mean_abs": 1.627206802368164e-05, + "worst_max_relative": 3.5081241159433527e-09, + "worst_tolerance_ratio": 3.5080484853014864e-05 }, "forces": { - "comparisons": 243, - "failures": 17, + "comparisons": 27, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.0699448335649286e-05, - 1.5380760668648463e-05 + 3.2630516564324807e-06, + 4.8237928353955795e-06 ], - "worst_mean_abs": 2.495833944008858e-06, - "worst_max_relative": 0.1218041691795592, - "worst_tolerance_ratio": 1.1737606695090133 + "worst_mean_abs": 8.784970780970185e-07, + "worst_max_relative": 0.007430362293793376, + "worst_tolerance_ratio": 0.3028129795031166 }, "virial": { - "comparisons": 243, - "failures": 117, + "comparisons": 27, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.534001994853213e-05, - 0.0010465449554954986 + 5.221441437441854e-06, + 4.652849903408196e-05 ], - "worst_mean_abs": 0.00033525630379976294, - "worst_max_relative": 0.000392902404057476, - "worst_tolerance_ratio": 3.395708892905022 + "worst_mean_abs": 2.140936652510966e-05, + "worst_max_relative": 0.00010212266523684922, + "worst_tolerance_ratio": 0.7407159626475908 }, "stress": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.6725984877084223e-09, - 4.503794846999953e-08 + 1.5127417577051258e-09, + 1.6018791210159478e-08 ], - "worst_mean_abs": 2.0184461408731757e-08, - "worst_max_relative": 0.00039102251639289447, - "worst_tolerance_ratio": 0.00449537229050707 + "worst_mean_abs": 8.932223261531584e-09, + "worst_max_relative": 0.00010105843412369265, + "worst_tolerance_ratio": 0.0013687301823958726 } } }, { - "model": "Nano", - "n": 4096, + "model": "Neo", + "n": 512, "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", + "right": "ECS", + "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.00014007091522216797, - 0.00042897462844848633 + 0.0, + 1.7404556274414062e-05 ], - "worst_mean_abs": 0.00042897462844848633, - "worst_max_relative": 1.152764526163696e-08, - "worst_tolerance_ratio": 0.00011527614283989478 + "worst_mean_abs": 1.7404556274414062e-05, + "worst_max_relative": 3.75227928827542e-09, + "worst_tolerance_ratio": 3.752198393961901e-05 }, "forces": { - "comparisons": 243, - "failures": 14, + "comparisons": 81, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.0595065332630327e-05, - 1.6019595547867027e-05 + 3.247226459279773e-06, + 4.922026811016167e-06 ], - "worst_mean_abs": 2.4933623047420675e-06, - "worst_max_relative": 0.0874482499180023, - "worst_tolerance_ratio": 1.2258886678228993 + "worst_mean_abs": 8.943560492395342e-07, + "worst_max_relative": 0.010693852842127965, + "worst_tolerance_ratio": 0.3912418460824434 }, "virial": { - "comparisons": 243, - "failures": 123, + "comparisons": 81, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.419615040551221e-05, - 0.0010597201746023188 + 1.2897677962087073e-05, + 6.690316941870833e-05 ], - "worst_mean_abs": 0.00034545831419389533, - "worst_max_relative": 0.00035317381025751937, - "worst_tolerance_ratio": 3.0523542542179176 + "worst_mean_abs": 2.3082899057700087e-05, + "worst_max_relative": 0.00012418672821572164, + "worst_tolerance_ratio": 0.8632753370872855 }, "stress": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.616717896308061e-09, - 4.560494259298444e-08 + 3.927862932747318e-09, + 2.303336502432196e-08 ], - "worst_mean_abs": 2.1400371781246815e-08, - "worst_max_relative": 0.00035240315221009375, - "worst_tolerance_ratio": 0.004544973120706526 + "worst_mean_abs": 1.0508478704322638e-08, + "worst_max_relative": 0.00011956456218811446, + "worst_tolerance_ratio": 0.0019727836741424472 } } }, { - "model": "Nano", - "n": 4096, - "left": "ECS", - "right": "BASE", + "model": "Neo", + "n": 512, + "left": "BASE", + "right": "TORCH", "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, @@ -7136,38 +8145,38 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 0.00019782781600952148 + 0.0, + 3.11732292175293e-05 ], - "worst_mean_abs": 0.00019782781600952148, - "worst_max_relative": 5.315847483732588e-09, - "worst_tolerance_ratio": 5.3158331995135595e-05 + "worst_mean_abs": 3.11732292175293e-05, + "worst_max_relative": 6.7203542344629495e-09, + "worst_tolerance_ratio": 6.720209359554062e-05 }, "forces": { "comparisons": 243, - "failures": 12, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.0560452640362428e-05, - 1.6222246838282217e-05 + 4.320936966450972e-06, + 6.98078465077856e-06 ], - "worst_mean_abs": 2.4624376478042813e-06, - "worst_max_relative": 0.09512105244866108, - "worst_tolerance_ratio": 1.165690936345912 + "worst_mean_abs": 1.301702057805836e-06, + "worst_max_relative": 0.023747693641991956, + "worst_tolerance_ratio": 0.5511649375814351 }, "virial": { "comparisons": 243, - "failures": 61, + "failures": 5, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.472756020199256e-05, - 0.0006499977757217223 + 7.577082898535537e-05, + 0.000177129442924695 ], - "worst_mean_abs": 0.0002674953122048487, - "worst_max_relative": 0.000282155212670118, - "worst_tolerance_ratio": 2.4384372008718627 + "worst_mean_abs": 4.4845525424299896e-05, + "worst_max_relative": 0.00016002130098533964, + "worst_tolerance_ratio": 1.1932279911921873 }, "stress": { "comparisons": 243, @@ -7175,152 +8184,152 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.0422888713994324e-09, - 2.797258366669768e-08 + 2.608631515313431e-08, + 6.098197067455624e-08 ], - "worst_mean_abs": 1.3092076453920842e-08, - "worst_max_relative": 0.00026665945244824915, - "worst_tolerance_ratio": 0.002792028462863683 + "worst_mean_abs": 1.9536046954743435e-08, + "worst_max_relative": 0.00015516985022330314, + "worst_tolerance_ratio": 0.00519714666448471 } } }, { "model": "Neo", "n": 512, - "left": "TORCH", + "left": "ECS", "right": "TORCH", - "scope": "within_process", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": true, + "all_passed": false, "metrics": { "energy": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 1.9431114196777344e-05 + 1.1920928955078125e-07, + 2.9265880584716797e-05 ], - "worst_mean_abs": 1.9431114196777344e-05, - "worst_max_relative": 4.188324242995521e-09, - "worst_tolerance_ratio": 4.188233966742289e-05 + "worst_mean_abs": 2.9265880584716797e-05, + "worst_max_relative": 6.30916621246904e-09, + "worst_tolerance_ratio": 6.309030201799321e-05 }, "forces": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.2609731945854037e-06, - 4.747404886984441e-06 + 4.555514710347097e-06, + 7.4104944003394735e-06 ], - "worst_mean_abs": 8.978503810614952e-07, - "worst_max_relative": 0.017306737612618715, - "worst_tolerance_ratio": 0.38762796723166587 + "worst_mean_abs": 1.3147059162983785e-06, + "worst_max_relative": 0.019166484553874742, + "worst_tolerance_ratio": 0.49439101729730117 }, "virial": { - "comparisons": 27, - "failures": 0, + "comparisons": 243, + "failures": 2, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.3201160093956332e-05, - 7.499779544417606e-05 + 7.720420472878686e-05, + 0.00015936589559828462 ], - "worst_mean_abs": 2.69405048188102e-05, - "worst_max_relative": 8.964576004914634e-05, - "worst_tolerance_ratio": 0.6231889149211002 + "worst_mean_abs": 4.3519479409454614e-05, + "worst_max_relative": 0.00013806815235107146, + "worst_tolerance_ratio": 1.0295242277198577 }, "stress": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.516617465449846e-09, - 2.5820175837687476e-08 + 2.6579796509607068e-08, + 5.4866352038052124e-08 ], - "worst_mean_abs": 1.2324172681592611e-08, - "worst_max_relative": 8.520618752773425e-05, - "worst_tolerance_ratio": 0.0022025215971098228 + "worst_mean_abs": 1.850526839180634e-08, + "worst_max_relative": 0.00013791565426637806, + "worst_tolerance_ratio": 0.004675947256751742 } } }, { "model": "Neo", "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": true, "metrics": { "energy": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.76837158203125e-07, - 1.8835067749023438e-05 + 0.0, + 2.3305416107177734e-05 ], - "worst_mean_abs": 1.8835067749023438e-05, - "worst_max_relative": 4.059848039222653e-09, - "worst_tolerance_ratio": 4.0597605321796415e-05 + "worst_mean_abs": 2.3305416107177734e-05, + "worst_max_relative": 5.024203650193988e-09, + "worst_tolerance_ratio": 5.024095340271387e-05 }, "forces": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.107717333250548e-06, - 5.44138504210423e-06 + 3.149001635449622e-06, + 5.300833180399422e-06 ], - "worst_mean_abs": 9.249311995593949e-07, - "worst_max_relative": 0.023970364032297572, - "worst_tolerance_ratio": 0.43357300038769725 + "worst_mean_abs": 9.081053590347504e-07, + "worst_max_relative": 0.01951982001831704, + "worst_tolerance_ratio": 0.4047742918420026 }, "virial": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.732121944772132e-06, - 7.460864499364561e-05 + 7.727628684506271e-06, + 7.27847996699893e-05 ], - "worst_mean_abs": 2.28438773992343e-05, - "worst_max_relative": 9.538617603537895e-05, - "worst_tolerance_ratio": 0.6850553841253211 + "worst_mean_abs": 2.627854990433498e-05, + "worst_max_relative": 0.00012862412483404494, + "worst_tolerance_ratio": 0.9590701868020425 }, "stress": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.688710901165882e-09, - 2.5686199459085124e-08 + 2.6604612887726198e-09, + 2.5058287573404003e-08 ], - "worst_mean_abs": 1.0444381785731363e-08, - "worst_max_relative": 8.921009301339311e-05, - "worst_tolerance_ratio": 0.0021948404759923523 + "worst_mean_abs": 1.1340602186929626e-08, + "worst_max_relative": 0.0001263035009572724, + "worst_tolerance_ratio": 0.002146216637660616 } } }, { "model": "Neo", "n": 512, - "left": "BASE", - "right": "BASE", + "left": "ECS_RUNTIME", + "right": "ECS_RUNTIME", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": true, + "all_passed": false, "metrics": { "energy": { "comparisons": 27, @@ -7328,12 +8337,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 2.5212764739990234e-05 + 4.172325134277344e-07, + 1.823902130126953e-05 ], - "worst_mean_abs": 2.5212764739990234e-05, - "worst_max_relative": 5.4353916727162585e-09, - "worst_tolerance_ratio": 5.435274498554467e-05 + "worst_mean_abs": 1.823902130126953e-05, + "worst_max_relative": 3.931371831813152e-09, + "worst_tolerance_ratio": 3.931287093980519e-05 }, "forces": { "comparisons": 27, @@ -7341,25 +8350,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.1476767397009553e-06, - 4.934298132752701e-06 + 3.4027584945306444e-06, + 4.478831954202178e-06 ], - "worst_mean_abs": 8.77427157594419e-07, - "worst_max_relative": 0.010513017843535599, - "worst_tolerance_ratio": 0.405881842281788 + "worst_mean_abs": 8.879678381754321e-07, + "worst_max_relative": 0.01887905391732344, + "worst_tolerance_ratio": 0.384610504452657 }, "virial": { "comparisons": 27, - "failures": 0, + "failures": 1, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.0980348301714571e-05, - 4.944424244968104e-05 + 1.187376995659406e-05, + 4.710241667282844e-05 ], - "worst_mean_abs": 2.3102641591628743e-05, - "worst_max_relative": 8.879032695546355e-05, - "worst_tolerance_ratio": 0.6620543041148937 + "worst_mean_abs": 2.0205595327782433e-05, + "worst_max_relative": 0.00015129978263289597, + "worst_tolerance_ratio": 1.0518007657527986 }, "stress": { "comparisons": 27, @@ -7367,20 +8376,20 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.5805127304895656e-09, - 1.7022620819873158e-08 + 2.9627549210102695e-09, + 1.6216379079836418e-08 ], - "worst_mean_abs": 9.680753474747053e-09, - "worst_max_relative": 8.730743784710452e-05, - "worst_tolerance_ratio": 0.0014579698068592367 + "worst_mean_abs": 8.28830918661883e-09, + "worst_max_relative": 0.00013901597435079626, + "worst_tolerance_ratio": 0.0013856132739718786 } } }, { "model": "Neo", "n": 512, - "left": "BASE", - "right": "BASE", + "left": "ECS_RUNTIME", + "right": "ECS_RUNTIME", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -7392,12 +8401,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.384185791015625e-07, - 2.3543834686279297e-05 + 5.960464477539063e-08, + 1.430511474609375e-05 ], - "worst_mean_abs": 2.3543834686279297e-05, - "worst_max_relative": 5.0756021805971586e-09, - "worst_tolerance_ratio": 5.0754927626434686e-05 + "worst_mean_abs": 1.430511474609375e-05, + "worst_max_relative": 3.08342888769659e-09, + "worst_tolerance_ratio": 3.083362426651388e-05 }, "forces": { "comparisons": 81, @@ -7405,12 +8414,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.1349115907630676e-06, - 5.107811531956941e-06 + 3.251296565309758e-06, + 5.501838188592956e-06 ], - "worst_mean_abs": 8.845002525243235e-07, - "worst_max_relative": 0.014682839719857066, - "worst_tolerance_ratio": 0.43502947533789327 + "worst_mean_abs": 8.94282464388377e-07, + "worst_max_relative": 0.018301404993686796, + "worst_tolerance_ratio": 0.3389598237117009 }, "virial": { "comparisons": 81, @@ -7418,12 +8427,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.663102446211269e-06, - 6.807341956971413e-05 + 6.899578593788647e-06, + 5.424304983137063e-05 ], - "worst_mean_abs": 2.427963185406649e-05, - "worst_max_relative": 9.570601298052722e-05, - "worst_tolerance_ratio": 0.7136376509844654 + "worst_mean_abs": 2.218789910611739e-05, + "worst_max_relative": 0.00013062633192669992, + "worst_tolerance_ratio": 0.9080476063585313 }, "stress": { "comparisons": 81, @@ -7431,148 +8440,148 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.3268045124268397e-09, - 2.3436257729630983e-08 + 2.3753809232085477e-09, + 1.8674750055375222e-08 ], - "worst_mean_abs": 1.0438885066395518e-08, - "worst_max_relative": 9.286597361369884e-05, - "worst_tolerance_ratio": 0.0020072914446565035 + "worst_mean_abs": 9.325875661738854e-09, + "worst_max_relative": 0.00012723511511573475, + "worst_tolerance_ratio": 0.001591806855818132 } } }, { "model": "Neo", "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "within_process", + "left": "ECS_RUNTIME", + "right": "BASE", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": true, + "all_passed": false, "metrics": { "energy": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.1920928955078125e-07, - 1.627206802368164e-05 + 5.960464477539063e-08, + 2.300739288330078e-05 ], - "worst_mean_abs": 1.627206802368164e-05, - "worst_max_relative": 3.5081241159433527e-09, - "worst_tolerance_ratio": 3.5080484853014864e-05 + "worst_mean_abs": 2.300739288330078e-05, + "worst_max_relative": 4.959955548634185e-09, + "worst_tolerance_ratio": 4.959848623747794e-05 }, "forces": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.2630516564324807e-06, - 4.8237928353955795e-06 + 3.041573313211643e-06, + 5.381715737939885e-06 ], - "worst_mean_abs": 8.784970780970185e-07, - "worst_max_relative": 0.007430362293793376, - "worst_tolerance_ratio": 0.3028129795031166 + "worst_mean_abs": 8.940980457543222e-07, + "worst_max_relative": 0.01730310324091974, + "worst_tolerance_ratio": 0.4056752851276045 }, "virial": { - "comparisons": 27, - "failures": 0, + "comparisons": 243, + "failures": 1, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.221441437441854e-06, - 4.652849903408196e-05 + 9.280695550728524e-06, + 6.28518736505157e-05 ], - "worst_mean_abs": 2.140936652510966e-05, - "worst_max_relative": 0.00010212266523684922, - "worst_tolerance_ratio": 0.7407159626475908 + "worst_mean_abs": 2.4657616244853447e-05, + "worst_max_relative": 0.00015057011349743692, + "worst_tolerance_ratio": 1.0466802364928165 }, "stress": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.5127417577051258e-09, - 1.6018791210159478e-08 + 2.714803833125945e-09, + 2.1638588438427364e-08 ], - "worst_mean_abs": 8.932223261531584e-09, - "worst_max_relative": 0.00010105843412369265, - "worst_tolerance_ratio": 0.0013687301823958726 + "worst_mean_abs": 1.0687658860052346e-08, + "worst_max_relative": 0.00013747832988509967, + "worst_tolerance_ratio": 0.0018533229130682667 } } }, { "model": "Neo", "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "across_process", + "left": "ECS_RUNTIME", + "right": "TORCH", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": true, + "all_passed": false, "metrics": { "energy": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.0, - 1.7404556274414062e-05 + 5.960464477539063e-08, + 2.372264862060547e-05 ], - "worst_mean_abs": 1.7404556274414062e-05, - "worst_max_relative": 3.75227928827542e-09, - "worst_tolerance_ratio": 3.752198393961901e-05 + "worst_mean_abs": 2.372264862060547e-05, + "worst_max_relative": 5.113352931576556e-09, + "worst_tolerance_ratio": 5.113242717008802e-05 }, "forces": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.247226459279773e-06, - 4.922026811016167e-06 + 4.382804867475443e-06, + 7.11331466263232e-06 ], - "worst_mean_abs": 8.943560492395342e-07, - "worst_max_relative": 0.010693852842127965, - "worst_tolerance_ratio": 0.3912418460824434 + "worst_mean_abs": 1.3166069551366621e-06, + "worst_max_relative": 0.02655375733126387, + "worst_tolerance_ratio": 0.46895896698125333 }, "virial": { - "comparisons": 81, - "failures": 0, + "comparisons": 243, + "failures": 1, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.2897677962087073e-05, - 6.690316941870833e-05 + 7.607469999015848e-05, + 0.00016483452873217175 ], - "worst_mean_abs": 2.3082899057700087e-05, - "worst_max_relative": 0.00012418672821572164, - "worst_tolerance_ratio": 0.8632753370872855 + "worst_mean_abs": 4.6549471445778146e-05, + "worst_max_relative": 0.00013903895986944434, + "worst_tolerance_ratio": 1.0367631879260903 }, "stress": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.927862932747318e-09, - 2.303336502432196e-08 + 2.6190931600583722e-08, + 5.6749088300084294e-08 ], - "worst_mean_abs": 1.0508478704322638e-08, - "worst_max_relative": 0.00011956456218811446, - "worst_tolerance_ratio": 0.0019727836741424472 + "worst_mean_abs": 2.0157306509959463e-08, + "worst_max_relative": 0.00012932630906013269, + "worst_tolerance_ratio": 0.004836402164589076 } } }, { "model": "Neo", "n": 512, - "left": "BASE", - "right": "TORCH", + "left": "ECS_RUNTIME", + "right": "ECS", "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, @@ -7585,11 +8594,11 @@ "all_bitwise": false, "max_abs_range": [ 0.0, - 3.11732292175293e-05 + 2.110004425048828e-05 ], - "worst_mean_abs": 3.11732292175293e-05, - "worst_max_relative": 6.7203542344629495e-09, - "worst_tolerance_ratio": 6.720209359554062e-05 + "worst_mean_abs": 2.110004425048828e-05, + "worst_max_relative": 4.548767522006548e-09, + "worst_tolerance_ratio": 4.548669461359525e-05 }, "forces": { "comparisons": 243, @@ -7597,25 +8606,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.320936966450972e-06, - 6.98078465077856e-06 + 3.023531462531537e-06, + 5.139336284543106e-06 ], - "worst_mean_abs": 1.301702057805836e-06, - "worst_max_relative": 0.023747693641991956, - "worst_tolerance_ratio": 0.5511649375814351 + "worst_mean_abs": 9.208346959116662e-07, + "worst_max_relative": 0.02196538192903394, + "worst_tolerance_ratio": 0.37540362920854503 }, "virial": { "comparisons": 243, - "failures": 5, + "failures": 1, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.577082898535537e-05, - 0.000177129442924695 + 6.925895355891498e-06, + 6.314527961848171e-05 ], - "worst_mean_abs": 4.4845525424299896e-05, - "worst_max_relative": 0.00016002130098533964, - "worst_tolerance_ratio": 1.1932279911921873 + "worst_mean_abs": 2.5952830151918268e-05, + "worst_max_relative": 0.0001588631944276362, + "worst_tolerance_ratio": 1.1043263615259558 }, "stress": { "comparisons": 243, @@ -7623,152 +8632,152 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.608631515313431e-08, - 6.098197067455624e-08 + 2.3844412347373556e-09, + 2.1739601990117263e-08 ], - "worst_mean_abs": 1.9536046954743435e-08, - "worst_max_relative": 0.00015516985022330314, - "worst_tolerance_ratio": 0.00519714666448471 + "worst_mean_abs": 1.1690886852271145e-08, + "worst_max_relative": 0.0001457990668108247, + "worst_tolerance_ratio": 0.0018530501501788162 } } }, { "model": "Neo", - "n": 512, - "left": "ECS", + "n": 1000, + "left": "TORCH", "right": "TORCH", - "scope": "cross_implementation", + "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.1920928955078125e-07, - 2.9265880584716797e-05 + 5.960464477539062e-07, + 2.9385089874267578e-05 ], - "worst_mean_abs": 2.9265880584716797e-05, - "worst_max_relative": 6.30916621246904e-09, - "worst_tolerance_ratio": 6.309030201799321e-05 + "worst_mean_abs": 2.9385089874267578e-05, + "worst_max_relative": 3.2432541782451404e-09, + "worst_tolerance_ratio": 3.243218382603148e-05 }, "forces": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.555514710347097e-06, - 7.4104944003394735e-06 + 3.633342629427716e-06, + 5.042250927900227e-06 ], - "worst_mean_abs": 1.3147059162983785e-06, - "worst_max_relative": 0.019166484553874742, - "worst_tolerance_ratio": 0.49439101729730117 + "worst_mean_abs": 8.955368340426614e-07, + "worst_max_relative": 0.019529283716999562, + "worst_tolerance_ratio": 0.3544008260806043 }, "virial": { - "comparisons": 243, - "failures": 2, + "comparisons": 27, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.720420472878686e-05, - 0.00015936589559828462 + 1.79551512786702e-05, + 8.293916171453475e-05 ], - "worst_mean_abs": 4.3519479409454614e-05, - "worst_max_relative": 0.00013806815235107146, - "worst_tolerance_ratio": 1.0295242277198577 + "worst_mean_abs": 3.160659930988451e-05, + "worst_max_relative": 5.391707177716919e-05, + "worst_tolerance_ratio": 0.4761605395263849 }, "stress": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.6579796509607068e-08, - 5.4866352038052124e-08 + 2.4962958484163467e-09, + 1.4619761928846842e-08 ], - "worst_mean_abs": 1.850526839180634e-08, - "worst_max_relative": 0.00013791565426637806, - "worst_tolerance_ratio": 0.004675947256751742 + "worst_mean_abs": 6.723154353794865e-09, + "worst_max_relative": 5.092272442244048e-05, + "worst_tolerance_ratio": 0.0012499379715431075 } } }, { "model": "Neo", - "n": 512, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", + "n": 1000, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": true, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.0, - 2.3305416107177734e-05 + 1.1920928955078125e-07, + 2.7358531951904297e-05 ], - "worst_mean_abs": 2.3305416107177734e-05, - "worst_max_relative": 5.024203650193988e-09, - "worst_tolerance_ratio": 5.024095340271387e-05 + "worst_mean_abs": 2.7358531951904297e-05, + "worst_max_relative": 3.0195814762971996e-09, + "worst_tolerance_ratio": 3.0195481493201726e-05 }, "forces": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.149001635449622e-06, - 5.300833180399422e-06 + 3.4707768179487175e-06, + 5.587821542363258e-06 ], - "worst_mean_abs": 9.081053590347504e-07, - "worst_max_relative": 0.01951982001831704, - "worst_tolerance_ratio": 0.4047742918420026 + "worst_mean_abs": 9.1447115139535e-07, + "worst_max_relative": 0.03025642234591212, + "worst_tolerance_ratio": 0.3545796580672326 }, "virial": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.727628684506271e-06, - 7.27847996699893e-05 + 1.4830776261298695e-05, + 0.0001008340942405539 ], - "worst_mean_abs": 2.627854990433498e-05, - "worst_max_relative": 0.00012862412483404494, - "worst_tolerance_ratio": 0.9590701868020425 + "worst_mean_abs": 3.617341710502073e-05, + "worst_max_relative": 5.636826848955988e-05, + "worst_tolerance_ratio": 0.4978049224428248 }, "stress": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.6604612887726198e-09, - 2.5058287573404003e-08 + 2.1806387771883262e-09, + 1.7774118059310506e-08 ], - "worst_mean_abs": 1.1340602186929626e-08, - "worst_max_relative": 0.0001263035009572724, - "worst_tolerance_ratio": 0.002146216637660616 + "worst_mean_abs": 8.605640609729397e-09, + "worst_max_relative": 4.9030358175449284e-05, + "worst_tolerance_ratio": 0.0015196244616074491 } } }, { "model": "Neo", - "n": 512, - "left": "ECS_RUNTIME", - "right": "ECS_RUNTIME", + "n": 1000, + "left": "BASE", + "right": "BASE", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { "comparisons": 27, @@ -7776,12 +8785,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.172325134277344e-07, - 1.823902130126953e-05 + 7.152557373046875e-07, + 2.0742416381835938e-05 ], - "worst_mean_abs": 1.823902130126953e-05, - "worst_max_relative": 3.931371831813152e-09, - "worst_tolerance_ratio": 3.931287093980519e-05 + "worst_mean_abs": 2.0742416381835938e-05, + "worst_max_relative": 2.289308671490993e-09, + "worst_tolerance_ratio": 2.2892834050212908e-05 }, "forces": { "comparisons": 27, @@ -7789,25 +8798,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.4027584945306444e-06, - 4.478831954202178e-06 + 3.33537617791535e-06, + 4.863794103471264e-06 ], - "worst_mean_abs": 8.879678381754321e-07, - "worst_max_relative": 0.01887905391732344, - "worst_tolerance_ratio": 0.384610504452657 + "worst_mean_abs": 8.753199977989771e-07, + "worst_max_relative": 0.039481397851827686, + "worst_tolerance_ratio": 0.3434311438755049 }, "virial": { "comparisons": 27, - "failures": 1, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.187376995659406e-05, - 4.710241667282844e-05 + 1.661514428974442e-05, + 7.371263139077655e-05 ], - "worst_mean_abs": 2.0205595327782433e-05, - "worst_max_relative": 0.00015129978263289597, - "worst_tolerance_ratio": 1.0518007657527986 + "worst_mean_abs": 2.9762359849577142e-05, + "worst_max_relative": 4.005407482042947e-05, + "worst_tolerance_ratio": 0.3498361872269447 }, "stress": { "comparisons": 27, @@ -7815,20 +8824,20 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.9627549210102695e-09, - 1.6216379079836418e-08 + 2.928766687504414e-09, + 1.299339298654889e-08 ], - "worst_mean_abs": 8.28830918661883e-09, - "worst_max_relative": 0.00013901597435079626, - "worst_tolerance_ratio": 0.0013856132739718786 + "worst_mean_abs": 6.664745576811708e-09, + "worst_max_relative": 3.4466479293943406e-05, + "worst_tolerance_ratio": 0.0011097018798516436 } } }, { "model": "Neo", - "n": 512, - "left": "ECS_RUNTIME", - "right": "ECS_RUNTIME", + "n": 1000, + "left": "BASE", + "right": "BASE", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -7841,11 +8850,11 @@ "all_bitwise": false, "max_abs_range": [ 5.960464477539063e-08, - 1.430511474609375e-05 + 1.8477439880371094e-05 ], - "worst_mean_abs": 1.430511474609375e-05, - "worst_max_relative": 3.08342888769659e-09, - "worst_tolerance_ratio": 3.083362426651388e-05 + "worst_mean_abs": 1.8477439880371094e-05, + "worst_max_relative": 2.0396011677119513e-09, + "worst_tolerance_ratio": 2.0395786541655314e-05 }, "forces": { "comparisons": 81, @@ -7853,12 +8862,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.251296565309758e-06, - 5.501838188592956e-06 + 3.363191295235879e-06, + 5.304643678982757e-06 ], - "worst_mean_abs": 8.94282464388377e-07, - "worst_max_relative": 0.018301404993686796, - "worst_tolerance_ratio": 0.3389598237117009 + "worst_mean_abs": 8.877775632153787e-07, + "worst_max_relative": 0.035986585358925086, + "worst_tolerance_ratio": 0.3850449259112016 }, "virial": { "comparisons": 81, @@ -7866,12 +8875,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.899578593788647e-06, - 5.424304983137063e-05 + 1.574394066494733e-05, + 0.00010225479562109285 ], - "worst_mean_abs": 2.218789910611739e-05, - "worst_max_relative": 0.00013062633192669992, - "worst_tolerance_ratio": 0.9080476063585313 + "worst_mean_abs": 3.7090118130195864e-05, + "worst_max_relative": 6.306032100029021e-05, + "worst_tolerance_ratio": 0.550774980147506 }, "stress": { "comparisons": 81, @@ -7879,152 +8888,152 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.3753809232085477e-09, - 1.8674750055375222e-08 + 2.277453541726926e-09, + 1.8024546390160712e-08 ], - "worst_mean_abs": 9.325875661738854e-09, - "worst_max_relative": 0.00012723511511573475, - "worst_tolerance_ratio": 0.001591806855818132 + "worst_mean_abs": 8.831049912109184e-09, + "worst_max_relative": 5.688659105625272e-05, + "worst_tolerance_ratio": 0.0015366056238270908 } } }, { "model": "Neo", - "n": 512, - "left": "ECS_RUNTIME", - "right": "BASE", - "scope": "cross_implementation", + "n": 1000, + "left": "ECS", + "right": "ECS", + "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 2.300739288330078e-05 + 6.556510925292969e-07, + 3.3020973205566406e-05 ], - "worst_mean_abs": 2.300739288330078e-05, - "worst_max_relative": 4.959955548634185e-09, - "worst_tolerance_ratio": 4.959848623747794e-05 + "worst_mean_abs": 3.3020973205566406e-05, + "worst_max_relative": 3.644964670313225e-09, + "worst_tolerance_ratio": 3.6449244364269796e-05 }, "forces": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.041573313211643e-06, - 5.381715737939885e-06 + 3.5435822987039955e-06, + 4.635432755861757e-06 ], - "worst_mean_abs": 8.940980457543222e-07, - "worst_max_relative": 0.01730310324091974, - "worst_tolerance_ratio": 0.4056752851276045 + "worst_mean_abs": 8.828076564637392e-07, + "worst_max_relative": 0.03565022753686914, + "worst_tolerance_ratio": 0.3128566411552532 }, "virial": { - "comparisons": 243, - "failures": 1, + "comparisons": 27, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.280695550728524e-06, - 6.28518736505157e-05 + 1.599221879189372e-05, + 7.633215030011797e-05 ], - "worst_mean_abs": 2.4657616244853447e-05, - "worst_max_relative": 0.00015057011349743692, - "worst_tolerance_ratio": 1.0466802364928165 + "worst_mean_abs": 3.179121207757479e-05, + "worst_max_relative": 4.165436131010499e-05, + "worst_tolerance_ratio": 0.3678620572512016 }, "stress": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.714803833125945e-09, - 2.1638588438427364e-08 + 2.645426277342322e-09, + 1.34551379794845e-08 ], - "worst_mean_abs": 1.0687658860052346e-08, - "worst_max_relative": 0.00013747832988509967, - "worst_tolerance_ratio": 0.0018533229130682667 + "worst_mean_abs": 7.085925340050957e-09, + "worst_max_relative": 4.042028814875951e-05, + "worst_tolerance_ratio": 0.0011503664785505194 } } }, { "model": "Neo", - "n": 512, - "left": "ECS_RUNTIME", - "right": "TORCH", - "scope": "cross_implementation", + "n": 1000, + "left": "ECS", + "right": "ECS", + "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 2.372264862060547e-05 + 2.980232238769531e-07, + 3.063678741455078e-05 ], - "worst_mean_abs": 2.372264862060547e-05, - "worst_max_relative": 5.113352931576556e-09, - "worst_tolerance_ratio": 5.113242717008802e-05 + "worst_mean_abs": 3.063678741455078e-05, + "worst_max_relative": 3.381404968813222e-09, + "worst_tolerance_ratio": 3.3813676484074856e-05 }, "forces": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.382804867475443e-06, - 7.11331466263232e-06 + 3.361861978135039e-06, + 5.388645796244873e-06 ], - "worst_mean_abs": 1.3166069551366621e-06, - "worst_max_relative": 0.02655375733126387, - "worst_tolerance_ratio": 0.46895896698125333 + "worst_mean_abs": 9.034893317737176e-07, + "worst_max_relative": 0.0370182513885458, + "worst_tolerance_ratio": 0.34711442598892767 }, "virial": { - "comparisons": 243, - "failures": 1, + "comparisons": 81, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.607469999015848e-05, - 0.00016483452873217175 + 1.0433619962668672e-05, + 0.00010179705985535747 ], - "worst_mean_abs": 4.6549471445778146e-05, - "worst_max_relative": 0.00013903895986944434, - "worst_tolerance_ratio": 1.0367631879260903 + "worst_mean_abs": 3.785335627723738e-05, + "worst_max_relative": 5.7465137916573e-05, + "worst_tolerance_ratio": 0.5019102458657091 }, "stress": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.6190931600583722e-08, - 5.6749088300084294e-08 + 1.8391437366094276e-09, + 1.7943860886743268e-08 ], - "worst_mean_abs": 2.0157306509959463e-08, - "worst_max_relative": 0.00012932630906013269, - "worst_tolerance_ratio": 0.004836402164589076 + "worst_mean_abs": 8.864620042806805e-09, + "worst_max_relative": 5.051624883690171e-05, + "worst_tolerance_ratio": 0.0015341363344884929 } } }, { "model": "Neo", - "n": 512, - "left": "ECS_RUNTIME", - "right": "ECS", + "n": 1000, + "left": "BASE", + "right": "TORCH", "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { "comparisons": 243, @@ -8033,11 +9042,11 @@ "all_bitwise": false, "max_abs_range": [ 0.0, - 2.110004425048828e-05 + 2.7358531951904297e-05 ], - "worst_mean_abs": 2.110004425048828e-05, - "worst_max_relative": 4.548767522006548e-09, - "worst_tolerance_ratio": 4.548669461359525e-05 + "worst_mean_abs": 2.7358531951904297e-05, + "worst_max_relative": 3.019581466503929e-09, + "worst_tolerance_ratio": 3.0195481395271188e-05 }, "forces": { "comparisons": 243, @@ -8045,25 +9054,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.023531462531537e-06, - 5.139336284543106e-06 + 4.920742192382477e-06, + 7.256596255444947e-06 ], - "worst_mean_abs": 9.208346959116662e-07, - "worst_max_relative": 0.02196538192903394, - "worst_tolerance_ratio": 0.37540362920854503 + "worst_mean_abs": 1.2787882238700446e-06, + "worst_max_relative": 0.04443341242762421, + "worst_tolerance_ratio": 0.5313000526596697 }, "virial": { "comparisons": 243, - "failures": 1, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.925895355891498e-06, - 6.314527961848171e-05 + 0.00015233349519405692, + 0.00029167834442489493 ], - "worst_mean_abs": 2.5952830151918268e-05, - "worst_max_relative": 0.0001588631944276362, - "worst_tolerance_ratio": 1.1043263615259558 + "worst_mean_abs": 6.962979531989334e-05, + "worst_max_relative": 6.993690481415829e-05, + "worst_tolerance_ratio": 0.610841140331658 }, "stress": { "comparisons": 243, @@ -8071,148 +9080,148 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.3844412347373556e-09, - 2.1739601990117263e-08 + 2.6851964585877797e-08, + 5.141440866801572e-08 ], - "worst_mean_abs": 1.1690886852271145e-08, - "worst_max_relative": 0.0001457990668108247, - "worst_tolerance_ratio": 0.0018530501501788162 + "worst_mean_abs": 1.686265737105481e-08, + "worst_max_relative": 5.607840267271822e-05, + "worst_tolerance_ratio": 0.004395750766945767 } } }, { "model": "Neo", "n": 1000, - "left": "TORCH", + "left": "ECS", "right": "TORCH", - "scope": "within_process", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": true, "metrics": { "energy": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539062e-07, - 2.9385089874267578e-05 + 1.1920928955078125e-07, + 4.029273986816406e-05 ], - "worst_mean_abs": 2.9385089874267578e-05, - "worst_max_relative": 3.2432541782451404e-09, - "worst_tolerance_ratio": 3.243218382603148e-05 + "worst_mean_abs": 4.029273986816406e-05, + "worst_max_relative": 4.447139589012323e-09, + "worst_tolerance_ratio": 4.447090506144515e-05 }, "forces": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.633342629427716e-06, - 5.042250927900227e-06 + 5.026079264780492e-06, + 8.691451490960844e-06 ], - "worst_mean_abs": 8.955368340426614e-07, - "worst_max_relative": 0.019529283716999562, - "worst_tolerance_ratio": 0.3544008260806043 + "worst_mean_abs": 1.280851849397413e-06, + "worst_max_relative": 0.04566510292217968, + "worst_tolerance_ratio": 0.5602939503659935 }, "virial": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.79551512786702e-05, - 8.293916171453475e-05 + 0.00015130114879013945, + 0.000335671715731678 ], - "worst_mean_abs": 3.160659930988451e-05, - "worst_max_relative": 5.391707177716919e-05, - "worst_tolerance_ratio": 0.4761605395263849 + "worst_mean_abs": 7.109763783846251e-05, + "worst_max_relative": 6.530826222970714e-05, + "worst_tolerance_ratio": 0.5704137676592913 }, "stress": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.4962958484163467e-09, - 1.4619761928846842e-08 + 2.666999194406161e-08, + 5.916916048440135e-08 ], - "worst_mean_abs": 6.723154353794865e-09, - "worst_max_relative": 5.092272442244048e-05, - "worst_tolerance_ratio": 0.0012499379715431075 + "worst_mean_abs": 1.7165771659069047e-08, + "worst_max_relative": 6.236457476732796e-05, + "worst_tolerance_ratio": 0.005058754721040777 } } }, { "model": "Neo", "n": 1000, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": true, "metrics": { "energy": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.1920928955078125e-07, - 2.7358531951904297e-05 + 0.0, + 3.1888484954833984e-05 ], - "worst_mean_abs": 2.7358531951904297e-05, - "worst_max_relative": 3.0195814762971996e-09, - "worst_tolerance_ratio": 3.0195481493201726e-05 + "worst_mean_abs": 3.1888484954833984e-05, + "worst_max_relative": 3.5194831507005216e-09, + "worst_tolerance_ratio": 3.519444307133772e-05 }, "forces": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.4707768179487175e-06, - 5.587821542363258e-06 + 3.3520700704059436e-06, + 5.041821395934676e-06 ], - "worst_mean_abs": 9.1447115139535e-07, - "worst_max_relative": 0.03025642234591212, - "worst_tolerance_ratio": 0.3545796580672326 + "worst_mean_abs": 8.901110789538332e-07, + "worst_max_relative": 0.040719471312637145, + "worst_tolerance_ratio": 0.3898827707648832 }, "virial": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.4830776261298695e-05, - 0.0001008340942405539 + 1.0214205402592214e-05, + 0.00010584578105010678 ], - "worst_mean_abs": 3.617341710502073e-05, - "worst_max_relative": 5.636826848955988e-05, - "worst_tolerance_ratio": 0.4978049224428248 + "worst_mean_abs": 3.629722876163921e-05, + "worst_max_relative": 6.79690539129666e-05, + "worst_tolerance_ratio": 0.5936540163182049 }, "stress": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.1806387771883262e-09, - 1.7774118059310506e-08 + 1.6444365071033307e-09, + 1.865753267854542e-08 ], - "worst_mean_abs": 8.605640609729397e-09, - "worst_max_relative": 4.9030358175449284e-05, - "worst_tolerance_ratio": 0.0015196244616074491 + "worst_mean_abs": 8.749500643367554e-09, + "worst_max_relative": 6.316952219034617e-05, + "worst_tolerance_ratio": 0.0015905681629935873 } } }, { "model": "Neo", "n": 1000, - "left": "BASE", - "right": "BASE", + "left": "ECS_RUNTIME", + "right": "ECS_RUNTIME", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -8224,12 +9233,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.152557373046875e-07, - 2.0742416381835938e-05 + 2.384185791015625e-07, + 2.86102294921875e-05 ], - "worst_mean_abs": 2.0742416381835938e-05, - "worst_max_relative": 2.289308671490993e-09, - "worst_tolerance_ratio": 2.2892834050212908e-05 + "worst_mean_abs": 2.86102294921875e-05, + "worst_max_relative": 3.158092123710838e-09, + "worst_tolerance_ratio": 3.158057264026212e-05 }, "forces": { "comparisons": 27, @@ -8237,12 +9246,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.33537617791535e-06, - 4.863794103471264e-06 + 3.5697123863531743e-06, + 4.866482790077953e-06 ], - "worst_mean_abs": 8.753199977989771e-07, - "worst_max_relative": 0.039481397851827686, - "worst_tolerance_ratio": 0.3434311438755049 + "worst_mean_abs": 8.71843400297769e-07, + "worst_max_relative": 0.024901377101051565, + "worst_tolerance_ratio": 0.3133980997930973 }, "virial": { "comparisons": 27, @@ -8250,12 +9259,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.661514428974442e-05, - 7.371263139077655e-05 + 1.601116809291092e-05, + 0.00010153925137501574 ], - "worst_mean_abs": 2.9762359849577142e-05, - "worst_max_relative": 4.005407482042947e-05, - "worst_tolerance_ratio": 0.3498361872269447 + "worst_mean_abs": 3.9492079969289444e-05, + "worst_max_relative": 4.76723214383088e-05, + "worst_tolerance_ratio": 0.4163750444749794 }, "stress": { "comparisons": 27, @@ -8263,20 +9272,20 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.928766687504414e-09, - 1.299339298654889e-08 + 2.814842466752898e-09, + 1.7898416752176738e-08 ], - "worst_mean_abs": 6.664745576811708e-09, - "worst_max_relative": 3.4466479293943406e-05, - "worst_tolerance_ratio": 0.0011097018798516436 + "worst_mean_abs": 8.931792745649759e-09, + "worst_max_relative": 3.824128679262822e-05, + "worst_tolerance_ratio": 0.0015302507527934174 } } }, { "model": "Neo", "n": 1000, - "left": "BASE", - "right": "BASE", + "left": "ECS_RUNTIME", + "right": "ECS_RUNTIME", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, @@ -8288,12 +9297,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 1.8477439880371094e-05 + 2.384185791015625e-07, + 2.777576446533203e-05 ], - "worst_mean_abs": 1.8477439880371094e-05, - "worst_max_relative": 2.0396011677119513e-09, - "worst_tolerance_ratio": 2.0395786541655314e-05 + "worst_mean_abs": 2.777576446533203e-05, + "worst_max_relative": 3.065981103718349e-09, + "worst_tolerance_ratio": 3.065947260774519e-05 }, "forces": { "comparisons": 81, @@ -8301,12 +9310,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.363191295235879e-06, - 5.304643678982757e-06 + 3.5047379043362525e-06, + 5.059271453333736e-06 ], - "worst_mean_abs": 8.877775632153787e-07, - "worst_max_relative": 0.035986585358925086, - "worst_tolerance_ratio": 0.3850449259112016 + "worst_mean_abs": 8.903590764758214e-07, + "worst_max_relative": 0.02847250811269939, + "worst_tolerance_ratio": 0.34366267329652256 }, "virial": { "comparisons": 81, @@ -8314,12 +9323,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.574394066494733e-05, - 0.00010225479562109285 + 1.4292230757551039e-05, + 0.0001104156477822471 ], - "worst_mean_abs": 3.7090118130195864e-05, - "worst_max_relative": 6.306032100029021e-05, - "worst_tolerance_ratio": 0.550774980147506 + "worst_mean_abs": 4.8674585956920424e-05, + "worst_max_relative": 4.0505170940642086e-05, + "worst_tolerance_ratio": 0.3537782159760424 }, "stress": { "comparisons": 81, @@ -8327,148 +9336,148 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.277453541726926e-09, - 1.8024546390160712e-08 + 2.1862362128977075e-09, + 1.9463067268965517e-08 ], - "worst_mean_abs": 8.831049912109184e-09, - "worst_max_relative": 5.688659105625272e-05, - "worst_tolerance_ratio": 0.0015366056238270908 + "worst_mean_abs": 1.093853760133181e-08, + "worst_max_relative": 3.536443167796447e-05, + "worst_tolerance_ratio": 0.0016640230646324222 } } }, { "model": "Neo", "n": 1000, - "left": "ECS", - "right": "ECS", - "scope": "within_process", + "left": "ECS_RUNTIME", + "right": "BASE", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": true, "metrics": { "energy": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.556510925292969e-07, - 3.3020973205566406e-05 + 5.960464477539063e-08, + 2.7179718017578125e-05 ], - "worst_mean_abs": 3.3020973205566406e-05, - "worst_max_relative": 3.644964670313225e-09, - "worst_tolerance_ratio": 3.6449244364269796e-05 + "worst_mean_abs": 2.7179718017578125e-05, + "worst_max_relative": 3.0001875179990396e-09, + "worst_tolerance_ratio": 3.0001544012986344e-05 }, "forces": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.5435822987039955e-06, - 4.635432755861757e-06 + 3.2885830449913556e-06, + 4.838688653308054e-06 ], - "worst_mean_abs": 8.828076564637392e-07, - "worst_max_relative": 0.03565022753686914, - "worst_tolerance_ratio": 0.3128566411552532 + "worst_mean_abs": 8.974894089132656e-07, + "worst_max_relative": 0.03750267267335105, + "worst_tolerance_ratio": 0.3613712292053565 }, "virial": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.599221879189372e-05, - 7.633215030011797e-05 + 1.0719156023242249e-05, + 0.00010376051326943525 ], - "worst_mean_abs": 3.179121207757479e-05, - "worst_max_relative": 4.165436131010499e-05, - "worst_tolerance_ratio": 0.3678620572512016 + "worst_mean_abs": 4.32808850661844e-05, + "worst_max_relative": 6.901233463569448e-05, + "worst_tolerance_ratio": 0.6027662189389421 }, "stress": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.645426277342322e-09, - 1.34551379794845e-08 + 1.8894754406917347e-09, + 1.8289960618950163e-08 ], - "worst_mean_abs": 7.085925340050957e-09, - "worst_max_relative": 4.042028814875951e-05, - "worst_tolerance_ratio": 0.0011503664785505194 + "worst_mean_abs": 9.741253750385066e-09, + "worst_max_relative": 6.221302847932587e-05, + "worst_tolerance_ratio": 0.001559232378907276 } } }, { "model": "Neo", "n": 1000, - "left": "ECS", - "right": "ECS", - "scope": "across_process", + "left": "ECS_RUNTIME", + "right": "TORCH", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": true, "metrics": { "energy": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.980232238769531e-07, - 3.063678741455078e-05 + 5.960464477539063e-08, + 3.272294998168945e-05 ], - "worst_mean_abs": 3.063678741455078e-05, - "worst_max_relative": 3.381404968813222e-09, - "worst_tolerance_ratio": 3.3813676484074856e-05 + "worst_mean_abs": 3.272294998168945e-05, + "worst_max_relative": 3.611656263857641e-09, + "worst_tolerance_ratio": 3.611616402179495e-05 }, "forces": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.361861978135039e-06, - 5.388645796244873e-06 + 4.815899778520816e-06, + 7.409136284053375e-06 ], - "worst_mean_abs": 9.034893317737176e-07, - "worst_max_relative": 0.0370182513885458, - "worst_tolerance_ratio": 0.34711442598892767 + "worst_mean_abs": 1.2799668828152959e-06, + "worst_max_relative": 0.04246488869230901, + "worst_tolerance_ratio": 0.529415590283588 }, "virial": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.0433619962668672e-05, - 0.00010179705985535747 + 0.00015757149444084462, + 0.00035081970636952065 ], - "worst_mean_abs": 3.785335627723738e-05, - "worst_max_relative": 5.7465137916573e-05, - "worst_tolerance_ratio": 0.5019102458657091 + "worst_mean_abs": 7.662361022201895e-05, + "worst_max_relative": 6.22942494384205e-05, + "worst_tolerance_ratio": 0.5440888535771483 }, "stress": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.8391437366094276e-09, - 1.7943860886743268e-08 + 2.7775271506380594e-08, + 6.18393106548154e-08 ], - "worst_mean_abs": 8.864620042806805e-09, - "worst_max_relative": 5.051624883690171e-05, - "worst_tolerance_ratio": 0.0015341363344884929 + "worst_mean_abs": 1.7776060046128894e-08, + "worst_max_relative": 6.140808028633187e-05, + "worst_tolerance_ratio": 0.005287043151532045 } } }, { "model": "Neo", "n": 1000, - "left": "BASE", - "right": "TORCH", + "left": "ECS_RUNTIME", + "right": "ECS", "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, @@ -8480,12 +9489,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.0, - 2.7358531951904297e-05 + 5.960464477539063e-08, + 3.4809112548828125e-05 ], - "worst_mean_abs": 2.7358531951904297e-05, - "worst_max_relative": 3.019581466503929e-09, - "worst_tolerance_ratio": 3.0195481395271188e-05 + "worst_mean_abs": 3.4809112548828125e-05, + "worst_max_relative": 3.8418283499868665e-09, + "worst_tolerance_ratio": 3.841785948784733e-05 }, "forces": { "comparisons": 243, @@ -8493,12 +9502,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.920742192382477e-06, - 7.256596255444947e-06 + 3.344283097561629e-06, + 5.309391424290766e-06 ], - "worst_mean_abs": 1.2787882238700446e-06, - "worst_max_relative": 0.04443341242762421, - "worst_tolerance_ratio": 0.5313000526596697 + "worst_mean_abs": 9.063036967302448e-07, + "worst_max_relative": 0.0337890412816447, + "worst_tolerance_ratio": 0.3473774922295766 }, "virial": { "comparisons": 243, @@ -8506,12 +9515,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.00015233349519405692, - 0.00029167834442489493 + 1.1614812271742991e-05, + 0.00011694505049320014 ], - "worst_mean_abs": 6.962979531989334e-05, - "worst_max_relative": 6.993690481415829e-05, - "worst_tolerance_ratio": 0.610841140331658 + "worst_mean_abs": 4.5252665304800705e-05, + "worst_max_relative": 5.8508429598578834e-05, + "worst_tolerance_ratio": 0.511022532090192 }, "stress": { "comparisons": 243, @@ -8519,152 +9528,152 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.6851964585877797e-08, - 5.141440866801572e-08 + 1.6118786997417617e-09, + 2.0614011057157322e-08 ], - "worst_mean_abs": 1.686265737105481e-08, - "worst_max_relative": 5.607840267271822e-05, - "worst_tolerance_ratio": 0.004395750766945767 + "worst_mean_abs": 1.0167814561372906e-08, + "worst_max_relative": 4.955974302234044e-05, + "worst_tolerance_ratio": 0.0017624246845168415 } } }, { "model": "Neo", - "n": 1000, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", + "n": 4096, + "left": "BASE", + "right": "BASE", + "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": true, + "all_passed": false, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.1920928955078125e-07, - 4.029273986816406e-05 + 2.384185791015625e-07, + 4.64320182800293e-05 ], - "worst_mean_abs": 4.029273986816406e-05, - "worst_max_relative": 4.447139589012323e-09, - "worst_tolerance_ratio": 4.447090506144515e-05 + "worst_mean_abs": 4.64320182800293e-05, + "worst_max_relative": 1.2511782837943904e-09, + "worst_tolerance_ratio": 1.2511749123215628e-05 }, "forces": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.026079264780492e-06, - 8.691451490960844e-06 + 4.006612300599954e-06, + 5.5649634305154905e-06 ], - "worst_mean_abs": 1.280851849397413e-06, - "worst_max_relative": 0.04566510292217968, - "worst_tolerance_ratio": 0.5602939503659935 + "worst_mean_abs": 9.24204651891453e-07, + "worst_max_relative": 0.04638977543659968, + "worst_tolerance_ratio": 0.45762864355362753 }, "virial": { - "comparisons": 243, - "failures": 0, + "comparisons": 27, + "failures": 5, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.00015130114879013945, - 0.000335671715731678 + 4.3261900263935615e-05, + 0.00017641855885131008 ], - "worst_mean_abs": 7.109763783846251e-05, - "worst_max_relative": 6.530826222970714e-05, - "worst_tolerance_ratio": 0.5704137676592913 + "worst_mean_abs": 6.176949326001473e-05, + "worst_max_relative": 0.0003462478988203084, + "worst_tolerance_ratio": 2.0354331868617845 }, "stress": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.666999194406161e-08, - 5.916916048440135e-08 + 1.4277160951343533e-09, + 7.592153516977618e-09 ], - "worst_mean_abs": 1.7165771659069047e-08, - "worst_max_relative": 6.236457476732796e-05, - "worst_tolerance_ratio": 0.005058754721040777 + "worst_mean_abs": 3.319596621695895e-09, + "worst_max_relative": 0.00033108076119606, + "worst_tolerance_ratio": 0.0006483897011119122 } } }, { "model": "Neo", - "n": 1000, - "left": "ECS", + "n": 4096, + "left": "BASE", "right": "BASE", - "scope": "cross_implementation", + "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": true, + "all_passed": false, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.0, - 3.1888484954833984e-05 + 4.172325134277344e-07, + 5.626678466796875e-05 ], - "worst_mean_abs": 3.1888484954833984e-05, - "worst_max_relative": 3.5194831507005216e-09, - "worst_tolerance_ratio": 3.519444307133772e-05 + "worst_mean_abs": 5.626678466796875e-05, + "worst_max_relative": 1.5161903740432432e-09, + "worst_tolerance_ratio": 1.5161862884587026e-05 }, "forces": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.3520700704059436e-06, - 5.041821395934676e-06 + 3.911784567378618e-06, + 5.939335657956235e-06 ], - "worst_mean_abs": 8.901110789538332e-07, - "worst_max_relative": 0.040719471312637145, - "worst_tolerance_ratio": 0.3898827707648832 + "worst_mean_abs": 9.235166901001517e-07, + "worst_max_relative": 0.05466832139536, + "worst_tolerance_ratio": 0.40715872448751944 }, "virial": { - "comparisons": 243, - "failures": 0, + "comparisons": 81, + "failures": 15, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.0214205402592214e-05, - 0.00010584578105010678 + 2.274522682910174e-05, + 0.00025125827636429676 ], - "worst_mean_abs": 3.629722876163921e-05, - "worst_max_relative": 6.79690539129666e-05, - "worst_tolerance_ratio": 0.5936540163182049 + "worst_mean_abs": 8.923709778684163e-05, + "worst_max_relative": 0.00048536159158823675, + "worst_tolerance_ratio": 2.8536434786230034 }, "stress": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.6444365071033307e-09, - 1.865753267854542e-08 + 9.788383645292775e-10, + 1.0812872628523928e-08 ], - "worst_mean_abs": 8.749500643367554e-09, - "worst_max_relative": 6.316952219034617e-05, - "worst_tolerance_ratio": 0.0015905681629935873 + "worst_mean_abs": 5.3527442911898254e-09, + "worst_max_relative": 0.00044321573010890595, + "worst_tolerance_ratio": 0.0009234475088118105 } } }, { "model": "Neo", - "n": 1000, - "left": "ECS_RUNTIME", - "right": "ECS_RUNTIME", + "n": 4096, + "left": "ECS", + "right": "ECS", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": true, + "all_passed": false, "metrics": { "energy": { "comparisons": 27, @@ -8673,11 +9682,11 @@ "all_bitwise": false, "max_abs_range": [ 2.384185791015625e-07, - 2.86102294921875e-05 + 5.40614128112793e-05 ], - "worst_mean_abs": 2.86102294921875e-05, - "worst_max_relative": 3.158092123710838e-09, - "worst_tolerance_ratio": 3.158057264026212e-05 + "worst_mean_abs": 5.40614128112793e-05, + "worst_max_relative": 1.4568380792805779e-09, + "worst_tolerance_ratio": 1.4568341534278123e-05 }, "forces": { "comparisons": 27, @@ -8685,25 +9694,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.5697123863531743e-06, - 4.866482790077953e-06 + 4.204245115602134e-06, + 5.1832413270336275e-06 ], - "worst_mean_abs": 8.71843400297769e-07, - "worst_max_relative": 0.024901377101051565, - "worst_tolerance_ratio": 0.3133980997930973 + "worst_mean_abs": 9.13824796910734e-07, + "worst_max_relative": 0.05844972749466132, + "worst_tolerance_ratio": 0.39319124731802485 }, "virial": { "comparisons": 27, - "failures": 0, + "failures": 5, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.601116809291092e-05, - 0.00010153925137501574 + 2.1738773590129767e-05, + 0.00010842949927791778 ], - "worst_mean_abs": 3.9492079969289444e-05, - "worst_max_relative": 4.76723214383088e-05, - "worst_tolerance_ratio": 0.4163750444749794 + "worst_mean_abs": 4.631634302073214e-05, + "worst_max_relative": 0.0003797296434928179, + "worst_tolerance_ratio": 2.232552053656739 }, "stress": { "comparisons": 27, @@ -8711,24 +9720,24 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.814842466752898e-09, - 1.7898416752176738e-08 - ], - "worst_mean_abs": 8.931792745649759e-09, - "worst_max_relative": 3.824128679262822e-05, - "worst_tolerance_ratio": 0.0015302507527934174 + 5.853475516792717e-10, + 4.666251721824333e-09 + ], + "worst_mean_abs": 2.5063077698456076e-09, + "worst_max_relative": 0.0003111970722678921, + "worst_tolerance_ratio": 0.00039846764536102206 } } }, { "model": "Neo", - "n": 1000, - "left": "ECS_RUNTIME", - "right": "ECS_RUNTIME", + "n": 4096, + "left": "ECS", + "right": "ECS", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": true, + "all_passed": false, "metrics": { "energy": { "comparisons": 81, @@ -8736,12 +9745,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.384185791015625e-07, - 2.777576446533203e-05 + 3.5762786865234375e-07, + 8.285045623779297e-05 ], - "worst_mean_abs": 2.777576446533203e-05, - "worst_max_relative": 3.065981103718349e-09, - "worst_tolerance_ratio": 3.065947260774519e-05 + "worst_mean_abs": 8.285045623779297e-05, + "worst_max_relative": 2.2326404946295473e-09, + "worst_tolerance_ratio": 2.2326344781628045e-05 }, "forces": { "comparisons": 81, @@ -8749,25 +9758,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.5047379043362525e-06, - 5.059271453333736e-06 + 4.080200170619719e-06, + 5.679104731370899e-06 ], - "worst_mean_abs": 8.903590764758214e-07, - "worst_max_relative": 0.02847250811269939, - "worst_tolerance_ratio": 0.34366267329652256 + "worst_mean_abs": 9.19830079793565e-07, + "worst_max_relative": 0.06567696857503363, + "worst_tolerance_ratio": 0.41637204115749826 }, "virial": { "comparisons": 81, - "failures": 0, + "failures": 14, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.4292230757551039e-05, - 0.0001104156477822471 + 2.125524217655439e-05, + 0.00017049881836328495 ], - "worst_mean_abs": 4.8674585956920424e-05, - "worst_max_relative": 4.0505170940642086e-05, - "worst_tolerance_ratio": 0.3537782159760424 + "worst_mean_abs": 7.710890105008496e-05, + "worst_max_relative": 0.0004854599328622272, + "worst_tolerance_ratio": 2.854298652629297 }, "stress": { "comparisons": 81, @@ -8775,24 +9784,24 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.1862362128977075e-09, - 1.9463067268965517e-08 + 5.107572735249272e-10, + 7.337398126583405e-09 ], - "worst_mean_abs": 1.093853760133181e-08, - "worst_max_relative": 3.536443167796447e-05, - "worst_tolerance_ratio": 0.0016640230646324222 + "worst_mean_abs": 3.933029052158386e-09, + "worst_max_relative": 0.0004688952443502357, + "worst_tolerance_ratio": 0.0006263316685596658 } } }, { "model": "Neo", - "n": 1000, - "left": "ECS_RUNTIME", + "n": 4096, + "left": "ECS", "right": "BASE", "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": true, + "all_passed": false, "metrics": { "energy": { "comparisons": 243, @@ -8801,11 +9810,11 @@ "all_bitwise": false, "max_abs_range": [ 5.960464477539063e-08, - 2.7179718017578125e-05 + 6.812810897827148e-05 ], - "worst_mean_abs": 2.7179718017578125e-05, - "worst_max_relative": 3.0001875179990396e-09, - "worst_tolerance_ratio": 3.0001544012986344e-05 + "worst_mean_abs": 6.812810897827148e-05, + "worst_max_relative": 1.8358110143341388e-09, + "worst_tolerance_ratio": 1.835806067487603e-05 }, "forces": { "comparisons": 243, @@ -8813,25 +9822,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.2885830449913556e-06, - 4.838688653308054e-06 + 4.013267599134451e-06, + 5.806176268663421e-06 ], - "worst_mean_abs": 8.974894089132656e-07, - "worst_max_relative": 0.03750267267335105, - "worst_tolerance_ratio": 0.3613712292053565 + "worst_mean_abs": 9.279718525367565e-07, + "worst_max_relative": 0.07600583073691304, + "worst_tolerance_ratio": 0.48031684020002197 }, "virial": { "comparisons": 243, - "failures": 0, + "failures": 43, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.0719156023242249e-05, - 0.00010376051326943525 + 2.1126351798628207e-05, + 0.00024822615586117536 ], - "worst_mean_abs": 4.32808850661844e-05, - "worst_max_relative": 6.901233463569448e-05, - "worst_tolerance_ratio": 0.6027662189389421 + "worst_mean_abs": 9.79036613448287e-05, + "worst_max_relative": 0.0005510887995292004, + "worst_tolerance_ratio": 3.239432988792245 }, "stress": { "comparisons": 243, @@ -8839,280 +9848,280 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.8894754406917347e-09, - 1.8289960618950163e-08 + 6.361754128591905e-10, + 1.0682385653132398e-08 ], - "worst_mean_abs": 9.741253750385066e-09, - "worst_max_relative": 6.221302847932587e-05, - "worst_tolerance_ratio": 0.001559232378907276 + "worst_mean_abs": 5.683358252322985e-09, + "worst_max_relative": 0.0005106279928969495, + "worst_tolerance_ratio": 0.0009118650107217193 } } }, { "model": "Neo", - "n": 1000, + "n": 4096, "left": "ECS_RUNTIME", - "right": "TORCH", - "scope": "cross_implementation", + "right": "ECS_RUNTIME", + "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": true, + "all_passed": false, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 3.272294998168945e-05 + 3.5762786865234375e-07, + 5.65648078918457e-05 ], - "worst_mean_abs": 3.272294998168945e-05, - "worst_max_relative": 3.611656263857641e-09, - "worst_tolerance_ratio": 3.611616402179495e-05 + "worst_mean_abs": 5.65648078918457e-05, + "worst_max_relative": 1.5242210432699846e-09, + "worst_tolerance_ratio": 1.5242169360456961e-05 }, "forces": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.815899778520816e-06, - 7.409136284053375e-06 + 4.011071013110268e-06, + 5.387967661363291e-06 ], - "worst_mean_abs": 1.2799668828152959e-06, - "worst_max_relative": 0.04246488869230901, - "worst_tolerance_ratio": 0.529415590283588 + "worst_mean_abs": 9.248245991827885e-07, + "worst_max_relative": 0.03156320400212182, + "worst_tolerance_ratio": 0.40441575591492857 }, "virial": { - "comparisons": 243, - "failures": 0, + "comparisons": 27, + "failures": 6, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 0.00015757149444084462, - 0.00035081970636952065 + 2.3210579456645064e-05, + 0.000212725031701666 ], - "worst_mean_abs": 7.662361022201895e-05, - "worst_max_relative": 6.22942494384205e-05, - "worst_tolerance_ratio": 0.5440888535771483 + "worst_mean_abs": 7.947677190594465e-05, + "worst_max_relative": 0.0005106145571754262, + "worst_tolerance_ratio": 3.002365005634482 }, "stress": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.7775271506380594e-08, - 6.18393106548154e-08 + 9.988647652059424e-10, + 9.15459863123913e-09 ], - "worst_mean_abs": 1.7776060046128894e-08, - "worst_max_relative": 6.140808028633187e-05, - "worst_tolerance_ratio": 0.005287043151532045 + "worst_mean_abs": 4.1063543313722e-09, + "worst_max_relative": 0.0004523552834152322, + "worst_tolerance_ratio": 0.000782305939611223 } } }, { "model": "Neo", - "n": 1000, + "n": 4096, "left": "ECS_RUNTIME", - "right": "ECS", - "scope": "cross_implementation", + "right": "ECS_RUNTIME", + "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": true, + "all_passed": false, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 3.4809112548828125e-05 + 2.384185791015625e-07, + 6.252527236938477e-05 ], - "worst_mean_abs": 3.4809112548828125e-05, - "worst_max_relative": 3.8418283499868665e-09, - "worst_tolerance_ratio": 3.841785948784733e-05 + "worst_mean_abs": 6.252527236938477e-05, + "worst_max_relative": 1.6848344303374224e-09, + "worst_tolerance_ratio": 1.6848298903181613e-05 }, "forces": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.344283097561629e-06, - 5.309391424290766e-06 + 4.01429013763277e-06, + 6.203240378255259e-06 ], - "worst_mean_abs": 9.063036967302448e-07, - "worst_max_relative": 0.0337890412816447, - "worst_tolerance_ratio": 0.3473774922295766 + "worst_mean_abs": 9.300723181377313e-07, + "worst_max_relative": 0.05028517913571991, + "worst_tolerance_ratio": 0.4363624263685384 }, "virial": { - "comparisons": 243, - "failures": 0, + "comparisons": 81, + "failures": 18, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.1614812271742991e-05, - 0.00011694505049320014 + 2.70112598261818e-05, + 0.00015965467025580438 ], - "worst_mean_abs": 4.5252665304800705e-05, - "worst_max_relative": 5.8508429598578834e-05, - "worst_tolerance_ratio": 0.511022532090192 + "worst_mean_abs": 7.798662345563183e-05, + "worst_max_relative": 0.0005044852835018811, + "worst_tolerance_ratio": 2.965709028961038 }, "stress": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.6118786997417617e-09, - 2.0614011057157322e-08 + 9.89032851656576e-10, + 6.8707213911334275e-09 ], - "worst_mean_abs": 1.0167814561372906e-08, - "worst_max_relative": 4.955974302234044e-05, - "worst_tolerance_ratio": 0.0017624246845168415 + "worst_mean_abs": 4.030487449442636e-09, + "worst_max_relative": 0.0004576428524409064, + "worst_tolerance_ratio": 0.0005871372929730839 } } }, { "model": "Neo", "n": 4096, - "left": "BASE", + "left": "ECS_RUNTIME", "right": "BASE", - "scope": "within_process", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.384185791015625e-07, - 4.64320182800293e-05 + 5.960464477539063e-08, + 6.562471389770508e-05 ], - "worst_mean_abs": 4.64320182800293e-05, - "worst_max_relative": 1.2511782837943904e-09, - "worst_tolerance_ratio": 1.2511749123215628e-05 + "worst_mean_abs": 6.562471389770508e-05, + "worst_max_relative": 1.768353391760181e-09, + "worst_tolerance_ratio": 1.7683486266875334e-05 }, "forces": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.006612300599954e-06, - 5.5649634305154905e-06 + 4.0562457996884405e-06, + 6.06768347211073e-06 ], - "worst_mean_abs": 9.24204651891453e-07, - "worst_max_relative": 0.04638977543659968, - "worst_tolerance_ratio": 0.45762864355362753 + "worst_mean_abs": 9.269528270914579e-07, + "worst_max_relative": 0.05541966003438398, + "worst_tolerance_ratio": 0.4396428415745402 }, "virial": { - "comparisons": 27, - "failures": 5, + "comparisons": 243, + "failures": 45, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.3261900263935615e-05, - 0.00017641855885131008 - ], - "worst_mean_abs": 6.176949326001473e-05, - "worst_max_relative": 0.0003462478988203084, - "worst_tolerance_ratio": 2.0354331868617845 + 1.5601343136495416e-05, + 0.0002561021262295071 + ], + "worst_mean_abs": 9.509609134079117e-05, + "worst_max_relative": 0.0005999949664091773, + "worst_tolerance_ratio": 3.526915242980177 }, "stress": { - "comparisons": 27, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.4277160951343533e-09, - 7.592153516977618e-09 + 6.714021075215904e-10, + 1.1021327180754659e-08 ], - "worst_mean_abs": 3.319596621695895e-09, - "worst_max_relative": 0.00033108076119606, - "worst_tolerance_ratio": 0.0006483897011119122 + "worst_mean_abs": 5.448347654483149e-09, + "worst_max_relative": 0.000545875738601154, + "worst_tolerance_ratio": 0.0009402588735358382 } } }, { "model": "Neo", "n": 4096, - "left": "BASE", - "right": "BASE", - "scope": "across_process", + "left": "ECS_RUNTIME", + "right": "ECS", + "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, "all_passed": false, "metrics": { "energy": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.172325134277344e-07, - 5.626678466796875e-05 + 5.960464477539063e-08, + 7.30752944946289e-05 ], - "worst_mean_abs": 5.626678466796875e-05, - "worst_max_relative": 1.5161903740432432e-09, - "worst_tolerance_ratio": 1.5161862884587026e-05 + "worst_mean_abs": 7.30752944946289e-05, + "worst_max_relative": 1.969221044983487e-09, + "worst_tolerance_ratio": 1.9692157383732285e-05 }, "forces": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.911784567378618e-06, - 5.939335657956235e-06 + 3.972335861135434e-06, + 5.79117048715716e-06 ], - "worst_mean_abs": 9.235166901001517e-07, - "worst_max_relative": 0.05466832139536, - "worst_tolerance_ratio": 0.40715872448751944 + "worst_mean_abs": 9.270504371683768e-07, + "worst_max_relative": 0.07640685777968143, + "worst_tolerance_ratio": 0.4278519781945703 }, "virial": { - "comparisons": 81, - "failures": 15, + "comparisons": 243, + "failures": 43, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.274522682910174e-05, - 0.00025125827636429676 + 2.0289837493692175e-05, + 0.00019545518495078795 ], - "worst_mean_abs": 8.923709778684163e-05, - "worst_max_relative": 0.00048536159158823675, - "worst_tolerance_ratio": 2.8536434786230034 + "worst_mean_abs": 8.615662166332349e-05, + "worst_max_relative": 0.0005388515499075958, + "worst_tolerance_ratio": 3.1676925701848857 }, "stress": { - "comparisons": 81, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.788383645292775e-10, - 1.0812872628523928e-08 + 8.731709522091791e-10, + 8.411392651841432e-09 ], - "worst_mean_abs": 5.3527442911898254e-09, - "worst_max_relative": 0.00044321573010890595, - "worst_tolerance_ratio": 0.0009234475088118105 + "worst_mean_abs": 4.566742367445485e-09, + "worst_max_relative": 0.0005043614934603541, + "worst_tolerance_ratio": 0.0007187953475612625 } } }, { - "model": "Neo", - "n": 4096, - "left": "ECS", - "right": "ECS", + "model": "Pro", + "n": 64, + "left": "TORCH", + "right": "TORCH", "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { "comparisons": 27, @@ -9120,12 +10129,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.384185791015625e-07, - 5.40614128112793e-05 + 2.9802322387695312e-08, + 2.205371856689453e-06 ], - "worst_mean_abs": 5.40614128112793e-05, - "worst_max_relative": 1.4568380792805779e-09, - "worst_tolerance_ratio": 1.4568341534278123e-05 + "worst_mean_abs": 2.205371856689453e-06, + "worst_max_relative": 3.803005087449338e-09, + "worst_tolerance_ratio": 3.802349399653771e-05 }, "forces": { "comparisons": 27, @@ -9133,25 +10142,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.204245115602134e-06, - 5.1832413270336275e-06 + 7.836824043039314e-07, + 1.120138253263292e-06 ], - "worst_mean_abs": 9.13824796910734e-07, - "worst_max_relative": 0.05844972749466132, - "worst_tolerance_ratio": 0.39319124731802485 + "worst_mean_abs": 2.7072980710955247e-07, + "worst_max_relative": 0.00023539000515267026, + "worst_tolerance_ratio": 0.1069256115075036 }, "virial": { "comparisons": 27, - "failures": 5, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.1738773590129767e-05, - 0.00010842949927791778 + 1.677356905815941e-06, + 4.709333710550823e-06 ], - "worst_mean_abs": 4.631634302073214e-05, - "worst_max_relative": 0.0003797296434928179, - "worst_tolerance_ratio": 2.232552053656739 + "worst_mean_abs": 2.007555334736387e-06, + "worst_max_relative": 1.2772568056882827e-05, + "worst_tolerance_ratio": 0.08673921033429122 }, "stress": { "comparisons": 27, @@ -9159,24 +10168,24 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.853475516792717e-10, - 4.666251721824333e-09 + 3.3227540386033053e-09, + 1.2970602536466203e-08 ], - "worst_mean_abs": 2.5063077698456076e-09, - "worst_max_relative": 0.0003111970722678921, - "worst_tolerance_ratio": 0.00039846764536102206 + "worst_mean_abs": 5.939678369988888e-09, + "worst_max_relative": 9.691509563143057e-06, + "worst_tolerance_ratio": 0.0010587397953746294 } } }, { - "model": "Neo", - "n": 4096, - "left": "ECS", - "right": "ECS", + "model": "Pro", + "n": 64, + "left": "TORCH", + "right": "TORCH", "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { "comparisons": 81, @@ -9184,12 +10193,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.5762786865234375e-07, - 8.285045623779297e-05 + 0.0, + 2.0563602447509766e-06 ], - "worst_mean_abs": 8.285045623779297e-05, - "worst_max_relative": 2.2326404946295473e-09, - "worst_tolerance_ratio": 2.2326344781628045e-05 + "worst_mean_abs": 2.0563602447509766e-06, + "worst_max_relative": 3.546045284243301e-09, + "worst_tolerance_ratio": 3.5454338996771656e-05 }, "forces": { "comparisons": 81, @@ -9197,25 +10206,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.080200170619719e-06, - 5.679104731370899e-06 + 7.308566187802512e-07, + 1.3726140153380584e-06 ], - "worst_mean_abs": 9.19830079793565e-07, - "worst_max_relative": 0.06567696857503363, - "worst_tolerance_ratio": 0.41637204115749826 + "worst_mean_abs": 2.76556158085306e-07, + "worst_max_relative": 0.00022497410176645672, + "worst_tolerance_ratio": 0.10221615199260987 }, "virial": { "comparisons": 81, - "failures": 14, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.125524217655439e-05, - 0.00017049881836328495 + 1.1849798069452078e-06, + 5.181526118169799e-06 ], - "worst_mean_abs": 7.710890105008496e-05, - "worst_max_relative": 0.0004854599328622272, - "worst_tolerance_ratio": 2.854298652629297 + "worst_mean_abs": 2.4917043893858527e-06, + "worst_max_relative": 1.730106739253013e-05, + "worst_tolerance_ratio": 0.1297029723885502 }, "stress": { "comparisons": 81, @@ -9223,280 +10232,280 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.107572735249272e-10, - 7.337398126583405e-09 + 1.928027439090929e-09, + 1.3559246964806038e-08 ], - "worst_mean_abs": 3.933029052158386e-09, - "worst_max_relative": 0.0004688952443502357, - "worst_tolerance_ratio": 0.0006263316685596658 + "worst_mean_abs": 6.56586121563603e-09, + "worst_max_relative": 1.249110400946927e-05, + "worst_tolerance_ratio": 0.0010986257545608643 } } }, { - "model": "Neo", - "n": 4096, - "left": "ECS", + "model": "Pro", + "n": 64, + "left": "BASE", "right": "BASE", - "scope": "cross_implementation", + "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 6.812810897827148e-05 + 0.0, + 2.6226043701171875e-06 ], - "worst_mean_abs": 6.812810897827148e-05, - "worst_max_relative": 1.8358110143341388e-09, - "worst_tolerance_ratio": 1.835806067487603e-05 + "worst_mean_abs": 2.6226043701171875e-06, + "worst_max_relative": 4.522492546885128e-09, + "worst_tolerance_ratio": 4.5217128100435517e-05 }, "forces": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.013267599134451e-06, - 5.806176268663421e-06 + 6.688496165807578e-07, + 1.0005651631672663e-06 ], - "worst_mean_abs": 9.279718525367565e-07, - "worst_max_relative": 0.07600583073691304, - "worst_tolerance_ratio": 0.48031684020002197 + "worst_mean_abs": 2.488865072612645e-07, + "worst_max_relative": 0.000154453511687136, + "worst_tolerance_ratio": 0.0616950774446536 }, "virial": { - "comparisons": 243, - "failures": 43, + "comparisons": 27, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.1126351798628207e-05, - 0.00024822615586117536 + 1.3667633777525445e-06, + 6.373700600192933e-06 ], - "worst_mean_abs": 9.79036613448287e-05, - "worst_max_relative": 0.0005510887995292004, - "worst_tolerance_ratio": 3.239432988792245 + "worst_mean_abs": 2.2479957339875214e-06, + "worst_max_relative": 1.8029040808023728e-05, + "worst_tolerance_ratio": 0.12243626772396692 }, "stress": { - "comparisons": 243, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.361754128591905e-10, - 1.0682385653132398e-08 + 2.4010382973288155e-09, + 1.755465682887203e-08 ], - "worst_mean_abs": 5.683358252322985e-09, - "worst_max_relative": 0.0005106279928969495, - "worst_tolerance_ratio": 0.0009118650107217193 + "worst_mean_abs": 7.807307774415918e-09, + "worst_max_relative": 1.50052539844941e-05, + "worst_tolerance_ratio": 0.0014112738018110813 } } }, { - "model": "Neo", - "n": 4096, - "left": "ECS_RUNTIME", - "right": "ECS_RUNTIME", - "scope": "within_process", + "model": "Pro", + "n": 64, + "left": "BASE", + "right": "BASE", + "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { - "comparisons": 27, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.5762786865234375e-07, - 5.65648078918457e-05 + 5.960464477539063e-08, + 3.0994415283203125e-06 ], - "worst_mean_abs": 5.65648078918457e-05, - "worst_max_relative": 1.5242210432699846e-09, - "worst_tolerance_ratio": 1.5242169360456961e-05 + "worst_mean_abs": 3.0994415283203125e-06, + "worst_max_relative": 5.344763894874406e-09, + "worst_tolerance_ratio": 5.343842387706332e-05 }, "forces": { - "comparisons": 27, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.011071013110268e-06, - 5.387967661363291e-06 + 6.300232389122584e-07, + 1.0514475032863402e-06 ], - "worst_mean_abs": 9.248245991827885e-07, - "worst_max_relative": 0.03156320400212182, - "worst_tolerance_ratio": 0.40441575591492857 + "worst_mean_abs": 2.6113323731147275e-07, + "worst_max_relative": 0.00017563261135087222, + "worst_tolerance_ratio": 0.07015487987769255 }, "virial": { - "comparisons": 27, - "failures": 6, + "comparisons": 81, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.3210579456645064e-05, - 0.000212725031701666 + 1.116972372927627e-06, + 7.71725503234677e-06 ], - "worst_mean_abs": 7.947677190594465e-05, - "worst_max_relative": 0.0005106145571754262, - "worst_tolerance_ratio": 3.002365005634482 + "worst_mean_abs": 2.785421257034404e-06, + "worst_max_relative": 1.6533923579532577e-05, + "worst_tolerance_ratio": 0.1122821898075178 }, "stress": { - "comparisons": 27, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.988647652059424e-10, - 9.15459863123913e-09 + 2.2444712061142624e-09, + 2.125511884554232e-08 ], - "worst_mean_abs": 4.1063543313722e-09, - "worst_max_relative": 0.0004523552834152322, - "worst_tolerance_ratio": 0.000782305939611223 + "worst_mean_abs": 9.874388273625051e-09, + "worst_max_relative": 1.289334711099723e-05, + "worst_tolerance_ratio": 0.0017273932610432762 } } }, { - "model": "Neo", - "n": 4096, - "left": "ECS_RUNTIME", - "right": "ECS_RUNTIME", - "scope": "across_process", + "model": "Pro", + "n": 64, + "left": "ECS", + "right": "ECS", + "scope": "within_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { - "comparisons": 81, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.384185791015625e-07, - 6.252527236938477e-05 + 2.9802322387695312e-08, + 3.0100345611572266e-06 ], - "worst_mean_abs": 6.252527236938477e-05, - "worst_max_relative": 1.6848344303374224e-09, - "worst_tolerance_ratio": 1.6848298903181613e-05 + "worst_mean_abs": 3.0100345611572266e-06, + "worst_max_relative": 5.1896093782334826e-09, + "worst_tolerance_ratio": 5.1887147904010125e-05 }, "forces": { - "comparisons": 81, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.01429013763277e-06, - 6.203240378255259e-06 + 6.762762065903871e-07, + 1.0448454172973243e-06 ], - "worst_mean_abs": 9.300723181377313e-07, - "worst_max_relative": 0.05028517913571991, - "worst_tolerance_ratio": 0.4363624263685384 + "worst_mean_abs": 2.6035555022660417e-07, + "worst_max_relative": 0.0001570453217049622, + "worst_tolerance_ratio": 0.06976879806235865 }, "virial": { - "comparisons": 81, - "failures": 18, + "comparisons": 27, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.70112598261818e-05, - 0.00015965467025580438 + 1.721472321469797e-06, + 7.928070596463499e-06 ], - "worst_mean_abs": 7.798662345563183e-05, - "worst_max_relative": 0.0005044852835018811, - "worst_tolerance_ratio": 2.965709028961038 + "worst_mean_abs": 2.343582019787633e-06, + "worst_max_relative": 1.314665606591251e-05, + "worst_tolerance_ratio": 0.08927939747581534 }, "stress": { - "comparisons": 81, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.89032851656576e-10, - 6.8707213911334275e-09 + 3.41465599199009e-09, + 2.1835754038246336e-08 ], - "worst_mean_abs": 4.030487449442636e-09, - "worst_max_relative": 0.0004576428524409064, - "worst_tolerance_ratio": 0.0005871372929730839 + "worst_mean_abs": 8.867715026386122e-09, + "worst_max_relative": 1.1413206530463464e-05, + "worst_tolerance_ratio": 0.0017658764292438072 } } }, { - "model": "Neo", - "n": 4096, - "left": "ECS_RUNTIME", - "right": "BASE", - "scope": "cross_implementation", + "model": "Pro", + "n": 64, + "left": "ECS", + "right": "ECS", + "scope": "across_process", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 6.562471389770508e-05 + 0.0, + 4.112720489501953e-06 ], - "worst_mean_abs": 6.562471389770508e-05, - "worst_max_relative": 1.768353391760181e-09, - "worst_tolerance_ratio": 1.7683486266875334e-05 + "worst_mean_abs": 4.112720489501953e-06, + "worst_max_relative": 7.090753394402829e-09, + "worst_tolerance_ratio": 7.089531086279943e-05 }, "forces": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.0562457996884405e-06, - 6.06768347211073e-06 + 6.097694740248016e-07, + 1.2420960784353952e-06 ], - "worst_mean_abs": 9.269528270914579e-07, - "worst_max_relative": 0.05541966003438398, - "worst_tolerance_ratio": 0.4396428415745402 + "worst_mean_abs": 2.5948061258459126e-07, + "worst_max_relative": 0.0002078401348765092, + "worst_tolerance_ratio": 0.07848616207961301 }, "virial": { - "comparisons": 243, - "failures": 45, + "comparisons": 81, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.5601343136495416e-05, - 0.0002561021262295071 + 1.1902146457298812e-06, + 6.365343558911718e-06 ], - "worst_mean_abs": 9.509609134079117e-05, - "worst_max_relative": 0.0005999949664091773, - "worst_tolerance_ratio": 3.526915242980177 + "worst_mean_abs": 2.5610812921208727e-06, + "worst_max_relative": 1.775710232290522e-05, + "worst_tolerance_ratio": 0.12058891956353995 }, "stress": { - "comparisons": 243, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.714021075215904e-10, - 1.1021327180754659e-08 + 2.3121738204623377e-09, + 1.7531639587980985e-08 ], - "worst_mean_abs": 5.448347654483149e-09, - "worst_max_relative": 0.000545875738601154, - "worst_tolerance_ratio": 0.0009402588735358382 + "worst_mean_abs": 8.637307409463767e-09, + "worst_max_relative": 1.5286664639320423e-05, + "worst_tolerance_ratio": 0.0014299946183736045 } } }, { - "model": "Neo", - "n": 4096, - "left": "ECS_RUNTIME", - "right": "ECS", + "model": "Pro", + "n": 64, + "left": "BASE", + "right": "TORCH", "scope": "cross_implementation", "left_completed_processes": 3, "right_completed_processes": 3, - "all_passed": false, + "all_passed": true, "metrics": { "energy": { "comparisons": 243, @@ -9504,12 +10513,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 7.30752944946289e-05 + 2.9802322387695312e-08, + 4.023313522338867e-06 ], - "worst_mean_abs": 7.30752944946289e-05, - "worst_max_relative": 1.969221044983487e-09, - "worst_tolerance_ratio": 1.9692157383732285e-05 + "worst_mean_abs": 4.023313522338867e-06, + "worst_max_relative": 6.937914660178055e-09, + "worst_tolerance_ratio": 6.936718472992541e-05 }, "forces": { "comparisons": 243, @@ -9517,25 +10526,25 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.972335861135434e-06, - 5.79117048715716e-06 + 8.49342002950948e-07, + 1.9088921821008853e-06 ], - "worst_mean_abs": 9.270504371683768e-07, - "worst_max_relative": 0.07640685777968143, - "worst_tolerance_ratio": 0.4278519781945703 + "worst_mean_abs": 4.104918905530515e-07, + "worst_max_relative": 0.00030073922668643184, + "worst_tolerance_ratio": 0.11726955656199457 }, "virial": { "comparisons": 243, - "failures": 43, + "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.0289837493692175e-05, - 0.00019545518495078795 + 2.213546985929682e-06, + 1.3288804643352137e-05 ], - "worst_mean_abs": 8.615662166332349e-05, - "worst_max_relative": 0.0005388515499075958, - "worst_tolerance_ratio": 3.1676925701848857 + "worst_mean_abs": 3.360725938508471e-06, + "worst_max_relative": 1.6818499385015776e-05, + "worst_tolerance_ratio": 0.11541710669479967 }, "stress": { "comparisons": 243, @@ -9543,279 +10552,279 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 8.731709522091791e-10, - 8.411392651841432e-09 + 5.549180285852745e-09, + 3.6600464912300845e-08 ], - "worst_mean_abs": 4.566742367445485e-09, - "worst_max_relative": 0.0005043614934603541, - "worst_tolerance_ratio": 0.0007187953475612625 + "worst_mean_abs": 1.0512492438979776e-08, + "worst_max_relative": 1.3879959843296357e-05, + "worst_tolerance_ratio": 0.0029901496599729666 } } }, { "model": "Pro", "n": 64, - "left": "TORCH", + "left": "ECS", "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 1, - "right_completed_processes": 1, + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, "all_passed": true, "metrics": { "energy": { - "comparisons": 9, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 1.519918441772461e-06 + 1.1920928955078125e-07, + 4.500150680541992e-06 ], - "worst_mean_abs": 1.519918441772461e-06, - "worst_max_relative": 2.6217558631867638e-09, - "worst_tolerance_ratio": 2.6213037061386032e-05 + "worst_mean_abs": 4.500150680541992e-06, + "worst_max_relative": 7.760186027310269e-09, + "worst_tolerance_ratio": 7.758848069791656e-05 }, "forces": { - "comparisons": 9, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.994344031203582e-07, - 1.0839158317565989e-06 + 8.694055431135439e-07, + 1.897807413442365e-06 ], - "worst_mean_abs": 2.626011878850698e-07, - "worst_max_relative": 0.00012389096037262779, - "worst_tolerance_ratio": 0.07102128366112866 + "worst_mean_abs": 4.0320700836019946e-07, + "worst_max_relative": 0.0003028601905305742, + "worst_tolerance_ratio": 0.128319062920667 }, "virial": { - "comparisons": 9, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.8289633949564177e-06, - 4.709333710550823e-06 + 2.129881760737362e-06, + 1.327322125987962e-05 ], - "worst_mean_abs": 1.7096973570218665e-06, - "worst_max_relative": 1.1019484075440659e-05, - "worst_tolerance_ratio": 0.07492580598875512 + "worst_mean_abs": 3.0737285930516734e-06, + "worst_max_relative": 2.1197254101867084e-05, + "worst_tolerance_ratio": 0.14395101210017142 }, "stress": { - "comparisons": 9, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.3227540386033053e-09, - 1.2970602536466203e-08 + 4.870078614688245e-09, + 3.65575446407973e-08 ], - "worst_mean_abs": 4.142898455682051e-09, - "worst_max_relative": 9.691509563143057e-06, - "worst_tolerance_ratio": 0.0010587397953746294 + "worst_mean_abs": 1.076947280718955e-08, + "worst_max_relative": 1.9299542793057537e-05, + "worst_tolerance_ratio": 0.002986643200818697 } } }, { "model": "Pro", "n": 64, - "left": "BASE", + "left": "ECS", "right": "BASE", - "scope": "within_process", - "left_completed_processes": 1, - "right_completed_processes": 1, + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, "all_passed": true, "metrics": { "energy": { - "comparisons": 9, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.086162567138672e-07, - 2.2351741790771484e-06 + 0.0, + 3.635883331298828e-06 ], - "worst_mean_abs": 2.2351741790771484e-06, - "worst_max_relative": 3.853670326213181e-09, - "worst_tolerance_ratio": 3.853006028319216e-05 + "worst_mean_abs": 3.635883331298828e-06, + "worst_max_relative": 6.268637063973441e-09, + "worst_tolerance_ratio": 6.267556472732592e-05 }, "forces": { - "comparisons": 9, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 7.06974534026017e-07, - 9.719429909793575e-07 + 5.872166344289553e-07, + 1.1671207111874082e-06 ], - "worst_mean_abs": 2.47243391621188e-07, - "worst_max_relative": 0.00013188541135580013, - "worst_tolerance_ratio": 0.05598483515063402 + "worst_mean_abs": 2.586842571851433e-07, + "worst_max_relative": 0.00020567706074957497, + "worst_tolerance_ratio": 0.08654445754001032 }, "virial": { - "comparisons": 9, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.7056034167239886e-06, - 4.242729241710208e-06 + 8.499544235096579e-07, + 7.126769546061951e-06 ], - "worst_mean_abs": 1.5049813040728882e-06, - "worst_max_relative": 9.696148853464351e-06, - "worst_tolerance_ratio": 0.07269002351076588 + "worst_mean_abs": 2.8240560454337625e-06, + "worst_max_relative": 2.240812587904599e-05, + "worst_tolerance_ratio": 0.15217400945873508 }, "stress": { - "comparisons": 9, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 4.697629295974393e-09, - 1.1685465088617786e-08 + 7.889928172605254e-10, + 1.9628784205666383e-08 ], - "worst_mean_abs": 4.6480661980813414e-09, - "worst_max_relative": 6.783770186736631e-06, - "worst_tolerance_ratio": 0.0009496721878047293 + "worst_mean_abs": 1.0324958575396934e-08, + "worst_max_relative": 2.0425068195041572e-05, + "worst_tolerance_ratio": 0.0015786812437780847 } } }, { "model": "Pro", - "n": 64, - "left": "ECS", - "right": "ECS", + "n": 512, + "left": "BASE", + "right": "BASE", "scope": "within_process", - "left_completed_processes": 2, - "right_completed_processes": 2, + "left_completed_processes": 3, + "right_completed_processes": 3, "all_passed": true, "metrics": { "energy": { - "comparisons": 18, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.9802322387695312e-08, - 3.0100345611572266e-06 + 5.960464477539063e-08, + 7.12275505065918e-06 ], - "worst_mean_abs": 3.0100345611572266e-06, - "worst_max_relative": 5.1896093782334826e-09, - "worst_tolerance_ratio": 5.1887147904010125e-05 + "worst_mean_abs": 7.12275505065918e-06, + "worst_max_relative": 1.535558534169057e-09, + "worst_tolerance_ratio": 1.5355254305572864e-05 }, "forces": { - "comparisons": 18, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.762762065903871e-07, - 9.147038504409011e-07 + 8.576752588140835e-07, + 1.2281044208251046e-06 ], - "worst_mean_abs": 2.6035555022660417e-07, - "worst_max_relative": 0.0001570453217049622, - "worst_tolerance_ratio": 0.06976879806235865 + "worst_mean_abs": 2.367302973371732e-07, + "worst_max_relative": 0.0033962597714922776, + "worst_tolerance_ratio": 0.08957289998000123 }, "virial": { - "comparisons": 18, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.130165203340084e-06, - 7.2501097605481846e-06 + 4.5147943201762075e-06, + 2.1660835486159158e-05 ], - "worst_mean_abs": 2.288475109536571e-06, - "worst_max_relative": 1.314665606591251e-05, - "worst_tolerance_ratio": 0.08927939747581534 + "worst_mean_abs": 8.955624374627922e-06, + "worst_max_relative": 3.769365576609372e-05, + "worst_tolerance_ratio": 0.2729805447207528 }, "stress": { - "comparisons": 18, + "comparisons": 27, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 3.41465599199009e-09, - 1.9968491898197938e-08 + 1.114540369717698e-09, + 7.45737361793064e-09 ], - "worst_mean_abs": 8.343270145941273e-09, - "worst_max_relative": 1.1413206530463464e-05, - "worst_tolerance_ratio": 0.001628759918593722 + "worst_mean_abs": 3.626988874223889e-09, + "worst_max_relative": 2.70958655516476e-05, + "worst_tolerance_ratio": 0.0006061566337325134 } } }, { "model": "Pro", - "n": 64, - "left": "ECS", - "right": "ECS", + "n": 512, + "left": "BASE", + "right": "BASE", "scope": "across_process", - "left_completed_processes": 2, - "right_completed_processes": 2, + "left_completed_processes": 3, + "right_completed_processes": 3, "all_passed": true, "metrics": { "energy": { - "comparisons": 27, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ 2.9802322387695312e-08, - 4.112720489501953e-06 + 8.165836334228516e-06 ], - "worst_mean_abs": 4.112720489501953e-06, - "worst_max_relative": 7.090753394402829e-09, - "worst_tolerance_ratio": 7.089531086279943e-05 + "worst_mean_abs": 8.165836334228516e-06, + "worst_max_relative": 1.7604311228549021e-09, + "worst_tolerance_ratio": 1.7603931714338762e-05 }, "forces": { - "comparisons": 27, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.774947376442242e-07, - 1.166314316236594e-06 + 8.544495440077071e-07, + 1.3003742784789551e-06 ], - "worst_mean_abs": 2.5948061258459126e-07, - "worst_max_relative": 0.0002078401348765092, - "worst_tolerance_ratio": 0.07848616207961301 + "worst_mean_abs": 2.433386927180002e-07, + "worst_max_relative": 0.00370881190888481, + "worst_tolerance_ratio": 0.07696327320957047 }, "virial": { - "comparisons": 27, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.7853426452774102e-06, - 6.365343558911718e-06 + 3.975478726214732e-06, + 1.7980439707798723e-05 ], - "worst_mean_abs": 2.5288423598255093e-06, - "worst_max_relative": 1.775710232290522e-05, - "worst_tolerance_ratio": 0.12058891956353995 + "worst_mean_abs": 6.964719292117887e-06, + "worst_max_relative": 3.88064961458411e-05, + "worst_tolerance_ratio": 0.28104283383259954 }, "stress": { - "comparisons": 27, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.901221097671887e-09, - 1.7531639587980985e-08 + 5.997253580249454e-10, + 6.190290155472233e-09 ], - "worst_mean_abs": 8.637307409463767e-09, - "worst_max_relative": 1.5286664639320423e-05, - "worst_tolerance_ratio": 0.0014299946183736045 + "worst_mean_abs": 2.8201696906331123e-09, + "worst_max_relative": 3.0517400075554895e-05, + "worst_tolerance_ratio": 0.0005031644646046572 } } }, { "model": "Pro", - "n": 64, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 1, - "right_completed_processes": 1, + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, "all_passed": true, "metrics": { "energy": { @@ -9824,12 +10833,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.7881393432617188e-07, - 3.933906555175781e-06 + 2.384185791015625e-07, + 8.165836334228516e-06 ], - "worst_mean_abs": 3.933906555175781e-06, - "worst_max_relative": 6.785721039869355e-09, - "worst_tolerance_ratio": 6.784550751044958e-05 + "worst_mean_abs": 8.165836334228516e-06, + "worst_max_relative": 1.7604311200951038e-09, + "worst_tolerance_ratio": 1.760393168674197e-05 }, "forces": { "comparisons": 27, @@ -9837,12 +10846,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.0858841097416416e-06, - 1.6431010747552932e-06 + 8.434803326906604e-07, + 1.2891272938020393e-06 ], - "worst_mean_abs": 4.018208583552359e-07, - "worst_max_relative": 0.00020495963725084666, - "worst_tolerance_ratio": 0.08233770655480728 + "worst_mean_abs": 2.3701967932559728e-07, + "worst_max_relative": 0.004445660054855727, + "worst_tolerance_ratio": 0.07794902742189604 }, "virial": { "comparisons": 27, @@ -9850,12 +10859,12 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.213546985929682e-06, - 9.812836475830977e-06 + 3.4945092304283776e-06, + 1.5322660473771066e-05 ], - "worst_mean_abs": 2.5592508900502195e-06, - "worst_max_relative": 1.3238162780371968e-05, - "worst_tolerance_ratio": 0.09924368170280601 + "worst_mean_abs": 8.65937363957952e-06, + "worst_max_relative": 3.245924575414504e-05, + "worst_tolerance_ratio": 0.24862768555982143 }, "stress": { "comparisons": 27, @@ -9863,140 +10872,140 @@ "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.612997816539789e-09, - 2.7026838510246787e-08 + 7.061008548692183e-10, + 5.275272229460226e-09 ], - "worst_mean_abs": 8.475510785332842e-09, - "worst_max_relative": 1.1534144768634636e-05, - "worst_tolerance_ratio": 0.0022080128243433354 + "worst_mean_abs": 3.3281194893243745e-09, + "worst_max_relative": 1.777806110928477e-05, + "worst_tolerance_ratio": 0.0004284302835379078 } } }, { "model": "Pro", - "n": 64, + "n": 512, "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 2, - "right_completed_processes": 1, + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, "all_passed": true, "metrics": { "energy": { - "comparisons": 54, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.086162567138672e-07, - 4.351139068603516e-06 + 5.960464477539063e-08, + 7.539987564086914e-06 ], - "worst_mean_abs": 4.351139068603516e-06, - "worst_max_relative": 7.50322622700948e-09, - "worst_tolerance_ratio": 7.501932572719295e-05 + "worst_mean_abs": 7.539987564086914e-06, + "worst_max_relative": 1.625507569956708e-09, + "worst_tolerance_ratio": 1.6254725272212222e-05 }, "forces": { - "comparisons": 54, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 9.742261148915077e-07, - 1.5597756521934514e-06 + 8.076244775168107e-07, + 1.5195523195288274e-06 ], - "worst_mean_abs": 4.0320700836019946e-07, - "worst_max_relative": 0.00024979604792357515, - "worst_tolerance_ratio": 0.09760162552832756 + "worst_mean_abs": 2.3866009174275626e-07, + "worst_max_relative": 0.005405906946654774, + "worst_tolerance_ratio": 0.09230084116887002 }, "virial": { - "comparisons": 54, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.3937603048640455e-06, - 1.1116557359969192e-05 + 3.3652813486995115e-06, + 1.891471632120556e-05 ], - "worst_mean_abs": 2.8792532694412977e-06, - "worst_max_relative": 2.1197254101867084e-05, - "worst_tolerance_ratio": 0.14395101210017142 + "worst_mean_abs": 8.586179844116693e-06, + "worst_max_relative": 2.8012208135760616e-05, + "worst_tolerance_ratio": 0.20651552488716088 }, "stress": { - "comparisons": 54, + "comparisons": 81, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.668819750637502e-09, - 3.061758965458572e-08 + 9.447033147078066e-10, + 6.51194209666528e-09 ], - "worst_mean_abs": 9.543924728352507e-09, - "worst_max_relative": 1.9299542793057537e-05, - "worst_tolerance_ratio": 0.002501366579823094 + "worst_mean_abs": 3.2346261699035066e-09, + "worst_max_relative": 2.4068683410404667e-05, + "worst_tolerance_ratio": 0.000530263496296573 } } }, { "model": "Pro", - "n": 64, + "n": 512, "left": "ECS", "right": "BASE", "scope": "cross_implementation", - "left_completed_processes": 2, - "right_completed_processes": 1, + "left_completed_processes": 3, + "right_completed_processes": 3, "all_passed": true, "metrics": { "energy": { - "comparisons": 54, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 5.960464477539063e-08, - 3.635883331298828e-06 + 2.9802322387695312e-08, + 9.059906005859375e-06 ], - "worst_mean_abs": 3.635883331298828e-06, - "worst_max_relative": 6.268637063973441e-09, - "worst_tolerance_ratio": 6.267556472732592e-05 + "worst_mean_abs": 9.059906005859375e-06, + "worst_max_relative": 1.9531790525757608e-09, + "worst_tolerance_ratio": 1.9531369458898076e-05 }, "forces": { - "comparisons": 54, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 6.613807812527739e-07, - 1.1465652276498872e-06 + 8.428170579222183e-07, + 1.6497713382079837e-06 ], - "worst_mean_abs": 2.557871741359907e-07, - "worst_max_relative": 0.0001767185463139161, - "worst_tolerance_ratio": 0.08654445754001032 + "worst_mean_abs": 2.422898338375736e-07, + "worst_max_relative": 0.005169339914793636, + "worst_tolerance_ratio": 0.10245559618495009 }, "virial": { - "comparisons": 54, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 1.6028361553566128e-06, - 6.326886797580755e-06 + 2.4501980202540352e-06, + 2.0536486857736236e-05 ], - "worst_mean_abs": 2.3277401853816215e-06, - "worst_max_relative": 1.3916530971727104e-05, - "worst_tolerance_ratio": 0.09450762132471897 + "worst_mean_abs": 8.182635733982529e-06, + "worst_max_relative": 3.856703373854477e-05, + "worst_tolerance_ratio": 0.279305619586037 }, "stress": { - "comparisons": 54, + "comparisons": 243, "failures": 0, "all_finite": true, "all_bitwise": false, "max_abs_range": [ - 2.9580262948282476e-09, - 1.7425720703206915e-08 + 5.848777862851526e-10, + 7.070283847970815e-09 ], - "worst_mean_abs": 7.0962514801856174e-09, - "worst_max_relative": 1.220163929743474e-05, - "worst_tolerance_ratio": 0.0014213551835974513 + "worst_mean_abs": 3.0359155135010474e-09, + "worst_max_relative": 2.8521296126945394e-05, + "worst_tolerance_ratio": 0.0005746928364611155 } } } diff --git a/doc/development/ecs-edge-cohort-multimodel-summary.md b/doc/development/ecs-edge-cohort-multimodel-summary.md index 1206c462f4..1653f68ec0 100644 --- a/doc/development/ecs-edge-cohort-multimodel-summary.md +++ b/doc/development/ecs-edge-cohort-multimodel-summary.md @@ -1,8 +1,10 @@ +> Historical baseline668b60cc, completed117-process archive (102 complete/15 OOM), finalized2026-10-26. This is not the newer master2ba617bc comparison; see ecs-validation-20261025/REPORT.md. + # ECS 精度验收汇总(2026-10-19) > 以精度为先;下表数值为最差误差÷容差,≤1才满足该项既定判据。未满3个进程注明未齐。OOM不是PASS。 -已记录95个进程,其中91个完整执行;标准矩阵108进程,加真实Neo分批9进程,共计划117。此轮不是性能测试。 +已记录117个进程,其中102个完整执行;标准矩阵108进程,加真实Neo分批9进程,共计划117。此轮不是性能测试。 ## 模型与尺寸总表 @@ -17,9 +19,9 @@ | Mini | 512 | 2.326 | 1.541 | 2.770 | 2.164 | 2.636 | 回退原生,不能算ECS验证 | | Mini | 1000 | 0.800 | 0.726 | 1.328 | 1.286 | 1.028 | 回退原生,不能算ECS验证 | | Mini | 4096 | 18.006 | 8.724 | 8.598 | 10.488 | 14.464 | 回退原生,不能算ECS验证 | -| Pro | 64 | 0.075(1/3,未齐) | 0.073(1/3,未齐) | 0.121(2/3,未齐) | 0.095(1/3,未齐) | 0.144(1/3,未齐) | 回退原生,不能算ECS验证 | -| Pro | 512 | OOM/缺参照 | 待测 | 待测 | 待测 | OOM/缺参照 | 回退原生,不能算ECS验证 | -| Pro | 4096 | 待测 | 待测 | 待测 | 待测 | 待测 | 回退原生,不能算ECS验证 | +| Pro | 64 | 0.130 | 0.122 | 0.121 | 0.152 | 0.144 | 回退原生,不能算ECS验证 | +| Pro | 512 | OOM/缺参照 | 0.281 | 0.249 | 0.279 | OOM/缺参照 | 回退原生,不能算ECS验证 | +| Pro | 4096 | OOM/缺参照 | OOM/缺参照 | OOM/缺参照 | OOM/缺参照 | OOM/缺参照 | 回退原生,不能算ECS验证 | ## 真正8192边运行时分批:与PR单批路径分开 @@ -38,7 +40,7 @@ | Neo | OOM/缺参照 | 2.275e-05 ~ 2.513e-04 | 2.126e-05 ~ 1.705e-04 | 2.113e-05 ~ 2.482e-04 | OOM/缺参照 | | Nano | 9.505e-05 ~ 6.979e-04 | 5.914e-05 ~ 4.544e-04 | 6.502e-05 ~ 7.514e-04 | 7.473e-05 ~ 6.500e-04 | 9.420e-05 ~ 1.060e-03 | | Mini | 5.062e-05 ~ 4.385e-04 | 4.477e-05 ~ 3.680e-04 | 3.166e-05 ~ 3.210e-04 | 4.190e-05 ~ 3.580e-04 | 7.984e-04 ~ 1.493e-03 | -| Pro | 待测 | 待测 | 待测 | 待测 | 待测 | +| Pro | OOM/缺参照 | OOM/缺参照 | OOM/缺参照 | OOM/缺参照 | OOM/缺参照 | ## 必须保留的限制 diff --git a/doc/development/ecs-edge-cohort-multimodel-update.md b/doc/development/ecs-edge-cohort-multimodel-update.md index 46200e720f..b011945994 100644 --- a/doc/development/ecs-edge-cohort-multimodel-update.md +++ b/doc/development/ecs-edge-cohort-multimodel-update.md @@ -1,3 +1,5 @@ +> **2026-10-26 status update:** the old-base matrix is now complete (117 processes,102 complete,15 OOM); earlier pending-Pro statements below describe the historical publication snapshot. The new135-process master2ba617bc comparison is in [ecs-validation-20261025](ecs-validation-20261025/README.md). Neither matrix establishes general production acceptance. + # ECS multi-model and N4096 follow-up (2026-10-19) This is a measurement update for the default-off Draft PR, not a claim of multi-model production acceptance. The production implementation is unchanged from PR head `9e2e4c5de1b90cf2d6bc8b2706bc103a06778dae`; BASE is pinned to `668b60cc2a9559f79abb9c33acd959833376344f`, not subsequent upstream master. diff --git a/doc/development/ecs-validation-20261025/ACCURACY_TABLE.md b/doc/development/ecs-validation-20261025/ACCURACY_TABLE.md new file mode 100644 index 0000000000..a68839dd9c --- /dev/null +++ b/doc/development/ecs-validation-20261025/ACCURACY_TABLE.md @@ -0,0 +1,266 @@ +# ECS 多模型多尺寸精度测试 + +> 精度优先;未放宽阈值。误差范围为每对输出max_abs的min~max,不是置信区间。基线SHA与模型SHA见JSON。 + +模式:TORCH=纯PyTorch编译;ECS=当前PR候选(非Neo为回退);ECS_RUNTIME=强制真实8192分批。单位:能量/位力eV,力eV/Å,stress eV/ų。所有结果均不是DFT预测误差。 + +| 模型 | 原子数 | 对照 | 范围 | 完成进程数 | 能量max_abs范围 | 力max_abs范围 | 位力max_abs范围 | stress max_abs范围 | 最差误差/容差 | 状态 | +| --- | ---: | --- | --- | --- | --- | --- | --- | --- | ---: | --- | +| Mini | 96 | TORCH vs TORCH | within_process | 3/3 | 1.788e-07~1.234e-05 | 4.585e-06~8.618e-06 | 1.402e-05~6.538e-05 | 2.375e-08~1.200e-07 | 1.1463 | FAIL | +| Mini | 96 | TORCH vs TORCH | across_process | 3/3 | 0.000e+00~1.246e-05 | 4.587e-06~8.061e-06 | 7.968e-06~6.371e-05 | 1.463e-08~1.170e-07 | 1.5990 | FAIL | +| Mini | 96 | BASE vs BASE | within_process | 3/3 | 1.192e-07~9.894e-06 | 4.567e-06~6.735e-06 | 1.251e-05~4.619e-05 | 2.294e-08~8.481e-08 | 1.8636 | FAIL | +| Mini | 96 | BASE vs BASE | across_process | 3/3 | 5.960e-08~1.049e-05 | 4.451e-06~7.551e-06 | 1.017e-05~4.644e-05 | 1.809e-08~8.526e-08 | 1.7011 | FAIL | +| Mini | 96 | ECS vs ECS | within_process | 3/3 | 3.576e-07~1.740e-05 | 4.543e-06~7.322e-06 | 7.101e-06~7.174e-05 | 1.285e-08~1.317e-07 | 2.1289 | FAIL | +| Mini | 96 | ECS vs ECS | across_process | 3/3 | 5.960e-08~1.699e-05 | 4.675e-06~8.280e-06 | 8.842e-06~5.695e-05 | 1.572e-08~1.046e-07 | 2.1372 | FAIL | +| Mini | 96 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~1.836e-05 | 5.616e-06~1.080e-05 | 1.972e-05~8.237e-05 | 3.388e-08~1.512e-07 | 1.7538 | FAIL | +| Mini | 96 | ECS vs TORCH | cross_implementation | 3/3 | 0.000e+00~1.651e-05 | 5.894e-06~1.135e-05 | 1.419e-05~9.370e-05 | 2.501e-08~1.720e-07 | 1.9425 | FAIL | +| Mini | 96 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~1.663e-05 | 4.214e-06~8.067e-06 | 8.232e-06~8.385e-05 | 1.474e-08~1.540e-07 | 1.9484 | FAIL | +| Mini | 512 | TORCH vs TORCH | within_process | 3/3 | 4.172e-07~3.606e-05 | 5.870e-06~7.873e-06 | 2.876e-05~1.708e-04 | 9.493e-09~5.882e-08 | 2.6615 | FAIL | +| Mini | 512 | TORCH vs TORCH | across_process | 3/3 | 1.788e-07~3.493e-05 | 5.543e-06~8.601e-06 | 2.627e-05~1.340e-04 | 9.046e-09~4.613e-08 | 2.1807 | FAIL | +| Mini | 512 | BASE vs BASE | within_process | 3/3 | 7.153e-07~3.594e-05 | 5.392e-06~8.266e-06 | 2.302e-05~9.672e-05 | 7.924e-09~3.330e-08 | 2.4707 | FAIL | +| Mini | 512 | BASE vs BASE | across_process | 3/3 | 1.192e-07~2.855e-05 | 5.616e-06~8.582e-06 | 1.416e-05~1.244e-04 | 4.757e-09~4.283e-08 | 2.6165 | FAIL | +| Mini | 512 | ECS vs ECS | within_process | 3/3 | 5.960e-07~2.813e-05 | 5.659e-06~9.532e-06 | 1.953e-05~1.400e-04 | 6.450e-09~4.821e-08 | 1.9644 | FAIL | +| Mini | 512 | ECS vs ECS | across_process | 3/3 | 0.000e+00~2.646e-05 | 5.619e-06~8.691e-06 | 1.610e-05~1.445e-04 | 5.544e-09~4.975e-08 | 3.1341 | FAIL | +| Mini | 512 | BASE vs TORCH | cross_implementation | 3/3 | 5.960e-08~3.952e-05 | 7.673e-06~1.210e-05 | 9.353e-05~2.595e-04 | 3.220e-08~8.933e-08 | 2.7111 | FAIL | +| Mini | 512 | ECS vs TORCH | cross_implementation | 3/3 | 5.960e-08~3.040e-05 | 7.604e-06~1.289e-05 | 9.723e-05~2.485e-04 | 3.347e-08~8.555e-08 | 3.0424 | FAIL | +| Mini | 512 | ECS vs BASE | cross_implementation | 3/3 | 5.960e-08~3.386e-05 | 5.100e-06~8.801e-06 | 1.883e-05~1.636e-04 | 6.483e-09~5.634e-08 | 3.0773 | FAIL | +| Mini | 4096 | TORCH vs TORCH | within_process | 3/3 | 5.364e-07~7.576e-05 | 6.887e-06~1.004e-05 | 9.010e-05~3.499e-04 | 3.878e-09~1.506e-08 | 10.2623 | FAIL | +| Mini | 4096 | TORCH vs TORCH | across_process | 3/3 | 1.788e-07~7.707e-05 | 6.973e-06~8.997e-06 | 6.730e-05~3.137e-04 | 2.584e-09~1.350e-08 | 8.9322 | FAIL | +| Mini | 4096 | BASE vs BASE | within_process | 3/3 | 2.086e-06~9.507e-05 | 6.874e-06~9.211e-06 | 8.355e-05~2.777e-04 | 3.595e-09~1.195e-08 | 10.3628 | FAIL | +| Mini | 4096 | BASE vs BASE | across_process | 3/3 | 7.749e-07~1.156e-04 | 7.001e-06~9.328e-06 | 5.222e-05~3.119e-04 | 2.040e-09~1.342e-08 | 12.0549 | FAIL | +| Mini | 4096 | ECS vs ECS | within_process | 3/3 | 5.960e-07~7.117e-05 | 7.187e-06~1.007e-05 | 5.141e-05~3.646e-04 | 2.061e-09~1.569e-08 | 6.1755 | FAIL | +| Mini | 4096 | ECS vs ECS | across_process | 3/3 | 5.364e-07~8.416e-05 | 7.002e-06~9.466e-06 | 4.396e-05~3.296e-04 | 1.892e-09~1.418e-08 | 7.3596 | FAIL | +| Mini | 4096 | BASE vs TORCH | cross_implementation | 3/3 | 3.576e-07~1.388e-04 | 9.301e-06~1.306e-05 | 7.796e-04~1.488e-03 | 3.355e-08~6.403e-08 | 12.5994 | FAIL | +| Mini | 4096 | ECS vs TORCH | cross_implementation | 3/3 | 1.311e-06~1.465e-04 | 9.302e-06~1.398e-05 | 8.275e-04~1.521e-03 | 3.561e-08~6.544e-08 | 9.8370 | FAIL | +| Mini | 4096 | ECS vs BASE | cross_implementation | 3/3 | 2.384e-07~1.084e-04 | 6.848e-06~1.005e-05 | 3.919e-05~3.468e-04 | 1.687e-09~1.492e-08 | 11.9793 | FAIL | +| Nano | 96 | TORCH vs TORCH | within_process | 3/3 | 4.768e-07~2.658e-05 | 7.035e-06~1.130e-05 | 1.325e-05~7.839e-05 | 2.318e-08~1.439e-07 | 5.5420 | FAIL | +| Nano | 96 | TORCH vs TORCH | across_process | 3/3 | 0.000e+00~2.420e-05 | 6.704e-06~1.136e-05 | 1.439e-05~7.676e-05 | 2.480e-08~1.409e-07 | 5.4077 | FAIL | +| Nano | 96 | BASE vs BASE | within_process | 3/3 | 1.192e-07~1.299e-05 | 6.957e-06~1.220e-05 | 1.406e-05~7.483e-05 | 2.405e-08~1.374e-07 | 5.7063 | FAIL | +| Nano | 96 | BASE vs BASE | across_process | 3/3 | 1.788e-07~1.878e-05 | 6.726e-06~1.142e-05 | 1.593e-05~8.811e-05 | 2.581e-08~1.618e-07 | 8.3241 | FAIL | +| Nano | 96 | ECS vs ECS | within_process | 3/3 | 0.000e+00~1.794e-05 | 7.266e-06~1.080e-05 | 1.871e-05~8.601e-05 | 3.432e-08~1.579e-07 | 7.3608 | FAIL | +| Nano | 96 | ECS vs ECS | across_process | 3/3 | 1.192e-07~2.122e-05 | 7.020e-06~1.150e-05 | 1.177e-05~8.074e-05 | 2.161e-08~1.482e-07 | 6.4631 | FAIL | +| Nano | 96 | BASE vs TORCH | cross_implementation | 3/3 | 1.788e-07~3.499e-05 | 6.454e-06~1.286e-05 | 1.219e-05~9.567e-05 | 2.155e-08~1.757e-07 | 9.4133 | FAIL | +| Nano | 96 | ECS vs TORCH | cross_implementation | 3/3 | 0.000e+00~3.982e-05 | 6.870e-06~1.269e-05 | 1.227e-05~9.163e-05 | 2.207e-08~1.682e-07 | 8.0976 | FAIL | +| Nano | 96 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~2.354e-05 | 6.351e-06~1.155e-05 | 1.137e-05~1.014e-04 | 2.003e-08~1.862e-07 | 9.1350 | FAIL | +| Nano | 512 | TORCH vs TORCH | within_process | 3/3 | 8.941e-07~3.463e-05 | 8.984e-06~1.488e-05 | 4.949e-05~1.978e-04 | 1.683e-08~6.809e-08 | 7.7673 | FAIL | +| Nano | 512 | TORCH vs TORCH | across_process | 3/3 | 3.576e-07~6.020e-05 | 8.737e-06~1.247e-05 | 3.414e-05~2.010e-04 | 1.174e-08~6.921e-08 | 7.8147 | FAIL | +| Nano | 512 | BASE vs BASE | within_process | 3/3 | 1.371e-06~5.305e-05 | 8.899e-06~1.278e-05 | 4.218e-05~1.863e-04 | 1.452e-08~6.415e-08 | 4.2656 | FAIL | +| Nano | 512 | BASE vs BASE | across_process | 3/3 | 8.941e-07~6.390e-05 | 8.700e-06~1.347e-05 | 1.671e-05~1.607e-04 | 5.273e-09~5.534e-08 | 4.6439 | FAIL | +| Nano | 512 | ECS vs ECS | within_process | 3/3 | 1.907e-06~4.596e-05 | 8.712e-06~1.348e-05 | 3.527e-05~1.795e-04 | 1.214e-08~6.181e-08 | 7.0513 | FAIL | +| Nano | 512 | ECS vs ECS | across_process | 3/3 | 1.073e-06~5.358e-05 | 8.399e-06~1.288e-05 | 1.549e-05~2.203e-04 | 5.095e-09~7.585e-08 | 7.1989 | FAIL | +| Nano | 512 | BASE vs TORCH | cross_implementation | 3/3 | 2.980e-07~1.107e-04 | 9.036e-06~1.477e-05 | 2.200e-05~2.575e-04 | 6.814e-09~8.866e-08 | 7.1940 | FAIL | +| Nano | 512 | ECS vs TORCH | cross_implementation | 3/3 | 6.676e-06~1.102e-04 | 8.284e-06~1.325e-05 | 2.255e-05~2.560e-04 | 7.763e-09~8.813e-08 | 9.4950 | FAIL | +| Nano | 512 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~6.342e-05 | 8.381e-06~1.570e-05 | 2.904e-05~1.981e-04 | 9.659e-09~6.821e-08 | 6.2237 | FAIL | +| Nano | 4096 | TORCH vs TORCH | within_process | 3/3 | 1.848e-06~1.260e-04 | 1.119e-05~1.436e-05 | 5.544e-05~3.779e-04 | 2.386e-09~1.626e-08 | 2.4958 | FAIL | +| Nano | 4096 | TORCH vs TORCH | across_process | 3/3 | 7.749e-07~1.612e-04 | 1.085e-05~1.484e-05 | 7.050e-05~4.504e-04 | 3.034e-09~1.938e-08 | 2.6872 | FAIL | +| Nano | 4096 | BASE vs BASE | within_process | 3/3 | 1.091e-05~1.924e-04 | 1.079e-05~1.563e-05 | 8.116e-05~4.467e-04 | 3.240e-09~1.922e-08 | 2.2079 | FAIL | +| Nano | 4096 | BASE vs BASE | across_process | 3/3 | 7.749e-07~1.666e-04 | 1.064e-05~1.480e-05 | 9.755e-05~5.898e-04 | 4.198e-09~2.538e-08 | 3.8540 | FAIL | +| Nano | 4096 | ECS vs ECS | within_process | 3/3 | 2.801e-06~1.946e-04 | 1.118e-05~1.424e-05 | 9.154e-05~4.406e-04 | 3.940e-09~1.896e-08 | 2.3048 | FAIL | +| Nano | 4096 | ECS vs ECS | across_process | 3/3 | 1.132e-06~2.133e-04 | 1.075e-05~1.605e-05 | 6.212e-05~5.332e-04 | 2.673e-09~2.294e-08 | 4.1555 | FAIL | +| Nano | 4096 | BASE vs TORCH | cross_implementation | 3/3 | 1.556e-04~4.887e-04 | 1.069e-05~1.613e-05 | 5.668e-05~7.157e-04 | 2.388e-09~3.080e-08 | 4.1304 | FAIL | +| Nano | 4096 | ECS vs TORCH | cross_implementation | 3/3 | 1.753e-04~5.112e-04 | 1.066e-05~1.554e-05 | 7.483e-05~7.943e-04 | 3.220e-09~3.418e-08 | 4.4355 | FAIL | +| Nano | 4096 | ECS vs BASE | cross_implementation | 3/3 | 2.384e-07~2.006e-04 | 1.020e-05~1.522e-05 | 3.754e-05~6.358e-04 | 1.501e-09~2.736e-08 | 4.1590 | FAIL | +| Neo | 96 | TORCH vs TORCH | within_process | 3/3 | 0.000e+00~1.222e-05 | 2.529e-06~4.930e-06 | 4.051e-06~2.011e-05 | 6.975e-09~3.692e-08 | 0.5965 | PASS | +| Neo | 96 | TORCH vs TORCH | across_process | 3/3 | 1.788e-07~1.091e-05 | 2.529e-06~4.594e-06 | 4.727e-06~2.222e-05 | 8.078e-09~4.080e-08 | 0.4535 | PASS | +| Neo | 96 | BASE vs BASE | within_process | 3/3 | 4.768e-07~7.212e-06 | 2.483e-06~3.981e-06 | 3.664e-06~2.443e-05 | 4.932e-09~4.486e-08 | 0.3532 | PASS | +| Neo | 96 | BASE vs BASE | across_process | 3/3 | 5.960e-08~1.073e-05 | 2.437e-06~4.474e-06 | 3.807e-06~1.991e-05 | 6.350e-09~3.656e-08 | 0.4794 | PASS | +| Neo | 96 | ECS vs ECS | within_process | 3/3 | 5.960e-08~6.557e-06 | 2.617e-06~4.197e-06 | 2.986e-06~2.181e-05 | 5.483e-09~4.005e-08 | 0.4760 | PASS | +| Neo | 96 | ECS vs ECS | across_process | 3/3 | 1.192e-07~6.855e-06 | 2.545e-06~4.369e-06 | 3.881e-06~2.690e-05 | 7.126e-09~4.938e-08 | 0.5175 | PASS | +| Neo | 96 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~1.115e-05 | 3.603e-06~7.196e-06 | 1.558e-05~4.824e-05 | 2.862e-08~8.858e-08 | 0.5819 | PASS | +| Neo | 96 | ECS vs TORCH | cross_implementation | 3/3 | 0.000e+00~1.127e-05 | 3.614e-06~7.185e-06 | 1.331e-05~5.232e-05 | 2.154e-08~9.607e-08 | 0.5914 | PASS | +| Neo | 96 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~1.037e-05 | 2.304e-06~5.034e-06 | 2.399e-06~2.851e-05 | 2.107e-09~5.235e-08 | 0.5769 | PASS | +| Neo | 512 | TORCH vs TORCH | within_process | 3/3 | 1.192e-07~1.776e-05 | 3.427e-06~4.336e-06 | 1.278e-05~5.254e-05 | 4.298e-09~1.809e-08 | 0.4674 | PASS | +| Neo | 512 | TORCH vs TORCH | across_process | 3/3 | 4.172e-07~1.734e-05 | 3.283e-06~4.901e-06 | 1.086e-05~6.951e-05 | 3.545e-09~2.393e-08 | 0.7340 | PASS | +| Neo | 512 | BASE vs BASE | within_process | 3/3 | 1.192e-07~2.247e-05 | 3.262e-06~4.286e-06 | 7.840e-06~6.508e-05 | 2.699e-09~2.240e-08 | 0.6034 | PASS | +| Neo | 512 | BASE vs BASE | across_process | 3/3 | 5.960e-08~1.889e-05 | 2.996e-06~5.144e-06 | 8.897e-06~6.434e-05 | 2.589e-09~2.215e-08 | 0.5044 | PASS | +| Neo | 512 | ECS vs ECS | within_process | 3/3 | 9.537e-07~1.884e-05 | 3.293e-06~5.012e-06 | 9.156e-06~5.708e-05 | 3.152e-09~1.965e-08 | 0.8473 | PASS | +| Neo | 512 | ECS vs ECS | across_process | 3/3 | 1.192e-07~2.056e-05 | 3.137e-06~4.858e-06 | 6.668e-06~5.049e-05 | 2.046e-09~1.738e-08 | 0.8394 | PASS | +| Neo | 512 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~2.021e-05 | 4.529e-06~7.150e-06 | 7.708e-05~1.673e-04 | 2.654e-08~5.758e-08 | 0.8254 | PASS | +| Neo | 512 | ECS vs TORCH | cross_implementation | 3/3 | 2.980e-07~2.718e-05 | 4.555e-06~7.020e-06 | 7.569e-05~1.572e-04 | 2.606e-08~5.411e-08 | 1.0809 | FAIL | +| Neo | 512 | ECS vs BASE | cross_implementation | 3/3 | 1.192e-07~2.670e-05 | 3.075e-06~5.255e-06 | 4.760e-06~7.743e-05 | 1.186e-09~2.666e-08 | 0.8589 | PASS | +| Neo | 4096 | BASE vs BASE | within_process | 3/3 | 1.788e-07~5.084e-05 | 3.915e-06~5.114e-06 | 2.331e-05~1.037e-04 | 1.003e-09~4.284e-09 | 1.3472 | FAIL | +| Neo | 4096 | BASE vs BASE | across_process | 3/3 | 5.364e-07~5.960e-05 | 4.095e-06~5.564e-06 | 2.725e-05~1.374e-04 | 1.066e-09~5.913e-09 | 1.7886 | FAIL | +| Neo | 4096 | ECS vs ECS | within_process | 3/3 | 2.086e-06~5.770e-05 | 4.087e-06~5.089e-06 | 3.967e-05~2.099e-04 | 1.707e-09~9.031e-09 | 2.6929 | FAIL | +| Neo | 4096 | ECS vs ECS | across_process | 3/3 | 1.788e-07~5.788e-05 | 4.010e-06~5.939e-06 | 2.293e-05~2.537e-04 | 8.575e-10~1.092e-08 | 3.4631 | FAIL | +| Neo | 4096 | ECS vs BASE | cross_implementation | 3/3 | 1.788e-07~6.694e-05 | 4.074e-06~6.208e-06 | 1.792e-05~1.883e-04 | 6.963e-10~8.102e-09 | 2.7953 | FAIL | +| NeoCu | 96 | TORCH vs TORCH | within_process | 3/3 | 1.192e-07~3.338e-06 | 3.603e-07~5.453e-07 | 1.724e-06~1.361e-05 | 1.519e-09~1.200e-08 | 0.1450 | PASS | +| NeoCu | 96 | TORCH vs TORCH | across_process | 3/3 | 0.000e+00~3.636e-06 | 3.280e-07~6.306e-07 | 1.289e-06~1.229e-05 | 1.134e-09~1.083e-08 | 0.1805 | PASS | +| NeoCu | 96 | BASE vs BASE | within_process | 3/3 | 5.960e-08~4.292e-06 | 3.674e-07~6.496e-07 | 1.058e-06~1.315e-05 | 9.327e-10~1.159e-08 | 0.2355 | PASS | +| NeoCu | 96 | BASE vs BASE | across_process | 3/3 | 0.000e+00~4.590e-06 | 3.296e-07~5.808e-07 | 1.086e-06~1.663e-05 | 9.277e-10~1.466e-08 | 0.2466 | PASS | +| NeoCu | 96 | ECS vs ECS | within_process | 3/3 | 1.192e-07~4.292e-06 | 3.467e-07~5.431e-07 | 1.491e-06~1.204e-05 | 1.314e-09~1.061e-08 | 0.2134 | PASS | +| NeoCu | 96 | ECS vs ECS | across_process | 3/3 | 0.000e+00~4.411e-06 | 3.581e-07~6.476e-07 | 9.126e-07~1.739e-05 | 8.043e-10~1.533e-08 | 0.2576 | PASS | +| NeoCu | 96 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~6.855e-06 | 3.360e-07~6.391e-07 | 3.217e-06~2.707e-05 | 2.835e-09~2.386e-08 | 0.2037 | PASS | +| NeoCu | 96 | ECS vs TORCH | cross_implementation | 3/3 | 0.000e+00~5.782e-06 | 3.374e-07~6.297e-07 | 3.805e-06~2.837e-05 | 3.353e-09~2.500e-08 | 0.2452 | PASS | +| NeoCu | 96 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~5.841e-06 | 3.036e-07~6.730e-07 | 5.077e-07~1.968e-05 | 4.474e-10~1.734e-08 | 0.2689 | PASS | +| NeoCu | 512 | TORCH vs TORCH | within_process | 3/3 | 0.000e+00~1.115e-05 | 4.107e-07~5.963e-07 | 3.552e-06~3.151e-05 | 5.869e-10~5.207e-09 | 0.2895 | PASS | +| NeoCu | 512 | TORCH vs TORCH | across_process | 3/3 | 3.576e-07~1.138e-05 | 4.138e-07~6.573e-07 | 2.813e-06~4.521e-05 | 4.174e-10~7.471e-09 | 0.2794 | PASS | +| NeoCu | 512 | BASE vs BASE | within_process | 3/3 | 1.192e-07~8.345e-06 | 4.176e-07~5.775e-07 | 4.065e-06~3.114e-05 | 6.577e-10~5.145e-09 | 0.3275 | PASS | +| NeoCu | 512 | BASE vs BASE | across_process | 3/3 | 0.000e+00~1.007e-05 | 4.184e-07~6.110e-07 | 1.907e-06~3.137e-05 | 3.124e-10~5.184e-09 | 0.3759 | PASS | +| NeoCu | 512 | ECS vs ECS | within_process | 3/3 | 6.557e-07~6.557e-06 | 4.320e-07~7.186e-07 | 2.182e-06~4.652e-05 | 3.606e-10~7.687e-09 | 0.2868 | PASS | +| NeoCu | 512 | ECS vs ECS | across_process | 3/3 | 5.960e-08~1.085e-05 | 4.208e-07~6.428e-07 | 2.016e-06~4.702e-05 | 3.332e-10~7.770e-09 | 0.4818 | PASS | +| NeoCu | 512 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~1.919e-05 | 4.175e-07~7.357e-07 | 4.216e-05~1.130e-04 | 6.966e-09~1.867e-08 | 0.3659 | PASS | +| NeoCu | 512 | ECS vs TORCH | cross_implementation | 3/3 | 5.960e-08~1.860e-05 | 4.282e-07~7.158e-07 | 3.795e-05~1.295e-04 | 6.271e-09~2.139e-08 | 0.3641 | PASS | +| NeoCu | 512 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~1.073e-05 | 3.929e-07~6.560e-07 | 1.895e-06~4.981e-05 | 2.801e-10~8.231e-09 | 0.4547 | PASS | +| NeoCu | 4096 | TORCH vs TORCH | within_process | 3/3 | 8.345e-07~1.687e-05 | 5.199e-07~6.523e-07 | 7.247e-06~8.839e-05 | 1.497e-10~1.826e-09 | 0.3163 | PASS | +| NeoCu | 4096 | TORCH vs TORCH | across_process | 3/3 | 5.960e-08~2.599e-05 | 5.038e-07~7.152e-07 | 8.798e-06~1.036e-04 | 1.817e-10~2.140e-09 | 0.3102 | PASS | +| NeoCu | 4096 | BASE vs BASE | within_process | 3/3 | 7.153e-07~4.148e-05 | 5.221e-07~7.069e-07 | 5.660e-06~7.616e-05 | 9.913e-11~1.573e-09 | 0.2691 | PASS | +| NeoCu | 4096 | BASE vs BASE | across_process | 3/3 | 1.192e-07~3.791e-05 | 5.172e-07~6.890e-07 | 8.123e-06~1.054e-04 | 1.678e-10~2.178e-09 | 0.3652 | PASS | +| NeoCu | 4096 | ECS vs ECS | within_process | 3/3 | 1.788e-07~2.778e-05 | 5.439e-07~7.169e-07 | 7.803e-06~1.111e-04 | 1.612e-10~2.295e-09 | 0.2754 | PASS | +| NeoCu | 4096 | ECS vs ECS | across_process | 3/3 | 5.960e-08~3.821e-05 | 5.166e-07~7.105e-07 | 7.015e-06~9.401e-05 | 1.449e-10~1.942e-09 | 0.4257 | PASS | +| NeoCu | 4096 | BASE vs TORCH | cross_implementation | 3/3 | 3.046e-05~8.726e-05 | 5.351e-07~8.014e-07 | 4.939e-04~6.932e-04 | 1.020e-08~1.432e-08 | 0.4284 | PASS | +| NeoCu | 4096 | ECS vs TORCH | cross_implementation | 3/3 | 2.074e-05~8.494e-05 | 5.446e-07~7.932e-07 | 4.744e-04~6.950e-04 | 9.798e-09~1.435e-08 | 0.4357 | PASS | +| NeoCu | 4096 | ECS vs BASE | cross_implementation | 3/3 | 5.960e-08~3.868e-05 | 5.229e-07~7.972e-07 | 5.578e-06~1.249e-04 | 9.600e-11~2.581e-09 | 0.3727 | PASS | +| Pro | 96 | TORCH vs TORCH | within_process | 3/3 | 2.980e-08~3.546e-06 | 7.446e-07~1.197e-06 | 1.965e-06~9.613e-06 | 2.423e-09~1.765e-08 | 0.1584 | PASS | +| Pro | 96 | TORCH vs TORCH | across_process | 3/3 | 5.960e-08~4.083e-06 | 7.445e-07~1.667e-06 | 1.298e-06~8.369e-06 | 1.832e-09~1.537e-08 | 0.1908 | PASS | +| Pro | 96 | BASE vs BASE | within_process | 3/3 | 2.980e-08~2.086e-06 | 6.661e-07~1.003e-06 | 1.850e-06~6.390e-06 | 2.572e-09~1.173e-08 | 0.1034 | PASS | +| Pro | 96 | BASE vs BASE | across_process | 3/3 | 2.980e-08~3.368e-06 | 6.060e-07~1.153e-06 | 1.505e-06~8.763e-06 | 2.631e-09~1.609e-08 | 0.1715 | PASS | +| Pro | 96 | ECS vs ECS | within_process | 3/3 | 2.980e-08~2.652e-06 | 7.281e-07~1.056e-06 | 1.903e-06~7.248e-06 | 1.676e-09~1.331e-08 | 0.1771 | PASS | +| Pro | 96 | ECS vs ECS | across_process | 3/3 | 0.000e+00~3.338e-06 | 6.510e-07~1.144e-06 | 1.396e-06~7.585e-06 | 1.931e-09~1.393e-08 | 0.2516 | PASS | +| Pro | 96 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~5.037e-06 | 1.030e-06~1.919e-06 | 6.303e-06~1.613e-05 | 1.023e-08~2.962e-08 | 0.1988 | PASS | +| Pro | 96 | ECS vs TORCH | cross_implementation | 3/3 | 0.000e+00~5.871e-06 | 1.039e-06~1.691e-06 | 5.839e-06~1.643e-05 | 9.968e-09~3.017e-08 | 0.2784 | PASS | +| Pro | 96 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~3.725e-06 | 6.266e-07~1.310e-06 | 1.210e-06~9.066e-06 | 1.710e-09~1.665e-08 | 0.2276 | PASS | +| Pro | 512 | BASE vs BASE | within_process | 3/3 | 1.192e-07~7.242e-06 | 8.882e-07~1.212e-06 | 3.637e-06~1.652e-05 | 6.287e-10~5.687e-09 | 0.2266 | PASS | +| Pro | 512 | BASE vs BASE | across_process | 3/3 | 2.980e-08~1.019e-05 | 8.338e-07~1.360e-06 | 3.104e-06~2.018e-05 | 8.452e-10~6.947e-09 | 0.2604 | PASS | +| Pro | 512 | ECS vs ECS | within_process | 3/3 | 2.980e-08~7.421e-06 | 8.405e-07~1.356e-06 | 3.452e-06~1.421e-05 | 1.188e-09~4.893e-09 | 0.2375 | PASS | +| Pro | 512 | ECS vs ECS | across_process | 3/3 | 2.980e-08~8.345e-06 | 8.582e-07~1.497e-06 | 2.475e-06~1.641e-05 | 6.944e-10~5.648e-09 | 0.2399 | PASS | +| Pro | 512 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~1.121e-05 | 8.272e-07~1.477e-06 | 2.360e-06~1.753e-05 | 5.223e-10~6.034e-09 | 0.2884 | PASS | + +## 所有进程状态(含OOM/失败,不能略去) + +| 运行 | 状态 | 参数量 | opaque ECS调用 | single路径标记 | +| --- | --- | ---: | ---: | --- | +| Mini_n4096_BASE_p0 | completed | 654988 | 0 | False | +| Mini_n4096_BASE_p1 | completed | 654988 | 0 | False | +| Mini_n4096_BASE_p2 | completed | 654988 | 0 | False | +| Mini_n4096_ECS_p0 | completed | 654988 | 0 | False | +| Mini_n4096_ECS_p1 | completed | 654988 | 0 | False | +| Mini_n4096_ECS_p2 | completed | 654988 | 0 | False | +| Mini_n4096_TORCH_p0 | completed | 654988 | 0 | False | +| Mini_n4096_TORCH_p1 | completed | 654988 | 0 | False | +| Mini_n4096_TORCH_p2 | completed | 654988 | 0 | False | +| Mini_n512_BASE_p0 | completed | 654988 | 0 | False | +| Mini_n512_BASE_p1 | completed | 654988 | 0 | False | +| Mini_n512_BASE_p2 | completed | 654988 | 0 | False | +| Mini_n512_ECS_p0 | completed | 654988 | 0 | False | +| Mini_n512_ECS_p1 | completed | 654988 | 0 | False | +| Mini_n512_ECS_p2 | completed | 654988 | 0 | False | +| Mini_n512_TORCH_p0 | completed | 654988 | 0 | False | +| Mini_n512_TORCH_p1 | completed | 654988 | 0 | False | +| Mini_n512_TORCH_p2 | completed | 654988 | 0 | False | +| Mini_n96_BASE_p0 | completed | 654988 | 0 | False | +| Mini_n96_BASE_p1 | completed | 654988 | 0 | False | +| Mini_n96_BASE_p2 | completed | 654988 | 0 | False | +| Mini_n96_ECS_p0 | completed | 654988 | 0 | False | +| Mini_n96_ECS_p1 | completed | 654988 | 0 | False | +| Mini_n96_ECS_p2 | completed | 654988 | 0 | False | +| Mini_n96_TORCH_p0 | completed | 654988 | 0 | False | +| Mini_n96_TORCH_p1 | completed | 654988 | 0 | False | +| Mini_n96_TORCH_p2 | completed | 654988 | 0 | False | +| Nano_n4096_BASE_p0 | completed | 480268 | 0 | False | +| Nano_n4096_BASE_p1 | completed | 480268 | 0 | False | +| Nano_n4096_BASE_p2 | completed | 480268 | 0 | False | +| Nano_n4096_ECS_p0 | completed | 480268 | 0 | False | +| Nano_n4096_ECS_p1 | completed | 480268 | 0 | False | +| Nano_n4096_ECS_p2 | completed | 480268 | 0 | False | +| Nano_n4096_TORCH_p0 | completed | 480268 | 0 | False | +| Nano_n4096_TORCH_p1 | completed | 480268 | 0 | False | +| Nano_n4096_TORCH_p2 | completed | 480268 | 0 | False | +| Nano_n512_BASE_p0 | completed | 480268 | 0 | False | +| Nano_n512_BASE_p1 | completed | 480268 | 0 | False | +| Nano_n512_BASE_p2 | completed | 480268 | 0 | False | +| Nano_n512_ECS_p0 | completed | 480268 | 0 | False | +| Nano_n512_ECS_p1 | completed | 480268 | 0 | False | +| Nano_n512_ECS_p2 | completed | 480268 | 0 | False | +| Nano_n512_TORCH_p0 | completed | 480268 | 0 | False | +| Nano_n512_TORCH_p1 | completed | 480268 | 0 | False | +| Nano_n512_TORCH_p2 | completed | 480268 | 0 | False | +| Nano_n96_BASE_p0 | completed | 480268 | 0 | False | +| Nano_n96_BASE_p1 | completed | 480268 | 0 | False | +| Nano_n96_BASE_p2 | completed | 480268 | 0 | False | +| Nano_n96_ECS_p0 | completed | 480268 | 0 | False | +| Nano_n96_ECS_p1 | completed | 480268 | 0 | False | +| Nano_n96_ECS_p2 | completed | 480268 | 0 | False | +| Nano_n96_TORCH_p0 | completed | 480268 | 0 | False | +| Nano_n96_TORCH_p1 | completed | 480268 | 0 | False | +| Nano_n96_TORCH_p2 | completed | 480268 | 0 | False | +| NeoCu_n4096_BASE_p0 | completed | 1124910 | 0 | False | +| NeoCu_n4096_BASE_p1 | completed | 1124910 | 0 | False | +| NeoCu_n4096_BASE_p2 | completed | 1124910 | 0 | False | +| NeoCu_n4096_ECS_p0 | completed | 1124910 | 0 | True | +| NeoCu_n4096_ECS_p1 | completed | 1124910 | 0 | True | +| NeoCu_n4096_ECS_p2 | completed | 1124910 | 0 | True | +| NeoCu_n4096_TORCH_p0 | completed | 1124910 | 0 | False | +| NeoCu_n4096_TORCH_p1 | completed | 1124910 | 0 | False | +| NeoCu_n4096_TORCH_p2 | completed | 1124910 | 0 | False | +| NeoCu_n512_BASE_p0 | completed | 1124910 | 0 | False | +| NeoCu_n512_BASE_p1 | completed | 1124910 | 0 | False | +| NeoCu_n512_BASE_p2 | completed | 1124910 | 0 | False | +| NeoCu_n512_ECS_p0 | completed | 1124910 | 0 | True | +| NeoCu_n512_ECS_p1 | completed | 1124910 | 0 | True | +| NeoCu_n512_ECS_p2 | completed | 1124910 | 0 | True | +| NeoCu_n512_TORCH_p0 | completed | 1124910 | 0 | False | +| NeoCu_n512_TORCH_p1 | completed | 1124910 | 0 | False | +| NeoCu_n512_TORCH_p2 | completed | 1124910 | 0 | False | +| NeoCu_n96_BASE_p0 | completed | 1124910 | 0 | False | +| NeoCu_n96_BASE_p1 | completed | 1124910 | 0 | False | +| NeoCu_n96_BASE_p2 | completed | 1124910 | 0 | False | +| NeoCu_n96_ECS_p0 | completed | 1124910 | 0 | True | +| NeoCu_n96_ECS_p1 | completed | 1124910 | 0 | True | +| NeoCu_n96_ECS_p2 | completed | 1124910 | 0 | True | +| NeoCu_n96_TORCH_p0 | completed | 1124910 | 0 | False | +| NeoCu_n96_TORCH_p1 | completed | 1124910 | 0 | False | +| NeoCu_n96_TORCH_p2 | completed | 1124910 | 0 | False | +| Neo_n4096_BASE_p0 | completed | 1124910 | 0 | False | +| Neo_n4096_BASE_p1 | completed | 1124910 | 0 | False | +| Neo_n4096_BASE_p2 | completed | 1124910 | 0 | False | +| Neo_n4096_ECS_p0 | completed | 1124910 | 0 | True | +| Neo_n4096_ECS_p1 | completed | 1124910 | 0 | True | +| Neo_n4096_ECS_p2 | completed | 1124910 | 0 | True | +| Neo_n4096_TORCH_p0 | oom | 1124910 | 0 | False | +| Neo_n4096_TORCH_p1 | oom | 1124910 | 0 | False | +| Neo_n4096_TORCH_p2 | oom | 1124910 | 0 | False | +| Neo_n512_BASE_p0 | completed | 1124910 | 0 | False | +| Neo_n512_BASE_p1 | completed | 1124910 | 0 | False | +| Neo_n512_BASE_p2 | completed | 1124910 | 0 | False | +| Neo_n512_ECS_p0 | completed | 1124910 | 0 | True | +| Neo_n512_ECS_p1 | completed | 1124910 | 0 | True | +| Neo_n512_ECS_p2 | completed | 1124910 | 0 | True | +| Neo_n512_TORCH_p0 | completed | 1124910 | 0 | False | +| Neo_n512_TORCH_p1 | completed | 1124910 | 0 | False | +| Neo_n512_TORCH_p2 | completed | 1124910 | 0 | False | +| Neo_n96_BASE_p0 | completed | 1124910 | 0 | False | +| Neo_n96_BASE_p1 | completed | 1124910 | 0 | False | +| Neo_n96_BASE_p2 | completed | 1124910 | 0 | False | +| Neo_n96_ECS_p0 | completed | 1124910 | 0 | True | +| Neo_n96_ECS_p1 | completed | 1124910 | 0 | True | +| Neo_n96_ECS_p2 | completed | 1124910 | 0 | True | +| Neo_n96_TORCH_p0 | completed | 1124910 | 0 | False | +| Neo_n96_TORCH_p1 | completed | 1124910 | 0 | False | +| Neo_n96_TORCH_p2 | completed | 1124910 | 0 | False | +| Pro_n4096_BASE_p0 | oom | 22678990 | 0 | False | +| Pro_n4096_BASE_p1 | oom | 22678990 | 0 | False | +| Pro_n4096_BASE_p2 | oom | 22678990 | 0 | False | +| Pro_n4096_ECS_p0 | oom | 22678990 | 0 | False | +| Pro_n4096_ECS_p1 | oom | 22678990 | 0 | False | +| Pro_n4096_ECS_p2 | oom | 22678990 | 0 | False | +| Pro_n4096_TORCH_p0 | oom | 22678990 | 0 | False | +| Pro_n4096_TORCH_p1 | oom | 22678990 | 0 | False | +| Pro_n4096_TORCH_p2 | oom | 22678990 | 0 | False | +| Pro_n512_BASE_p0 | completed | 22678990 | 0 | False | +| Pro_n512_BASE_p1 | completed | 22678990 | 0 | False | +| Pro_n512_BASE_p2 | completed | 22678990 | 0 | False | +| Pro_n512_ECS_p0 | completed | 22678990 | 0 | False | +| Pro_n512_ECS_p1 | completed | 22678990 | 0 | False | +| Pro_n512_ECS_p2 | completed | 22678990 | 0 | False | +| Pro_n512_TORCH_p0 | oom | 22678990 | 0 | False | +| Pro_n512_TORCH_p1 | oom | 22678990 | 0 | False | +| Pro_n512_TORCH_p2 | oom | 22678990 | 0 | False | +| Pro_n96_BASE_p0 | completed | 22678990 | 0 | False | +| Pro_n96_BASE_p1 | completed | 22678990 | 0 | False | +| Pro_n96_BASE_p2 | completed | 22678990 | 0 | False | +| Pro_n96_ECS_p0 | completed | 22678990 | 0 | False | +| Pro_n96_ECS_p1 | completed | 22678990 | 0 | False | +| Pro_n96_ECS_p2 | completed | 22678990 | 0 | False | +| Pro_n96_TORCH_p0 | completed | 22678990 | 0 | False | +| Pro_n96_TORCH_p1 | completed | 22678990 | 0 | False | +| Pro_n96_TORCH_p2 | completed | 22678990 | 0 | False | diff --git a/doc/development/ecs-validation-20261025/README.md b/doc/development/ecs-validation-20261025/README.md new file mode 100644 index 0000000000..529ec8ab0a --- /dev/null +++ b/doc/development/ecs-validation-20261025/README.md @@ -0,0 +1,74 @@ +# Manual ECS validation artifact (2026-10-25 measurements; 2026-10-26 publication) + +## What is being compared + +This artifact records **135 process outcomes: 120 completed, 15 OOM**, not 135 numerical passes. Each complete arm has three fresh processes, three identical perturbed frames repeated three times per process. The three columns are compiled pure TORCH, native master, and the isolated candidate port. Sources are pinned; raw results are not mixed across trees. + +The master/candidate port uses `2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c`, which includes merged #6058 residual-inplace. The existing personal PR still has the original668 base; **this evidence update does not silently rebase that PR or replace its production source**. `port-to-2ba617bc.patch` reproduces the tested three-file port on the pinned master. Generated source hashes are checked against the measurement manifests. + +## Files + +- `REPORT.md`: explicit three-column strict and empirical-band PASS/FAIL, per-output errors, P50/P90, CUDA Event time, first/full/steady allocated peaks, changes and route limits. +- `ACCURACY_TABLE.md`: separate within/across-process and implementation comparisons, strict failures and ranges. +- `summary.json`: complete aggregate metrics including mean_abs/max_relative, finite status, route counts, checkpoint identity and per-process peaks. +- `runs.json`: all135 original worker result/manifest records, including per-call timing samples and exceptions. OOM is retained. +- `provenance.json`: pinned sources, per-run NPZ hashes, source-consistency checks and publication-time environment snapshot. +- `validation.json`: prior60-test focused CUDA result and the published worker's separate complete Neo96/GPU1 smoke (3warmups/10samples,finite). The GPU0 attempt correctly stopped on a busy GPU. Smoke is not pooled into the135-run matrix and is not a new cross-reference accuracy acceptance. +- `worker.py`, `run_matrix.py`, `analyze.py`, `report.py`: standalone manual tools, not added to routine GPU CI. `pro_cpu_load_check.json` is the historical metadata-compatibility proof for the verified Pro checkpoint, not a new numerical reference. + +The original input/output NPZ archives total approximately47MiB and remain in the local experiment archive; they are **not committed here**. JSON timing/config/error summaries are inspectable, and the published harness permits fresh reproduction, but the published subset does not itself permit recomputing every original output comparison. NPZ hashes in provenance support later transfer/integrity checking; a hash is not a substitute for the arrays. + +## Checkpoints and scope + +Neo: DPA4-Neo-OMat24-v20260627.pt, SHA256 `8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d`. Nano/Mini: official OMat24 v20260805; SHA256 and loaded counts in manifests. Pro: DPA-4.0.1-Pro-MPtrj v2026.06.05, **not OMat24-Pro**; SHA256 `446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221`, official MD5 `2174bb3095b197489f978d31393c1e06`,273318000 bytes. [Official Pro record](https://doi.org/10.6084/m9.figshare.32647224). + +Pro's historical fitting type alias is mapped in memory only (`ener -> dpa4_ener`), equally for all arms. Copy the included proof as `cpu_load_check.json` beside the verified Pro checkpoint before using the worker. This proof records strict CPU load on the historical reader; it is not evidence of passing inference on every current environment. The worker requires the exact verified Pro SHA; it does not patch arbitrary checkpoint files. No checkpoint tensors are changed or uploaded. + +The candidate guard supports the fixed Neo layout. Nano/Mini/Pro execute **native fallback**, not optimized ECS. Their timing variation cannot be credited to ECS. Neo's measured AOT graphs specialize the single-cohort path, including4096; this is not evidence of actual bounded8192-edge runtime batches. No deployment fix is included in this evidence publication. + +## Measurement protocol and limits + +- RTX5090 x2, PyTorch2.11.0+cu128, Triton3.6.0, CUDA runtime12.8. Driver595.91.07 observed on the same server at publication. The supplied environment snapshot is **post-run**, not a clock/temperature trace of the timed window. This matrix did not collect continuous GPU telemetry, unlike the earlier controlled N64 study. +- Each worker checks for existing GPU compute clients before initialization. Same physical GPU for all arms/repeats of a model/system/size: Neo/Pro GPU0, Nano/Mini GPU1. Two GPUs may run distinct cases simultaneously; CPU/package contention is not excluded. No global clock/driver changes, no killed foreign process. +- FP32 mixing, TF32/AMP off, no FP16x3. Preserve original non-mixing model precision. Normal ASE energy/forces/virial/stress API includes neighbor construction. +- Diamond C3.567Angstrom; bccCu2.87Angstrom. Seed0, sigma0.02Angstrom, three exact same frames checked across arms. Diamond N96 repeats(2,2,3), N512(4,4,4), N4096(8,8,8). Cu96(4,4,3),512(8,8,4),4096(16,16,8). +- Accuracy9calls includes first compilation but those calls are not latency samples. Then8 warmups and30 synchronized wall/Event samples; separate30call steady-memory replay. Full peak takes the maximum including first execution and subsequent phases; steady reset is never substituted for first capacity. Allocated/reserved bytes retained; decimalGB=1e9B. +- Explicit cache per model/system/mode is reused in later independent repeats. The first worker was cold; later repeats benefit from that cache. All generic autotune choices are **not** frozen across arms. Therefore these independent-process quantiles do not establish a stable isolated sub-percent ECS cost/benefit. Earlier controlled N64 evidence remains a different experiment. +- Median of three process P50/P90 values, worst process capacity. Timing/accuracy/profile are distinct; no profiled timings are included. No DFT/long-MD accuracy, H20,10k-atoms, PT2/C++ or new training acceptance claim. + +## Numerical criteria + +Strict elementwise criterion: finite and `abs(got-ref)<=1e-5+1e-4*abs(ref)`. Max-relative denominator `max(abs(ref),1e-8)`. Energy/virial in eV, force eV/Angstrom, stress eV/Angstrom^3; same numeric tolerance across units does not imply same physical accuracy. + +Meeting-band diagnostic: separately per output/model/system/size, worst same-frame cross-implementation max_abs divided by pure-TORCH's own worst repeat max_abs (within and across processes). <=3 is marked band PASS; it is an empirical sampled repeat band, not a formal error bound. Strict failures remain failures; zero self-band requires zero deviation. Missing/OOM reference is N/A, not PASS. A maximum over more repeat samples may increase; this protocol does not allow enlarging the sample set only to inflate tolerance. + +## Reproduce on explicit source trees + +Use a compatible CUDA/native DeePMD installation. Set source roots explicitly; the worker checks imported package provenance and avoids silently using an unrelated editable checkout. Obtain checkpoints separately under their licenses. Start with idle GPUs and new output/cache directories. + +```bash +git clone https://github.com/deepmodeling/deepmd-kit.git base +git -C base checkout --detach 2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c +git clone --shared base candidate +git -C candidate apply /absolute/path/to/this-artifact/port-to-2ba617bc.patch +``` + +Create a local model-map JSON with Neo/Nano/Mini/Pro mapped to absolute checkpoint paths (not committed weights). For Pro, place its checked compatibility proof beside the checkpoint as described above. Then, using the appropriate Python environment: + +```bash +python run_matrix.py --base-root /absolute/base --candidate-root /absolute/candidate \ + --model-map /absolute/models.json --out-root /absolute/new-results \ + --gpu 0 --models Neo Pro +python run_matrix.py --base-root /absolute/base --candidate-root /absolute/candidate \ + --model-map /absolute/models.json --out-root /absolute/new-results \ + --gpu 1 --models Nano Mini +python report.py --root /absolute/new-results +``` + +The two commands can use different GPUs concurrently. Do not run two workers on one GPU. Default is all three sizes and three independent processes; `--sizes 96` permits an initial smoke, not full acceptance. Existing outcomes are not overwritten; explicit `--skip-existing` only resumes, not a new rerun. The public runner reproduces the calculation/protocol with explicit paths; orchestration/path handling is adapted from the local runner. Validate it on the target environment rather than claiming a new135-process run from `--help` success. + +## Conclusion and open gates + +Current-master Neo4096: P50 **156.512587->156.594862ms**, full allocated peak **22.313645->22.806378GB** (increase2.2082%). Neo96: **17.992521->18.035012ms**, full peak **0.646372->0.658145GB** (increase1.8213%). Small timing differences lack matched-autotune/process uncertainty; the observed memory increases are retained. No new positive ECS performance claim is made. + +Remaining: fix real dynamic deployment dispatch; resolve scientific acceptance/OOM reference limitations; replace the fine-grained development switch with an agreed existing-level/internal policy and tuning integration where appropriate; retain optional-Triton CPU safety; add proportionate actual engagement/guard/alias tests; obtain real upstream CI approval. Keep personal PR Draft/default-off. This update is evidence for human review, **not an upstream submission or ready-to-merge declaration**. diff --git a/doc/development/ecs-validation-20261025/REPORT.md b/doc/development/ecs-validation-20261025/REPORT.md new file mode 100644 index 0000000000..611ab06412 --- /dev/null +++ b/doc/development/ecs-validation-20261025/REPORT.md @@ -0,0 +1,171 @@ +# ECS current-master comparison — measured 2026-10-25, finalized 2026-10-26 + +BASE: 2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c, including merged residual-inplace #6058. Old668-base numbers are not substituted. Candidate is the isolated port of PR#2; its AOT branch-specialization issue remains unresolved. + +Recorded 135/135 process results: {'completed': 120, 'oom': 15}. Missing cells are NOT passes. Three processes ×3 frames ×3 accuracy repeats per arm; 8 extra warmups/30 wall+Event samples, separate steady replay. Same physical GPU within each case. TF32/AMP off. + +## Three-column PASS/FAIL overview + +Strict columns cover all four fields: Torch self-repeat; master self-repeat and versus Torch; candidate self-repeat, versus Torch and versus master. A missing Torch reference is N/A, never PASS. The meeting band is a separately reported empirical diagnostic, not a rigorous error bound or a waiver of strict failure. + +| Model/system | Atoms | Compiled Torch | Current master | Candidate | +| --- | ---: | --- | --- | --- | +| Neo | 96 | strict self=PASS | strict self=PASS; vs Torch=PASS; band=PASS (2.171x) | strict self=PASS; vs Torch=PASS; vs master=PASS; band=PASS (2.355x) | +| Neo | 512 | strict self=PASS | strict self=PASS; vs Torch=PASS; band=PASS (2.406x) | strict self=PASS; vs Torch=FAIL; vs master=PASS; band=PASS (2.261x) | +| Neo | 4096 | strict self=N/A | strict self=FAIL; vs Torch=N/A; band=N/A | strict self=FAIL; vs Torch=N/A; vs master=FAIL; band=N/A | +| NeoCu | 96 | strict self=PASS | strict self=PASS; vs Torch=PASS; band=PASS (1.989x) | strict self=PASS; vs Torch=PASS; vs master=PASS; band=PASS (2.084x) | +| NeoCu | 512 | strict self=PASS | strict self=PASS; vs Torch=PASS; band=PASS (2.499x) | strict self=PASS; vs Torch=PASS; vs master=PASS; band=PASS (2.863x) | +| NeoCu | 4096 | strict self=PASS | strict self=PASS; vs Torch=PASS; band=FAIL (6.690x) | strict self=PASS; vs Torch=PASS; vs master=PASS; band=FAIL (6.707x) | +| Nano | 96 | strict self=FAIL | strict self=FAIL; vs Torch=FAIL; band=PASS (1.316x) | strict self=FAIL; vs Torch=FAIL; vs master=FAIL; band=PASS (1.498x) | +| Nano | 512 | strict self=FAIL | strict self=FAIL; vs Torch=FAIL; band=PASS (1.839x) | strict self=FAIL; vs Torch=FAIL; vs master=FAIL; band=PASS (1.831x) | +| Nano | 4096 | strict self=FAIL | strict self=FAIL; vs Torch=FAIL; band=FAIL (3.031x) | strict self=FAIL; vs Torch=FAIL; vs master=FAIL; band=FAIL (3.171x) | +| Mini | 96 | strict self=FAIL | strict self=FAIL; vs Torch=FAIL; band=PASS (1.474x) | strict self=FAIL; vs Torch=FAIL; vs master=FAIL; band=PASS (1.433x) | +| Mini | 512 | strict self=FAIL | strict self=FAIL; vs Torch=FAIL; band=PASS (1.519x) | strict self=FAIL; vs Torch=FAIL; vs master=FAIL; band=PASS (1.498x) | +| Mini | 4096 | strict self=FAIL | strict self=FAIL; vs Torch=FAIL; band=FAIL (4.252x) | strict self=FAIL; vs Torch=FAIL; vs master=FAIL; band=FAIL (4.346x) | +| Pro | 96 | strict self=PASS | strict self=PASS; vs Torch=PASS; band=PASS (1.678x) | strict self=PASS; vs Torch=PASS; vs master=PASS; band=PASS (1.709x) | +| Pro | 512 | strict self=N/A | strict self=PASS; vs Torch=N/A; band=N/A | strict self=PASS; vs Torch=N/A; vs master=PASS; band=N/A | +| Pro | 4096 | strict self=N/A | strict self=N/A; vs Torch=N/A; band=N/A | strict self=N/A; vs Torch=N/A; vs master=N/A; band=N/A | + +## Three accuracy columns + +Each field: worst pairwise max-absolute difference over same-frame outputs; self includes within/across-process repeats. Scientific band multiplier = worst deviation from compiled TORCH / TORCH own worst repeat max_abs, separately per field/model/size/system. <=3 is the meeting criterion, not a replacement for the fixed strict elementwise gate. Zero repeat band requires zero cross difference. Energy/virial eV, force eV/Angstrom, stress eV/Angstrom^3. + +| Model/system | Atoms | Output | Compiled Torch | Current master | Candidate | +| --- | ---: | --- | --- | --- | --- | +| Neo | 96 | energy | self max_abs=1.222e-05 | self max_abs=1.073e-05; vs Torch=1.115e-05; band×0.912 | self max_abs=6.855e-06; vs Torch=1.127e-05; band×0.922 | +| Neo | 96 | forces | self max_abs=4.93e-06 | self max_abs=4.474e-06; vs Torch=7.196e-06; band×1.46 | self max_abs=4.369e-06; vs Torch=7.185e-06; band×1.46 | +| Neo | 96 | virial | self max_abs=2.222e-05 | self max_abs=2.443e-05; vs Torch=4.824e-05; band×2.17 | self max_abs=2.69e-05; vs Torch=5.232e-05; band×2.35 | +| Neo | 96 | stress | self max_abs=4.08e-08 | self max_abs=4.486e-08; vs Torch=8.858e-08; band×2.17 | self max_abs=4.938e-08; vs Torch=9.607e-08; band×2.35 | +| Neo | 512 | energy | self max_abs=1.776e-05 | self max_abs=2.247e-05; vs Torch=2.021e-05; band×1.14 | self max_abs=2.056e-05; vs Torch=2.718e-05; band×1.53 | +| Neo | 512 | forces | self max_abs=4.901e-06 | self max_abs=5.144e-06; vs Torch=7.15e-06; band×1.46 | self max_abs=5.012e-06; vs Torch=7.02e-06; band×1.43 | +| Neo | 512 | virial | self max_abs=6.951e-05 | self max_abs=6.508e-05; vs Torch=0.0001673; band×2.41 | self max_abs=5.708e-05; vs Torch=0.0001572; band×2.26 | +| Neo | 512 | stress | self max_abs=2.393e-08 | self max_abs=2.24e-08; vs Torch=5.758e-08; band×2.41 | self max_abs=1.965e-08; vs Torch=5.411e-08; band×2.26 | +| Neo | 4096 | energy | OOM | self max_abs=5.96e-05; Torch ref unavailable | self max_abs=5.788e-05; Torch ref unavailable | +| Neo | 4096 | forces | OOM | self max_abs=5.564e-06; Torch ref unavailable | self max_abs=5.939e-06; Torch ref unavailable | +| Neo | 4096 | virial | OOM | self max_abs=0.0001374; Torch ref unavailable | self max_abs=0.0002537; Torch ref unavailable | +| Neo | 4096 | stress | OOM | self max_abs=5.913e-09; Torch ref unavailable | self max_abs=1.092e-08; Torch ref unavailable | +| NeoCu | 96 | energy | self max_abs=3.636e-06 | self max_abs=4.59e-06; vs Torch=6.855e-06; band×1.89 | self max_abs=4.411e-06; vs Torch=5.782e-06; band×1.59 | +| NeoCu | 96 | forces | self max_abs=6.306e-07 | self max_abs=6.496e-07; vs Torch=6.391e-07; band×1.01 | self max_abs=6.476e-07; vs Torch=6.297e-07; band×0.999 | +| NeoCu | 96 | virial | self max_abs=1.361e-05 | self max_abs=1.663e-05; vs Torch=2.707e-05; band×1.99 | self max_abs=1.739e-05; vs Torch=2.837e-05; band×2.08 | +| NeoCu | 96 | stress | self max_abs=1.2e-08 | self max_abs=1.466e-08; vs Torch=2.386e-08; band×1.99 | self max_abs=1.533e-08; vs Torch=2.5e-08; band×2.08 | +| NeoCu | 512 | energy | self max_abs=1.138e-05 | self max_abs=1.007e-05; vs Torch=1.919e-05; band×1.69 | self max_abs=1.085e-05; vs Torch=1.86e-05; band×1.63 | +| NeoCu | 512 | forces | self max_abs=6.573e-07 | self max_abs=6.11e-07; vs Torch=7.357e-07; band×1.12 | self max_abs=7.186e-07; vs Torch=7.158e-07; band×1.09 | +| NeoCu | 512 | virial | self max_abs=4.521e-05 | self max_abs=3.137e-05; vs Torch=0.000113; band×2.5 | self max_abs=4.702e-05; vs Torch=0.0001295; band×2.86 | +| NeoCu | 512 | stress | self max_abs=7.471e-09 | self max_abs=5.184e-09; vs Torch=1.867e-08; band×2.5 | self max_abs=7.77e-09; vs Torch=2.139e-08; band×2.86 | +| NeoCu | 4096 | energy | self max_abs=2.599e-05 | self max_abs=4.148e-05; vs Torch=8.726e-05; band×3.36 | self max_abs=3.821e-05; vs Torch=8.494e-05; band×3.27 | +| NeoCu | 4096 | forces | self max_abs=7.152e-07 | self max_abs=7.069e-07; vs Torch=8.014e-07; band×1.12 | self max_abs=7.169e-07; vs Torch=7.932e-07; band×1.11 | +| NeoCu | 4096 | virial | self max_abs=0.0001036 | self max_abs=0.0001054; vs Torch=0.0006932; band×6.69 | self max_abs=0.0001111; vs Torch=0.000695; band×6.71 | +| NeoCu | 4096 | stress | self max_abs=2.14e-09 | self max_abs=2.178e-09; vs Torch=1.432e-08; band×6.69 | self max_abs=2.295e-09; vs Torch=1.435e-08; band×6.71 | +| Nano | 96 | energy | self max_abs=2.658e-05 | self max_abs=1.878e-05; vs Torch=3.499e-05; band×1.32 | self max_abs=2.122e-05; vs Torch=3.982e-05; band×1.5 | +| Nano | 96 | forces | self max_abs=1.136e-05 | self max_abs=1.22e-05; vs Torch=1.286e-05; band×1.13 | self max_abs=1.15e-05; vs Torch=1.269e-05; band×1.12 | +| Nano | 96 | virial | self max_abs=7.839e-05 | self max_abs=8.811e-05; vs Torch=9.567e-05; band×1.22 | self max_abs=8.601e-05; vs Torch=9.163e-05; band×1.17 | +| Nano | 96 | stress | self max_abs=1.439e-07 | self max_abs=1.618e-07; vs Torch=1.757e-07; band×1.22 | self max_abs=1.579e-07; vs Torch=1.682e-07; band×1.17 | +| Nano | 512 | energy | self max_abs=6.02e-05 | self max_abs=6.39e-05; vs Torch=0.0001107; band×1.84 | self max_abs=5.358e-05; vs Torch=0.0001102; band×1.83 | +| Nano | 512 | forces | self max_abs=1.488e-05 | self max_abs=1.347e-05; vs Torch=1.477e-05; band×0.992 | self max_abs=1.348e-05; vs Torch=1.325e-05; band×0.89 | +| Nano | 512 | virial | self max_abs=0.000201 | self max_abs=0.0001863; vs Torch=0.0002575; band×1.28 | self max_abs=0.0002203; vs Torch=0.000256; band×1.27 | +| Nano | 512 | stress | self max_abs=6.921e-08 | self max_abs=6.415e-08; vs Torch=8.866e-08; band×1.28 | self max_abs=7.585e-08; vs Torch=8.813e-08; band×1.27 | +| Nano | 4096 | energy | self max_abs=0.0001612 | self max_abs=0.0001924; vs Torch=0.0004887; band×3.03 | self max_abs=0.0002133; vs Torch=0.0005112; band×3.17 | +| Nano | 4096 | forces | self max_abs=1.484e-05 | self max_abs=1.563e-05; vs Torch=1.613e-05; band×1.09 | self max_abs=1.605e-05; vs Torch=1.554e-05; band×1.05 | +| Nano | 4096 | virial | self max_abs=0.0004504 | self max_abs=0.0005898; vs Torch=0.0007157; band×1.59 | self max_abs=0.0005332; vs Torch=0.0007943; band×1.76 | +| Nano | 4096 | stress | self max_abs=1.938e-08 | self max_abs=2.538e-08; vs Torch=3.08e-08; band×1.59 | self max_abs=2.294e-08; vs Torch=3.418e-08; band×1.76 | +| Mini | 96 | energy | self max_abs=1.246e-05 | self max_abs=1.049e-05; vs Torch=1.836e-05; band×1.47 | self max_abs=1.74e-05; vs Torch=1.651e-05; band×1.33 | +| Mini | 96 | forces | self max_abs=8.618e-06 | self max_abs=7.551e-06; vs Torch=1.08e-05; band×1.25 | self max_abs=8.28e-06; vs Torch=1.135e-05; band×1.32 | +| Mini | 96 | virial | self max_abs=6.538e-05 | self max_abs=4.644e-05; vs Torch=8.237e-05; band×1.26 | self max_abs=7.174e-05; vs Torch=9.37e-05; band×1.43 | +| Mini | 96 | stress | self max_abs=1.2e-07 | self max_abs=8.526e-08; vs Torch=1.512e-07; band×1.26 | self max_abs=1.317e-07; vs Torch=1.72e-07; band×1.43 | +| Mini | 512 | energy | self max_abs=3.606e-05 | self max_abs=3.594e-05; vs Torch=3.952e-05; band×1.1 | self max_abs=2.813e-05; vs Torch=3.04e-05; band×0.843 | +| Mini | 512 | forces | self max_abs=8.601e-06 | self max_abs=8.582e-06; vs Torch=1.21e-05; band×1.41 | self max_abs=9.532e-06; vs Torch=1.289e-05; band×1.5 | +| Mini | 512 | virial | self max_abs=0.0001708 | self max_abs=0.0001244; vs Torch=0.0002595; band×1.52 | self max_abs=0.0001445; vs Torch=0.0002485; band×1.45 | +| Mini | 512 | stress | self max_abs=5.882e-08 | self max_abs=4.283e-08; vs Torch=8.933e-08; band×1.52 | self max_abs=4.975e-08; vs Torch=8.555e-08; band×1.45 | +| Mini | 4096 | energy | self max_abs=7.707e-05 | self max_abs=0.0001156; vs Torch=0.0001388; band×1.8 | self max_abs=8.416e-05; vs Torch=0.0001465; band×1.9 | +| Mini | 4096 | forces | self max_abs=1.004e-05 | self max_abs=9.328e-06; vs Torch=1.306e-05; band×1.3 | self max_abs=1.007e-05; vs Torch=1.398e-05; band×1.39 | +| Mini | 4096 | virial | self max_abs=0.0003499 | self max_abs=0.0003119; vs Torch=0.001488; band×4.25 | self max_abs=0.0003646; vs Torch=0.001521; band×4.35 | +| Mini | 4096 | stress | self max_abs=1.506e-08 | self max_abs=1.342e-08; vs Torch=6.403e-08; band×4.25 | self max_abs=1.569e-08; vs Torch=6.544e-08; band×4.35 | +| Pro | 96 | energy | self max_abs=4.083e-06 | self max_abs=3.368e-06; vs Torch=5.037e-06; band×1.23 | self max_abs=3.338e-06; vs Torch=5.871e-06; band×1.44 | +| Pro | 96 | forces | self max_abs=1.667e-06 | self max_abs=1.153e-06; vs Torch=1.919e-06; band×1.15 | self max_abs=1.144e-06; vs Torch=1.691e-06; band×1.01 | +| Pro | 96 | virial | self max_abs=9.613e-06 | self max_abs=8.763e-06; vs Torch=1.613e-05; band×1.68 | self max_abs=7.585e-06; vs Torch=1.643e-05; band×1.71 | +| Pro | 96 | stress | self max_abs=1.765e-08 | self max_abs=1.609e-08; vs Torch=2.962e-08; band×1.68 | self max_abs=1.393e-08; vs Torch=3.017e-08; band×1.71 | +| Pro | 512 | energy | OOM | self max_abs=1.019e-05; Torch ref unavailable | self max_abs=8.345e-06; Torch ref unavailable | +| Pro | 512 | forces | OOM | self max_abs=1.36e-06; Torch ref unavailable | self max_abs=1.497e-06; Torch ref unavailable | +| Pro | 512 | virial | OOM | self max_abs=2.018e-05; Torch ref unavailable | self max_abs=1.641e-05; Torch ref unavailable | +| Pro | 512 | stress | OOM | self max_abs=6.947e-09; Torch ref unavailable | self max_abs=5.648e-09; Torch ref unavailable | +| Pro | 4096 | energy | OOM | OOM | OOM | +| Pro | 4096 | forces | OOM | OOM | OOM | +| Pro | 4096 | virial | OOM | OOM | OOM | +| Pro | 4096 | stress | OOM | OOM | OOM | + +Strict per-element atol1e-5/rtol1e-4 and finite results, mean_abs/max_relative and within/across detail remain in ACCURACY_TABLE.md and summary.json. Pure-reference OOM prevents band acceptance. Band PASS does not silently erase strict FAIL. + +## Timing and memory — process medians and worst capacity + +Compilation excluded from timing, included in first/full memory. This independent-process protocol does not freeze all generated autotune choices: no stable isolated speedup is inferred solely from these percentages. GB=1e9B. Both allocated/reserved raw bytes are retained in result.json. Numbers are preliminary until 3 processes per arm complete. + +| Model/system | Atoms | Mode | Processes | Wall P50 ms | Wall P90 ms | Event P50 ms | First alloc GB | Full peak incl first GB | Steady alloc GB | +| --- | ---: | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | +| Neo | 96 | TORCH | 3/3 | 13.075581 | 13.151851 | 13.030096 | 1.118502 | 1.118502 | 1.017839 | +| Neo | 96 | BASE | 3/3 | 17.992521 | 18.385345 | 17.950175 | 0.646372 | 0.646372 | 0.545709 | +| Neo | 96 | ECS | 3/3 | 18.035012 | 18.224658 | 17.991696 | 0.658145 | 0.658145 | 0.557481 | +| Neo | 512 | TORCH | 3/3 | 46.979462 | 47.018433 | 46.936768 | 5.331018 | 5.331018 | 5.331018 | +| Neo | 512 | BASE | 3/3 | 23.472956 | 23.531686 | 23.427423 | 2.809001 | 2.809001 | 2.809001 | +| Neo | 512 | ECS | 3/3 | 23.494863 | 23.648258 | 23.449760 | 2.871368 | 2.871368 | 2.871368 | +| Neo | 4096 | BASE | 3/3 | 156.512587 | 156.684338 | 156.465652 | 22.313645 | 22.313645 | 22.313645 | +| Neo | 4096 | ECS | 3/3 | 156.594862 | 156.777619 | 156.533646 | 22.806378 | 22.806378 | 22.806378 | +| NeoCu | 96 | TORCH | 3/3 | 12.232151 | 12.297081 | 12.188800 | 0.541385 | 0.541385 | 0.440721 | +| NeoCu | 96 | BASE | 3/3 | 18.154909 | 18.366497 | 18.111904 | 0.353757 | 0.353757 | 0.253004 | +| NeoCu | 96 | ECS | 3/3 | 18.259421 | 18.342752 | 18.215392 | 0.355033 | 0.355033 | 0.254369 | +| NeoCu | 512 | TORCH | 3/3 | 22.897386 | 22.935968 | 22.853473 | 2.253040 | 2.253040 | 2.253040 | +| NeoCu | 512 | BASE | 3/3 | 18.317986 | 18.392029 | 18.274000 | 1.249555 | 1.249555 | 1.249555 | +| NeoCu | 512 | ECS | 3/3 | 18.244627 | 18.391290 | 18.201713 | 1.254748 | 1.254748 | 1.254748 | +| NeoCu | 4096 | TORCH | 3/3 | 160.911316 | 161.083811 | 160.864113 | 17.866908 | 17.866908 | 17.866908 | +| NeoCu | 4096 | BASE | 3/3 | 80.131557 | 80.263306 | 80.085968 | 9.842755 | 9.842755 | 9.842755 | +| NeoCu | 4096 | ECS | 3/3 | 80.314757 | 80.400489 | 80.269539 | 9.873422 | 9.873422 | 9.873422 | +| Nano | 96 | TORCH | 3/3 | 10.842765 | 10.894773 | 10.799536 | 0.267505 | 0.267505 | 0.168914 | +| Nano | 96 | BASE | 3/3 | 10.827782 | 10.899461 | 10.785792 | 0.204831 | 0.204831 | 0.104168 | +| Nano | 96 | ECS | 3/3 | 10.780998 | 10.826602 | 10.738672 | 0.204831 | 0.204831 | 0.104168 | +| Nano | 512 | TORCH | 3/3 | 11.856695 | 11.910365 | 11.813136 | 0.845872 | 0.845872 | 0.845872 | +| Nano | 512 | BASE | 3/3 | 11.192140 | 11.325888 | 11.147888 | 0.500028 | 0.500028 | 0.500028 | +| Nano | 512 | ECS | 3/3 | 11.160740 | 11.249917 | 11.116624 | 0.500028 | 0.500028 | 0.500028 | +| Nano | 4096 | TORCH | 3/3 | 56.467913 | 56.592532 | 56.422001 | 6.678115 | 6.678115 | 6.678115 | +| Nano | 4096 | BASE | 3/3 | 33.593906 | 33.720488 | 33.547775 | 3.910505 | 3.910505 | 3.910505 | +| Nano | 4096 | ECS | 3/3 | 33.589447 | 33.682449 | 33.544529 | 3.910505 | 3.910505 | 3.910505 | +| Mini | 96 | TORCH | 3/3 | 11.962016 | 12.010488 | 11.917488 | 0.400473 | 0.400473 | 0.299810 | +| Mini | 96 | BASE | 3/3 | 11.099674 | 11.319123 | 11.057840 | 0.286303 | 0.286303 | 0.190500 | +| Mini | 96 | ECS | 3/3 | 11.180259 | 11.242529 | 11.135952 | 0.286303 | 0.286303 | 0.190500 | +| Mini | 512 | TORCH | 3/3 | 18.303323 | 18.349090 | 18.260481 | 1.528662 | 1.528662 | 1.528662 | +| Mini | 512 | BASE | 3/3 | 12.184330 | 12.276598 | 12.140736 | 0.944773 | 0.945822 | 0.945822 | +| Mini | 512 | ECS | 3/3 | 12.208581 | 12.249058 | 12.166288 | 0.944773 | 0.945822 | 0.945822 | +| Mini | 4096 | TORCH | 3/3 | 122.270842 | 122.379773 | 122.217281 | 12.115697 | 12.115697 | 12.115697 | +| Mini | 4096 | BASE | 3/3 | 61.097768 | 61.183442 | 61.052145 | 7.452142 | 7.453190 | 7.453190 | +| Mini | 4096 | ECS | 3/3 | 60.989576 | 61.053372 | 60.944431 | 7.452142 | 7.453190 | 7.453190 | +| Pro | 96 | TORCH | 3/3 | 125.952058 | 126.149409 | 125.908112 | 11.443602 | 11.443602 | 11.443602 | +| Pro | 96 | BASE | 3/3 | 66.992101 | 67.231234 | 66.948528 | 5.139665 | 5.139665 | 5.039002 | +| Pro | 96 | ECS | 3/3 | 67.021606 | 67.312684 | 66.977631 | 5.139665 | 5.139665 | 5.039002 | +| Pro | 512 | BASE | 3/3 | 330.464768 | 331.377085 | 330.418015 | 25.395441 | 25.395441 | 25.395441 | +| Pro | 512 | ECS | 3/3 | 330.612567 | 331.352630 | 330.561584 | 25.395441 | 25.395441 | 25.395441 | + +## Route and acceptance limits + +Nano/Mini/Pro candidate is native fallback, not demonstrated ECS acceleration. Neo dispatch must be checked against generated wrappers; current single-cohort specialization must not be described as 80 runtime batches. Pro-MPtrj is not OMat24-Pro; original checkpoint unmodified, reader-only legacy metadata alias applies equally to all arms. H20/PT2/C++/training and unmeasured larger models are not accepted by this matrix. + +Upstream review also requires focused guard/alias tests, no new public fine-grained development switch for a merge-ready path, freeze-time policy/selection where applicable, optional-Triton CPU safety and real CI approval. Current port keeps the old default-off experimental switch pending policy resolution. Do not submit as ready-to-merge. + +## Candidate vs current-master changes + +Positive percentage means reduction/improvement; negative means increase. Medians of independent process quantiles, not a controlled paired significance estimate. Fallback timing variation is not attributed to ECS. + +| Model/system | Atoms | Time reduction % | First-inclusive full alloc reduction % | Steady alloc reduction % | Candidate route | +| --- | ---: | ---: | ---: | ---: | --- | +| Neo | 96 | -0.2362 | -1.8213 | -2.1573 | single-cohort specialized, not bounded runtime batching | +| Neo | 512 | -0.0933 | -2.2202 | -2.2202 | single-cohort specialized, not bounded runtime batching | +| Neo | 4096 | -0.0526 | -2.2082 | -2.2082 | single-cohort specialized, not bounded runtime batching | +| NeoCu | 96 | -0.5757 | -0.3605 | -0.5395 | single-cohort specialized, not bounded runtime batching | +| NeoCu | 512 | 0.4005 | -0.4156 | -0.4156 | single-cohort specialized, not bounded runtime batching | +| NeoCu | 4096 | -0.2286 | -0.3116 | -0.3116 | single-cohort specialized, not bounded runtime batching | +| Nano | 96 | 0.4321 | 0.0000 | 0.0000 | native fallback | +| Nano | 512 | 0.2806 | 0.0000 | 0.0000 | native fallback | +| Nano | 4096 | 0.0133 | 0.0000 | 0.0000 | native fallback | +| Mini | 96 | -0.7260 | 0.0000 | 0.0000 | native fallback | +| Mini | 512 | -0.1990 | 0.0000 | 0.0000 | native fallback | +| Mini | 4096 | 0.1771 | 0.0000 | 0.0000 | native fallback | +| Pro | 96 | -0.0440 | 0.0000 | 0.0000 | native fallback | +| Pro | 512 | -0.0447 | 0.0000 | 0.0000 | native fallback | +| Pro | 4096 | N/A | N/A | N/A | incomplete/OOM | diff --git a/doc/development/ecs-validation-20261025/analyze.py b/doc/development/ecs-validation-20261025/analyze.py new file mode 100644 index 0000000000..c8db191f33 --- /dev/null +++ b/doc/development/ecs-validation-20261025/analyze.py @@ -0,0 +1,250 @@ +"""All-pairs scientific-accuracy ranges; never relax thresholds.""" +# ruff: noqa: T201, ANN001, ANN201, RUF001 -- standalone manual experiment, not imported package code + +import argparse +from itertools import combinations, product +import json +from pathlib import Path + +import numpy as np + +P = argparse.ArgumentParser() +P.add_argument("--root", type=Path, default=Path(__file__).resolve().parent) +a = P.parse_args() +root = a.root +all_results = [] +cases = {} +for d in sorted((root / "results").glob("*")): + if not (d / "result.json").exists(): + continue + result = json.loads((d / "result.json").read_text()) + manifest = ( + json.loads((d / "manifest.json").read_text()) + if (d / "manifest.json").exists() + else {} + ) + pieces = d.name.split("_") + model, n, mode, proc = pieces[0], pieces[1], "_".join(pieces[2:-1]), pieces[-1] + entry = { + "run": d.name, + "model": model, + "n": int(n[1:]), + "mode": mode, + "gpu": manifest.get("args", {}).get("gpu"), + "process": proc, + "status": "oom" + if "deepmd.utils.errors.OutOfMemoryError:" in result.get("exception", "") + else result["status"], + "raw_status": result["status"], + "model_sha256": manifest.get("model_sha256"), + "routes": result.get("routes"), + "runtime_cohort_calls": result.get("runtime_cohort_calls", []), + "finite": result.get("finite"), + "parameter_count": result.get("parameter_count"), + "first_peak": result.get("first_peak"), + "complete_peak": result.get("complete_peak"), + } + all_results.append(entry) + if result["status"] != "completed": + continue + with np.load(d / "outputs.npz") as z: + arrays = {k: z[k] for k in z.files} + with np.load(d / "inputs.npz") as z: + inputs = {k: z[k] for k in z.files} + key = (model, int(n[1:])) + group = cases.setdefault(key, {"inputs": inputs, "modes": {}}) + for k, v in inputs.items(): + if not np.array_equal(group["inputs"][k], v): + raise ValueError(f"inputs differ: {d}/{k}") + group["modes"].setdefault(mode, []).append((proc, arrays)) + + +for model in {r["model"] for r in all_results}: + hashes = { + r["model_sha256"] + for r in all_results + if r["model"] == model and r["model_sha256"] + } + assert len(hashes) == 1, f"checkpoint changed inside the matrix: {model}" +for model, n in {(r["model"], r["n"]) for r in all_results}: + devices = { + r["gpu"] + for r in all_results + if (r["model"], r["n"]) == (model, n) and r["gpu"] is not None + } + assert len(devices) == 1, f"cross-GPU case mixing: {model}/{n}" + + +def error(got, ref): + finite = bool(np.isfinite(got).all() and np.isfinite(ref).all()) + if not finite: + return {"finite": False, "passed": False} + diff = np.abs(got - ref) + ratio = diff / (1e-5 + 1e-4 * np.abs(ref)) + worst = int(np.argmax(ratio)) + return { + "finite": True, + "passed": bool((ratio <= 1).all()), + "max_abs": float(diff.max()), + "mean_abs": float(diff.mean()), + "max_relative": float((diff / np.maximum(np.abs(ref), 1e-8)).max()), + "max_ratio": float(ratio.max()), + "bitwise": bool(np.array_equal(got, ref)), + "worst_ratio_element": { + "index": [int(v) for v in np.unravel_index(worst, ratio.shape)], + "got": float(got.flat[worst]), + "reference": float(ref.flat[worst]), + "abs_error": float(diff.flat[worst]), + "tolerance": float(1e-5 + 1e-4 * abs(ref.flat[worst])), + }, + } + + +groups = [] +details = [] +for (model, n), case in sorted(cases.items()): + modes = case["modes"] + for left, right in [ + ("TORCH", "TORCH"), + ("BASE", "BASE"), + ("ECS", "ECS"), + ("BASE", "TORCH"), + ("ECS", "TORCH"), + ("ECS", "BASE"), + ("ECS_RUNTIME", "ECS_RUNTIME"), + ("ECS_RUNTIME", "BASE"), + ("ECS_RUNTIME", "TORCH"), + ("ECS_RUNTIME", "ECS"), + ]: + if left not in modes or right not in modes: + continue + for scope in ( + ["within_process", "across_process"] + if left == right + else ["cross_implementation"] + ): + raw = [] + for frame in range(3): + la = [(p, r, arr) for p, arr in modes[left] for r in range(3)] + ra = [(p, r, arr) for p, arr in modes[right] for r in range(3)] + pairs = combinations(la, 2) if left == right else product(la, ra) + for (lp, lr, lv), (rp, rr, rv) in pairs: + if scope == "within_process" and lp != rp: + continue + if scope == "across_process" and lp == rp: + continue + for out in ("energy", "forces", "virial", "stress"): + raw.append( + { + "frame": frame, + "left_process": lp, + "left_repeat": lr, + "right_process": rp, + "right_repeat": rr, + "output": out, + **error( + lv[f"{lr}_{frame}_{out}"], rv[f"{rr}_{frame}_{out}"] + ), + } + ) + if not raw: + continue + record = { + "model": model, + "n": n, + "left": left, + "right": right, + "scope": scope, + "left_completed_processes": len(modes[left]), + "right_completed_processes": len(modes[right]), + "all_passed": all(v["passed"] for v in raw), + "metrics": {}, + } + for out in ("energy", "forces", "virial", "stress"): + rows = [r for r in raw if r["output"] == out] + finite = [r for r in rows if r["finite"]] + record["metrics"][out] = { + "comparisons": len(rows), + "failures": sum(not r["passed"] for r in rows), + "all_finite": len(finite) == len(rows), + "all_bitwise": all(r.get("bitwise", False) for r in rows), + "max_abs_range": [ + min(r["max_abs"] for r in finite), + max(r["max_abs"] for r in finite), + ] + if finite + else None, + "worst_mean_abs": max( + (r["mean_abs"] for r in finite), default=None + ), + "worst_max_relative": max( + (r["max_relative"] for r in finite), default=None + ), + "worst_tolerance_ratio": max( + (r["max_ratio"] for r in finite), default=None + ), + } + groups.append(record) + details.append( + { + "model": model, + "n": n, + "left": left, + "right": right, + "scope": scope, + "pairs": raw, + } + ) +summary = { + "threshold": {"atol": 1e-5, "rtol": 1e-4, "relative_floor": 1e-8}, + "range_definition": "min/max of max_abs over same-frame comparisons; NOT a confidence interval", + "statuses": all_results, + "comparisons": groups, +} +(root / "summary.json").write_text(json.dumps(summary, indent=2)) +(root / "pair_details.json").write_text(json.dumps(details, indent=2)) +lines = [ + "# ECS 多模型多尺寸精度测试", + "", + "> 精度优先;未放宽阈值。误差范围为每对输出max_abs的min~max,不是置信区间。基线SHA与模型SHA见JSON。", + "", + "模式:TORCH=纯PyTorch编译;ECS=当前PR候选(非Neo为回退);ECS_RUNTIME=强制真实8192分批。单位:能量/位力eV,力eV/Å,stress eV/ų。所有结果均不是DFT预测误差。", + "", + "| 模型 | 原子数 | 对照 | 范围 | 完成进程数 | 能量max_abs范围 | 力max_abs范围 | 位力max_abs范围 | stress max_abs范围 | 最差误差/容差 | 状态 |", + "| --- | ---: | --- | --- | --- | --- | --- | --- | --- | ---: | --- |", +] + + +def fmt(r): + return "~".join(f"{v:.3e}" for v in r) if r else "nonfinite" + + +for g in groups: + m = g["metrics"] + worst = max(v["worst_tolerance_ratio"] or 0 for v in m.values()) + lines.append( + f"| {g['model']} | {g['n']} | {g['left']} vs {g['right']} | {g['scope']} | {g['left_completed_processes']}/{g['right_completed_processes']} | {fmt(m['energy']['max_abs_range'])} | {fmt(m['forces']['max_abs_range'])} | {fmt(m['virial']['max_abs_range'])} | {fmt(m['stress']['max_abs_range'])} | {worst:.4f} | {'PASS' if g['all_passed'] else 'FAIL'}{'(样本未齐)' if min(g['left_completed_processes'], g['right_completed_processes']) < 3 else ''} |" + ) +lines += [ + "", + "## 所有进程状态(含OOM/失败,不能略去)", + "", + "| 运行 | 状态 | 参数量 | opaque ECS调用 | single路径标记 |", + "| --- | --- | ---: | ---: | --- |", +] +for r in all_results: + routes = r["routes"] or [] + lines.append( + f"| {r['run']} | {r['status']} | {r['parameter_count']} | {sum(x['opaque_cohort_calls'] for x in routes)} | {any(x['single_cohort_marker'] for x in routes)} |" + ) +(root / "ACCURACY_TABLE.md").write_text("\n".join(lines) + "\n") +print( + "runs", + len(all_results), + "completed", + sum(r["status"] == "completed" for r in all_results), + "comparisons", + len(groups), + "failed_groups", + sum(not g["all_passed"] for g in groups), +) diff --git a/doc/development/ecs-validation-20261025/port-to-2ba617bc.patch b/doc/development/ecs-validation-20261025/port-to-2ba617bc.patch new file mode 100644 index 0000000000..25d65b4d65 --- /dev/null +++ b/doc/development/ecs-validation-20261025/port-to-2ba617bc.patch @@ -0,0 +1,720 @@ +diff --git a/deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py b/deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py +index a02f4288..d874c8ed 100644 +--- a/deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py ++++ b/deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py +@@ -91,6 +91,7 @@ from __future__ import ( + annotations, + ) + ++import os + from typing import ( + TYPE_CHECKING, + NamedTuple, +@@ -161,6 +162,10 @@ _MAX_MIXER_RANK = 4 + + _ROTATE_MIX_BWD_CONFIG = (1, 2) # per-edge backward (warps, stages) + ++# Experimental, frozen first-order inference only. Read before compilation; ++# changing the switch requires a new process/graph. Disabled by default. ++_EDGE_COHORT_INFER = os.environ.get("DP_SO2_EDGE_COHORT_INFER", "0") == "1" ++ + + # ====================================================================== + # Eager reference / fallback implementations +@@ -1369,6 +1374,7 @@ if SO2_VALUE_PATH_TRITON_AVAILABLE: + L: tl.constexpr, + CF: tl.constexpr, + BLOCK_M: tl.constexpr, ++ saved_edges=0, + ): + """Recompute the gate sigmoids from the saved pre-activation (backward).""" + ROW: tl.constexpr = (3 * L + 1) * CF +@@ -1386,7 +1392,8 @@ if SO2_VALUE_PATH_TRITON_AVAILABLE: + cm = mm & (nc < CF)[None, :] + wm = ((nc < CF)[:, None]) & ((nc < CF)[None, :]) + +- z_row = z_ptr + (layer * n_focus + fid) * n_edge * ROW + offs_m * ROW ++ z_stride = tl.where(saved_edges > 0, saved_edges, n_edge).to(tl.int64) ++ z_row = z_ptr + (layer * n_focus + fid) * z_stride * ROW + offs_m * ROW + z_s = tl.load(z_row[:, None] + nc[None, :], mask=cm, other=0.0).to(tl.float32) + sig_row = sig_ptr + (fid * n_edge + offs_m) * LG + for g in tl.static_range(L): +@@ -1420,6 +1427,7 @@ if SO2_VALUE_PATH_TRITON_AVAILABLE: + RECOMPUTE_SIG: tl.constexpr, + RECOVER_INPUT: tl.constexpr, + BLOCK_M: tl.constexpr, ++ saved_edges=0, + ): + """Pointwise part of the gated-layer backward. + +@@ -1456,7 +1464,8 @@ if SO2_VALUE_PATH_TRITON_AVAILABLE: + wm = ((nc < CF)[:, None]) & ((nc < CF)[None, :]) + + g_row = g_ptr + fid * n_edge * ROW + offs_m * ROW +- z_row = z_ptr + (layer * n_focus + fid) * n_edge * ROW + offs_m * ROW ++ z_stride = tl.where(saved_edges > 0, saved_edges, n_edge).to(tl.int64) ++ z_row = z_ptr + (layer * n_focus + fid) * z_stride * ROW + offs_m * ROW + gz_row = gz_ptr + fid * n_edge * ROW + offs_m * ROW + sig_row = sig_ptr + (fid * n_edge + offs_m) * LG + gl_row = gl_ptr + (fid * n_edge + offs_m) * LG +@@ -2014,6 +2023,7 @@ if SO2_VALUE_PATH_TRITON_AVAILABLE: + BLOCK_M: tl.constexpr, + BLOCK_N: tl.constexpr, + BLOCK_K: tl.constexpr, ++ output_edges=0, + ): + """Backward block GEMM ``g_u = residual + gz @ W^T`` over both blocks. + +@@ -2044,7 +2054,8 @@ if SO2_VALUE_PATH_TRITON_AVAILABLE: + gz_row = gz_ptr + fid * ROW + offs_m * (n_focus * ROW) + else: + gz_row = gz_ptr + fid * n_edge * ROW + offs_m * ROW +- gu_row = gu_ptr + fid * n_edge * ROW + offs_m * ROW ++ output_stride = tl.where(output_edges > 0, output_edges, n_edge).to(tl.int64) ++ gu_row = gu_ptr + fid * output_stride * ROW + offs_m * ROW + if FOLD_ALPHA: + alpha = tl.load(alpha_ptr + offs_m * n_focus + fid, mask=m_mask, other=0.0) + +@@ -2435,6 +2446,7 @@ def _launch_stack_point_backward( + L=lmax, + CF=focus_dim, + BLOCK_M=block_m, ++ saved_edges=0, + num_warps=warps, + num_stages=stages, + ) +@@ -2458,6 +2470,7 @@ def _launch_stack_point_backward( + RECOMPUTE_SIG=recompute_sigmoid, + RECOVER_INPUT=recover, + BLOCK_M=block_m, ++ saved_edges=0, + num_warps=warps, + num_stages=stages, + ) +@@ -3222,6 +3235,7 @@ def _stack_backward_traversal( + BLOCK_M=block_m, + BLOCK_N=block_n, + BLOCK_K=block_k, ++ output_edges=0, + num_warps=warps, + num_stages=stages, + ) +@@ -3406,6 +3420,7 @@ def _stack_backward_traversal( + BLOCK_M=block_m, + BLOCK_N=block_n, + BLOCK_K=block_k, ++ output_edges=0, + num_warps=warps, + num_stages=stages, + ) +@@ -4960,7 +4975,18 @@ def _mixing_stack_backward(ctx, grad_out, grad_z, grad_u): + None, + None, + ) +- grad_u0, grad_alpha = _mixing_stack_bwd_op( ++ backward_op = _mixing_stack_bwd_op ++ if _EDGE_COHORT_INFER: ++ from .so2_edge_cohort import ( ++ cohort_backward, ++ supports_edge_cohort, ++ ) ++ ++ if supports_edge_cohort( ++ grad_out, z_all, ctx.lmax, ctx.focus_dim, ctx.apply_alpha ++ ): ++ backward_op = cohort_backward ++ grad_u0, grad_alpha = backward_op( + grad_out, + x_local, + z_all, +diff --git a/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py b/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py +new file mode 100644 +--- /dev/null ++++ b/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py +@@ -0,0 +1,380 @@ ++# SPDX-License-Identifier: LGPL-3.0-or-later ++"""Experimental edge-cohort backward for frozen, narrow SO(2) inference. ++ ++Keep native GEMM column parallelism and arithmetic, but traverse all layers ++of one cohort before advancing to the next cohort. Scratch scales with the ++cohort, not the entire graph. The saved activations and returned input gradient ++still have full edge extent. This Python runtime launcher is an online-compile ++prototype; standalone AOTInductor/C++ deployment is not validated. ++""" ++ ++from __future__ import annotations ++ ++import torch ++import triton ++from torch import Tensor ++from torch.library import wrap_triton ++ ++from . import so2_value_path as sv ++ ++COHORT_EDGES = 8192 ++SINGLE_COHORT_MAX_EDGES = 16384 ++ ++ ++def supports_edge_cohort( ++ grad_out: Tensor, z_all: Tensor, lmax: int, focus_dim: int, apply_alpha: bool ++) -> bool: ++ """Restrict opt-in dispatch to the experimentally checked Neo layout.""" ++ return ( ++ grad_out.is_cuda ++ and z_all.device == grad_out.device ++ and grad_out.dtype == torch.float32 ++ and z_all.dtype == torch.float32 ++ and grad_out.is_contiguous() ++ and z_all.is_contiguous() ++ and lmax == 3 ++ and focus_dim == 32 ++ and apply_alpha ++ and grad_out.ndim == 3 ++ and z_all.ndim == 4 ++ and grad_out.shape[1:] == (2, 320) ++ and z_all.shape[:2] == (2, 2) ++ and z_all.shape[2] == grad_out.shape[0] ++ and z_all.shape[3] == 320 ++ ) ++ ++ ++def cohort_input_backward_impl( ++ grad_out: Tensor, ++ z_all: Tensor, ++ alpha: Tensor, ++ w0t: Tensor, ++ w1t: Tensor, ++ gw: Tensor, ++ gwt: Tensor, ++ cohort_edges: int, ++) -> Tensor: ++ """Compute input gradients without retaining unrelated forward outputs. ++ ++ Kernels infer scratch focus strides from the cohort edge count. Independent ++ saved/output strides retain full-graph layout, including partial cohorts. ++ Only an internally owned residual is overwritten: matrix input ``gz`` and ++ GEMM output never alias, and caller-owned tensors remain read-only. ++ """ ++ if not supports_edge_cohort(grad_out, z_all, 3, 32, True): ++ raise ValueError("edge cohorts require contiguous FP32 Neo inference tensors") ++ if cohort_edges <= 0: ++ raise ValueError("cohort_edges must be positive") ++ if not all(t.is_contiguous() for t in (alpha, w0t, w1t, gw, gwt)): ++ raise ValueError("edge-cohort parameters must be contiguous") ++ n_gated, n_focus, n_edge, row = z_all.shape ++ result = grad_out.new_empty((n_focus, n_edge, row)) ++ if n_edge == 0: ++ return result ++ cap = min(n_edge, cohort_edges) ++ g = grad_out.new_empty((n_focus, cap, row)) ++ gz = torch.empty_like(g) ++ sig = grad_out.new_empty((n_focus, cap, 96)) ++ bm, bn, bk, warps, stages = sv.stack_fp32_configs(32, 3)[2] ++ n_tiles = triton.cdiv(128, bn) + triton.cdiv(192, bn) ++ inside, point_config, recompute_config = sv._point_backward_schedule( ++ 32, 3, train=False ++ ) ++ for start in range(0, n_edge, cap): ++ count = min(cap, n_edge - start) ++ go = grad_out[start:] ++ a = alpha[start:] ++ z = z_all.view(-1)[start * row :] ++ grid = (triton.cdiv(count, bm) * n_tiles, n_focus) ++ sv._stack_gemm_bwd_kernel[grid]( ++ go, ++ go, ++ w0t, ++ w1t, ++ a, ++ g, ++ count, ++ n_gated, ++ L=3, ++ CF=32, ++ G_EDGE_MAJOR=True, ++ FOLD_ALPHA=True, ++ RES_IS_GZ=True, ++ BLOCK_M=bm, ++ BLOCK_N=bn, ++ BLOCK_K=bk, ++ num_warps=warps, ++ num_stages=stages, ++ ) ++ for layer in range(n_gated - 1, -1, -1): ++ if not inside: ++ rbm, rw, rs = recompute_config ++ sv._stack_recompute_kernel[(triton.cdiv(count, rbm), n_focus)]( ++ z, ++ gw, ++ sig, ++ count, ++ layer, ++ L=3, ++ CF=32, ++ BLOCK_M=rbm, ++ saved_edges=n_edge, ++ num_warps=rw, ++ num_stages=rs, ++ ) ++ pbm, pw, ps = point_config ++ sv._stack_point_bwd_kernel[(triton.cdiv(count, pbm), n_focus)]( ++ g, ++ z, ++ sig, ++ gwt, ++ gz, ++ sig, ++ g, ++ g, ++ count, ++ layer, ++ L=3, ++ CF=32, ++ GLOGIT_OUT=False, ++ GLOGIT_STORE=False, ++ RECOMPUTE_SIG=inside, ++ RECOVER_INPUT=False, ++ BLOCK_M=pbm, ++ saved_edges=n_edge, ++ num_warps=pw, ++ num_stages=ps, ++ ) ++ # Residual elements are loaded before their matching output store. ++ # Distinct (edge, focus, column) tiles own disjoint residual elements. ++ target = result.view(-1)[start * row :] if layer == 0 else g ++ sv._stack_gemm_bwd_kernel[grid]( ++ gz, ++ g, ++ w0t, ++ w1t, ++ gz, ++ target, ++ count, ++ layer, ++ L=3, ++ CF=32, ++ G_EDGE_MAJOR=False, ++ FOLD_ALPHA=False, ++ RES_IS_GZ=False, ++ BLOCK_M=bm, ++ BLOCK_N=bn, ++ BLOCK_K=bk, ++ output_edges=n_edge if layer == 0 else count, ++ num_warps=warps, ++ num_stages=stages, ++ ) ++ return result ++ ++ ++# Small edge sets must not pay the opaque multi-cohort launcher overhead. ++# The residual and returned result share internally owned storage; gz never ++# aliases GEMM output. See the inference-only dispatcher below. ++@torch.library.triton_op("sezm_triton::so2_single_cohort_input_bwd", mutates_args=()) ++def _single_cohort_input_backward( ++ grad_out: Tensor, ++ z_all: Tensor, ++ alpha: Tensor, ++ w0t: Tensor, ++ w1t: Tensor, ++ gw: Tensor, ++ gwt: Tensor, ++ cohort_edges: int, ++) -> Tensor: ++ """Compute one small cohort with compiled launchers and owned residual reuse.""" ++ if not supports_edge_cohort(grad_out, z_all, 3, 32, True): ++ raise ValueError("edge cohorts require contiguous FP32 Neo inference tensors") ++ if cohort_edges <= 0: ++ raise ValueError("cohort_edges must be positive") ++ if not all(t.is_contiguous() for t in (alpha, w0t, w1t, gw, gwt)): ++ raise ValueError("edge-cohort parameters must be contiguous") ++ n_gated, n_focus, n_edge, row = z_all.shape ++ result = grad_out.new_empty((n_focus, n_edge, row)) ++ if n_edge == 0: ++ return result ++ cap = n_edge ++ g = result ++ gz = torch.empty_like(g) ++ sig = grad_out.new_empty((n_focus, cap, 96)) ++ bm, bn, bk, warps, stages = sv.stack_fp32_configs(32, 3)[2] ++ n_tiles = triton.cdiv(128, bn) + triton.cdiv(192, bn) ++ inside, point_config, recompute_config = sv._point_backward_schedule( ++ 32, 3, train=False ++ ) ++ start = 0 ++ count = min(cap, n_edge - start) ++ go = grad_out[start:] ++ a = alpha[start:] ++ z = z_all.view(-1)[start * row :] ++ grid = (triton.cdiv(count, bm) * n_tiles, n_focus) ++ wrap_triton(sv._stack_gemm_bwd_kernel)[grid]( ++ go, ++ go, ++ w0t, ++ w1t, ++ a, ++ g, ++ count, ++ n_gated, ++ L=3, ++ CF=32, ++ G_EDGE_MAJOR=True, ++ FOLD_ALPHA=True, ++ RES_IS_GZ=True, ++ output_edges=n_edge, ++ BLOCK_M=bm, ++ BLOCK_N=bn, ++ BLOCK_K=bk, ++ num_warps=warps, ++ num_stages=stages, ++ ) ++ for layer in range(n_gated - 1, -1, -1): ++ if not inside: ++ rbm, rw, rs = recompute_config ++ wrap_triton(sv._stack_recompute_kernel)[triton.cdiv(count, rbm), n_focus]( ++ z, ++ gw, ++ sig, ++ count, ++ layer, ++ L=3, ++ CF=32, ++ BLOCK_M=rbm, ++ saved_edges=n_edge, ++ num_warps=rw, ++ num_stages=rs, ++ ) ++ pbm, pw, ps = point_config ++ wrap_triton(sv._stack_point_bwd_kernel)[triton.cdiv(count, pbm), n_focus]( ++ g, ++ z, ++ sig, ++ gwt, ++ gz, ++ sig, ++ g, ++ g, ++ count, ++ layer, ++ L=3, ++ CF=32, ++ GLOGIT_OUT=False, ++ GLOGIT_STORE=False, ++ RECOMPUTE_SIG=inside, ++ RECOVER_INPUT=False, ++ BLOCK_M=pbm, ++ saved_edges=n_edge, ++ num_warps=pw, ++ num_stages=ps, ++ ) ++ target = result.view(-1)[start * row :] if layer == 0 else g ++ wrap_triton(sv._stack_gemm_bwd_kernel)[grid]( ++ gz, ++ g, ++ w0t, ++ w1t, ++ gz, ++ target, ++ count, ++ layer, ++ L=3, ++ CF=32, ++ G_EDGE_MAJOR=False, ++ FOLD_ALPHA=False, ++ RES_IS_GZ=False, ++ BLOCK_M=bm, ++ BLOCK_N=bn, ++ BLOCK_K=bk, ++ output_edges=n_edge if layer == 0 else count, ++ num_warps=warps, ++ num_stages=stages, ++ ) ++ return result ++ ++ ++@torch.library.custom_op("sezm_triton::so2_cohort_input_bwd", mutates_args=()) ++def _cohort_input_backward( ++ grad_out: Tensor, ++ z_all: Tensor, ++ alpha: Tensor, ++ w0t: Tensor, ++ w1t: Tensor, ++ gw: Tensor, ++ gwt: Tensor, ++ cohort_edges: int, ++) -> Tensor: ++ """Keep the runtime edge loop opaque without retaining x_local/u_final.""" ++ return cohort_input_backward_impl( ++ grad_out, z_all, alpha, w0t, w1t, gw, gwt, cohort_edges ++ ) ++ ++ ++@_cohort_input_backward.register_fake ++def _cohort_input_backward_fake( ++ grad_out: Tensor, ++ z_all: Tensor, ++ alpha: Tensor, ++ w0t: Tensor, ++ w1t: Tensor, ++ gw: Tensor, ++ gwt: Tensor, ++ cohort_edges: int, ++) -> Tensor: ++ """Preserve full input-gradient shape under FakeTensor tracing.""" ++ return grad_out.new_empty(z_all.shape[1:]) ++ ++ ++@torch.library.triton_op("sezm_triton::so2_cohort_alpha_bwd", mutates_args=()) ++def _cohort_alpha_backward(grad_out: Tensor, x_local: Tensor, alpha: Tensor) -> Tensor: ++ """Expose alpha's short-lived output dependency to the graph scheduler.""" ++ n_edge, n_focus = alpha.shape ++ result = torch.empty_like(alpha) ++ if sv._has_no_edges(n_edge): ++ return result ++ bm, warps, stages = sv.gate_config(32, 3) ++ wrap_triton(sv._stack_grad_alpha_kernel)[(triton.cdiv(n_edge, bm), n_focus)]( ++ grad_out, ++ x_local, ++ alpha, ++ result, ++ n_edge, ++ L=3, ++ CF=32, ++ BLOCK_M=bm, ++ num_warps=warps, ++ num_stages=stages, ++ ) ++ return result ++ ++ ++def cohort_backward( ++ grad_out: Tensor, ++ x_local: Tensor, ++ z_all: Tensor, ++ u_final: Tensor, ++ alpha: Tensor, ++ w0t: Tensor, ++ w1t: Tensor, ++ gw: Tensor, ++ gwt: Tensor, ++ lmax: int, ++ focus_dim: int, ++ apply_alpha: bool, ++) -> tuple[Tensor, Tensor]: ++ """First-order dispatcher; training/higher derivatives never enter here.""" ++ del u_final ++ if not supports_edge_cohort(grad_out, z_all, lmax, focus_dim, apply_alpha): ++ raise ValueError("unsupported edge-cohort layout") ++ grad_alpha = _cohort_alpha_backward(grad_out, x_local, alpha) ++ input_backward = ( ++ _single_cohort_input_backward ++ if grad_out.shape[0] <= SINGLE_COHORT_MAX_EDGES ++ else _cohort_input_backward ++ ) ++ grad_u0 = input_backward(grad_out, z_all, alpha, w0t, w1t, gw, gwt, COHORT_EDGES) ++ return grad_u0, grad_alpha +diff --git a/source/tests/pt_expt/kernels/test_so2_edge_cohort.py b/source/tests/pt_expt/kernels/test_so2_edge_cohort.py +new file mode 100644 +--- /dev/null ++++ b/source/tests/pt_expt/kernels/test_so2_edge_cohort.py +@@ -0,0 +1,201 @@ ++# SPDX-License-Identifier: LGPL-3.0-or-later ++"""Generated-input checks for the opt-in frozen Neo edge-cohort prototype.""" ++ ++from __future__ import annotations ++ ++from types import SimpleNamespace ++ ++import pytest ++import torch ++ ++pytest.importorskip("triton") ++ ++from deepmd.pt_expt.kernels.triton.sezm import so2_edge_cohort as ecs ++from deepmd.pt_expt.kernels.triton.sezm import so2_value_path as sv ++ ++pytestmark = pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA required") ++ ++ ++def operands(edges: int, mode: str = "random") -> tuple: ++ """Generate well-conditioned operands without a downloaded checkpoint.""" ++ torch.manual_seed(719) ++ u = torch.randn(2, edges, 320, device="cuda") * 0.1 ++ if mode == "zero": ++ u.zero_() ++ alpha = torch.rand(edges, 2, device="cuda") * 0.8 + 0.1 ++ if mode == "tiny": ++ alpha.fill_(1e-5) ++ w0 = torch.randn(3, 2, 128, 128, device="cuda") * 0.01 ++ w1 = torch.randn(3, 2, 192, 192, device="cuda") * 0.01 ++ gw = torch.randn(2, 2, 32, 96, device="cuda") * 0.01 ++ out, z, uf = sv._mixing_stack_impl(u, alpha, w0, w1, gw, 3, 32, True) ++ go = torch.randn_like(out) * 0.1 ++ return ( ++ go, ++ out, ++ z, ++ uf, ++ alpha, ++ w0.transpose(2, 3).contiguous(), ++ w1.transpose(2, 3).contiguous(), ++ gw, ++ gw.transpose(2, 3).contiguous(), ++ 3, ++ 32, ++ True, ++ ) ++ ++ ++@pytest.mark.parametrize("edges", [0, 1, 37, 129, 1025, 8193]) ++@pytest.mark.parametrize("cap", [64, 8192]) ++@pytest.mark.parametrize("mode", ["random", "zero", "tiny"]) ++def test_cohort_matches_native(edges: int, cap: int, mode: str) -> None: ++ """Cover tail cohorts, two focus strides, legal tiny alpha and no mutation.""" ++ args = operands(edges, mode) ++ copies = [x.clone() for x in args[:9]] ++ expected_u, expected_a = sv._mixing_stack_bwd_impl(*args) ++ go, out, z, _, alpha, w0t, w1t, gw, gwt, *_ = args ++ actual_u = ecs.cohort_input_backward_impl(go, z, alpha, w0t, w1t, gw, gwt, cap) ++ actual_a = ecs._cohort_alpha_backward(go, out, alpha) ++ for actual, expected in ((actual_u, expected_u), (actual_a, expected_a)): ++ assert torch.isfinite(actual).all() ++ torch.testing.assert_close(actual, expected, rtol=0, atol=0) ++ for before, after in zip(copies, args[:9], strict=True): ++ assert torch.equal(before, after) ++ ++ ++def test_compiled_dynamic_cohort() -> None: ++ """The opaque runtime edge loop supports online dynamic graph execution.""" ++ compiled = torch.compile(ecs.cohort_backward, fullgraph=True, dynamic=True) ++ for edges in (37, 129): ++ args = operands(edges) ++ actual = compiled(*args) ++ expected = sv._mixing_stack_bwd_impl(*args) ++ for a, b in zip(actual, expected, strict=True): ++ torch.testing.assert_close(a, b, atol=0, rtol=0) ++ ++ ++@pytest.mark.parametrize("dynamic", [False, True]) ++def test_compiled_native_backward(dynamic: bool) -> None: ++ """Optional strides must preserve the default native compilation path.""" ++ compiled = torch.compile(sv._mixing_stack_bwd_op, fullgraph=True, dynamic=dynamic) ++ for edges in (37, 129): ++ args = operands(edges) ++ expected = sv._mixing_stack_bwd_impl(*args) ++ actual = compiled(*args) ++ for a, b in zip(actual, expected, strict=True): ++ torch.testing.assert_close(a, b, atol=0, rtol=0) ++ ++ ++@pytest.mark.parametrize("edges", [0, 37, 8193, 16384]) ++@pytest.mark.parametrize("mode", ["random", "zero", "tiny"]) ++def test_single_cohort_owned_output(edges: int, mode: str) -> None: ++ """Small-cohort reuse changes neither gradients nor caller-owned storage.""" ++ args = operands(edges, mode) ++ copies = [t.clone() for t in args[:9]] ++ go, out, z, _, alpha, w0t, w1t, gw, gwt, *_ = args ++ expected_u, expected_a = sv._mixing_stack_bwd_impl(*args) ++ actual_u = ecs._single_cohort_input_backward( ++ go, z, alpha, w0t, w1t, gw, gwt, ecs.COHORT_EDGES ++ ) ++ actual_a = ecs._cohort_alpha_backward(go, out, alpha) ++ for a, b in ((actual_u, expected_u), (actual_a, expected_a)): ++ assert torch.isfinite(a).all() ++ torch.testing.assert_close(a, b, atol=0, rtol=0) ++ for before, after in zip(copies, args[:9], strict=True): ++ assert torch.equal(before, after) ++ ++ ++def test_compiled_cohort_bucket_boundary() -> None: ++ """A dynamic compiled graph handles both sides of the small-E boundary.""" ++ compiled = torch.compile(ecs.cohort_backward, fullgraph=True, dynamic=True) ++ for edges in (16384, 16385): ++ args = operands(edges) ++ expected = sv._mixing_stack_bwd_impl(*args) ++ actual = compiled(*args) ++ for a, b in zip(actual, expected, strict=True): ++ torch.testing.assert_close(a, b, atol=0, rtol=0) ++ ++ ++@pytest.mark.parametrize( ++ "lmax,cf,apply", [(2, 32, True), (3, 64, True), (3, 32, False)] ++) ++def test_unsupported_layout(lmax: int, cf: int, apply: bool) -> None: ++ """Untested layouts must not enter the experimental implementation.""" ++ args = operands(1) ++ assert not ecs.supports_edge_cohort(args[0], args[2], lmax, cf, apply) ++ assert not ecs.supports_edge_cohort(args[0].cpu(), args[2].cpu(), 3, 32, True) ++ ++ ++@pytest.mark.parametrize("reason", ["weights", "saved_z", "saved_u", "create_graph"]) ++def test_training_dispatch_preserved(monkeypatch, reason: str) -> None: ++ """Weight/state/higher-order requests bypass ECS even when opted in.""" ++ args = operands(1) ++ go, out, z, uf, alpha, w0t, w1t, gw, *_ = args ++ u = torch.zeros_like(uf) ++ w0 = w0t.transpose(2, 3).contiguous() ++ w1 = w1t.transpose(2, 3).contiguous() ++ ctx = SimpleNamespace( ++ saved_tensors=(u, alpha, out, z, uf, w0, w1, gw), ++ needs_input_grad=( ++ True, ++ True, ++ reason == "weights", ++ False, ++ False, ++ False, ++ False, ++ False, ++ ), ++ lmax=3, ++ focus_dim=32, ++ apply_alpha=True, ++ ) ++ calls = [] ++ ++ def training(*unused): ++ calls.append(True) ++ return torch.zeros_like(u), torch.zeros_like(alpha), w0, w1, gw ++ ++ def forbidden(*unused): ++ raise AssertionError("ECS entered a training/higher-order request") ++ ++ monkeypatch.setattr(sv, "_EDGE_COHORT_INFER", True) ++ monkeypatch.setattr(sv, "_mixing_stack_train_bwd_op", training) ++ monkeypatch.setattr(ecs, "cohort_backward", forbidden) ++ with torch.set_grad_enabled(reason == "create_graph"): ++ sv._mixing_stack_backward( ++ ctx, ++ go, ++ torch.zeros_like(z) if reason == "saved_z" else None, ++ torch.zeros_like(uf) if reason == "saved_u" else None, ++ ) ++ assert calls == [True] ++ ++ ++def test_frozen_dispatch(monkeypatch) -> None: ++ """Enabling the switch actually changes the frozen inference dispatch.""" ++ args = operands(37) ++ go, out, z, uf, alpha, w0t, w1t, gw, *_ = args ++ ctx = SimpleNamespace( ++ saved_tensors=( ++ uf, ++ alpha, ++ out, ++ z, ++ uf, ++ w0t.transpose(2, 3).contiguous(), ++ w1t.transpose(2, 3).contiguous(), ++ gw, ++ ), ++ needs_input_grad=(True, True, False, False, False, False, False, False), ++ lmax=3, ++ focus_dim=32, ++ apply_alpha=True, ++ ) ++ monkeypatch.setattr(sv, "_EDGE_COHORT_INFER", True) ++ expected = sv._mixing_stack_bwd_impl(*args) ++ with torch.no_grad(): ++ actual = sv._mixing_stack_backward(ctx, go, None, None) ++ for a, b in zip(actual[:2], expected, strict=True): ++ torch.testing.assert_close(a, b, atol=0, rtol=0) diff --git a/doc/development/ecs-validation-20261025/pro_cpu_load_check.json b/doc/development/ecs-validation-20261025/pro_cpu_load_check.json new file mode 100644 index 0000000000..68ef6863b6 --- /dev/null +++ b/doc/development/ecs-validation-20261025/pro_cpu_load_check.json @@ -0,0 +1,318 @@ +{ + "status": "loaded", + "device": "cpu", + "strict_missing": [], + "strict_unexpected": [], + "compatibility": "in-memory historical fitting type alias only: ener -> dpa4_ener; original file unchanged", + "parameter_count": 22678990, + "definition": { + "type": "dpa4", + "type_map": [ + "H", + "He", + "Li", + "Be", + "B", + "C", + "N", + "O", + "F", + "Ne", + "Na", + "Mg", + "Al", + "Si", + "P", + "S", + "Cl", + "Ar", + "K", + "Ca", + "Sc", + "Ti", + "V", + "Cr", + "Mn", + "Fe", + "Co", + "Ni", + "Cu", + "Zn", + "Ga", + "Ge", + "As", + "Se", + "Br", + "Kr", + "Rb", + "Sr", + "Y", + "Zr", + "Nb", + "Mo", + "Tc", + "Ru", + "Rh", + "Pd", + "Ag", + "Cd", + "In", + "Sn", + "Sb", + "Te", + "I", + "Xe", + "Cs", + "Ba", + "La", + "Ce", + "Pr", + "Nd", + "Pm", + "Sm", + "Eu", + "Gd", + "Tb", + "Dy", + "Ho", + "Er", + "Tm", + "Yb", + "Lu", + "Hf", + "Ta", + "W", + "Re", + "Os", + "Ir", + "Pt", + "Au", + "Hg", + "Tl", + "Pb", + "Bi", + "Po", + "At", + "Rn", + "Fr", + "Ra", + "Ac", + "Th", + "Pa", + "U", + "Np", + "Pu", + "Am", + "Cm", + "Bk", + "Cf", + "Es", + "Fm", + "Md", + "No", + "Lr", + "Rf", + "Db", + "Sg", + "Bh", + "Hs", + "Mt", + "Ds", + "Rg", + "Cn", + "Nh", + "Fl", + "Mc", + "Lv", + "Ts", + "Og" + ], + "descriptor": { + "type": "dpa4", + "sel": 384, + "rcut": 6.0, + "env_exp": [ + 7, + 5 + ], + "channels": 64, + "n_radial": 16, + "radial_mlp": [ + 0 + ], + "use_env_seed": true, + "random_gamma": true, + "lmax": 5, + "mmax": 1, + "n_blocks": 6, + "so2_layers": 4, + "so2_norm": false, + "so2_attn_res": "none", + "radial_so2_mode": "degree_channel", + "radial_so2_rank": 2, + "n_focus": 2, + "focus_dim": 0, + "n_atten_head": 1, + "atten_f_mix": false, + "atten_v_proj": false, + "atten_o_proj": false, + "ffn_neurons": 0, + "grid_mlp": false, + "ffn_blocks": 2, + "sandwich_norm": [ + false, + true, + true, + false + ], + "mlp_bias": false, + "layer_scale": false, + "full_attn_res": "none", + "block_attn_res": "none", + "s2_activation": [ + false, + true + ], + "lebedev_quadrature": true, + "activation_function": "silu", + "glu_activation": true, + "use_amp": true, + "precision": "float32", + "seed": 42, + "basis_type": "bessel", + "l_schedule": null, + "m_schedule": null, + "add_chg_spin_ebd": false, + "default_chg_spin": null, + "exclude_types": [], + "eps": 1e-07, + "trainable": true + }, + "fitting_net": { + "neuron": [ + 0 + ], + "activation_function": "silu", + "precision": "float32", + "seed": 42, + "type": "dpa4_ener", + "numb_fparam": 0, + "numb_aparam": 0, + "default_fparam": null, + "dim_case_embd": 0, + "resnet_dt": true, + "trainable": true, + "rcond": null, + "atom_ener": [], + "use_aparam_as_mask": false + }, + "use_compile": true, + "enable_tf32": true, + "data_stat_nbatch": 10, + "data_stat_protect": 0.01, + "data_bias_nsample": 10, + "pair_exclude_types": [], + "atom_exclude_types": [], + "preset_out_bias": null, + "srtab_add_bias": true, + "model_branch_alias": [], + "info": { + "observed_type": [ + "H", + "He", + "Li", + "Be", + "B", + "C", + "N", + "O", + "F", + "Ne", + "Na", + "Mg", + "Al", + "Si", + "P", + "S", + "Cl", + "Ar", + "K", + "Ca", + "Sc", + "Ti", + "V", + "Cr", + "Mn", + "Fe", + "Co", + "Ni", + "Cu", + "Zn", + "Ga", + "Ge", + "As", + "Se", + "Br", + "Kr", + "Rb", + "Sr", + "Y", + "Zr", + "Nb", + "Mo", + "Tc", + "Ru", + "Rh", + "Pd", + "Ag", + "Cd", + "In", + "Sn", + "Sb", + "Te", + "I", + "Xe", + "Cs", + "Ba", + "La", + "Ce", + "Pr", + "Nd", + "Pm", + "Sm", + "Eu", + "Gd", + "Tb", + "Dy", + "Ho", + "Er", + "Tm", + "Yb", + "Lu", + "Hf", + "Ta", + "W", + "Re", + "Os", + "Ir", + "Pt", + "Au", + "Hg", + "Tl", + "Pb", + "Bi", + "Ac", + "Th", + "Pa", + "U", + "Np", + "Pu" + ] + }, + "bridging_method": "None", + "bridging_r_inner": 0.5, + "bridging_r_outer": 0.8, + "lora": null + }, + "source_root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/megakernel_20261018/upstream" +} \ No newline at end of file diff --git a/doc/development/ecs-validation-20261025/provenance.json b/doc/development/ecs-validation-20261025/provenance.json new file mode 100644 index 0000000000..f95175ff3e --- /dev/null +++ b/doc/development/ecs-validation-20261025/provenance.json @@ -0,0 +1,2749 @@ +{ + "base": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "port_source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474", + "source/tests/pt_expt/kernels/test_so2_edge_cohort.py": "e950f552d1b7012e58e7ff2190e1eeec565d9572a63d65111a527331a14c9737" + }, + "all_measurement_source_checks": [ + { + "run": "Mini_n4096_BASE_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n4096_BASE_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n4096_BASE_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n4096_ECS_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n4096_ECS_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n4096_ECS_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n4096_TORCH_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n4096_TORCH_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n4096_TORCH_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n512_BASE_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n512_BASE_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n512_BASE_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n512_ECS_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n512_ECS_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n512_ECS_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n512_TORCH_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n512_TORCH_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n512_TORCH_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n96_BASE_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n96_BASE_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n96_BASE_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n96_ECS_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n96_ECS_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n96_ECS_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n96_TORCH_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n96_TORCH_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Mini_n96_TORCH_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n4096_BASE_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n4096_BASE_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n4096_BASE_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n4096_ECS_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n4096_ECS_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n4096_ECS_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n4096_TORCH_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n4096_TORCH_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n4096_TORCH_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n512_BASE_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n512_BASE_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n512_BASE_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n512_ECS_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n512_ECS_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n512_ECS_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n512_TORCH_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n512_TORCH_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n512_TORCH_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n96_BASE_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n96_BASE_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n96_BASE_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n96_ECS_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n96_ECS_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n96_ECS_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n96_TORCH_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n96_TORCH_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Nano_n96_TORCH_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n4096_BASE_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n4096_BASE_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n4096_BASE_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n4096_ECS_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n4096_ECS_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n4096_ECS_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n4096_TORCH_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n4096_TORCH_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n4096_TORCH_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n512_BASE_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n512_BASE_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n512_BASE_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n512_ECS_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n512_ECS_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n512_ECS_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n512_TORCH_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n512_TORCH_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n512_TORCH_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n96_BASE_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n96_BASE_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n96_BASE_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n96_ECS_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n96_ECS_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n96_ECS_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n96_TORCH_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n96_TORCH_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "NeoCu_n96_TORCH_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n4096_BASE_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n4096_BASE_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n4096_BASE_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n4096_ECS_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n4096_ECS_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n4096_ECS_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n4096_TORCH_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n4096_TORCH_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n4096_TORCH_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n512_BASE_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n512_BASE_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n512_BASE_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n512_ECS_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n512_ECS_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n512_ECS_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n512_TORCH_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n512_TORCH_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n512_TORCH_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n96_BASE_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n96_BASE_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n96_BASE_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n96_ECS_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n96_ECS_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n96_ECS_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n96_TORCH_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n96_TORCH_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Neo_n96_TORCH_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n4096_BASE_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n4096_BASE_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n4096_BASE_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n4096_ECS_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n4096_ECS_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n4096_ECS_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n4096_TORCH_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n4096_TORCH_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n4096_TORCH_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n512_BASE_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n512_BASE_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n512_BASE_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n512_ECS_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n512_ECS_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n512_ECS_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n512_TORCH_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n512_TORCH_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n512_TORCH_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n96_BASE_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n96_BASE_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n96_BASE_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n96_ECS_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n96_ECS_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n96_ECS_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n96_TORCH_p0", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n96_TORCH_p1", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + }, + { + "run": "Pro_n96_TORCH_p2", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "verified_unchanged": true + } + ], + "raw_npz_archive_not_uploaded": [ + { + "run": "Mini_n4096_BASE_p0", + "arrays": { + "outputs.npz": { + "sha256": "1ec59a543286cb0962387070e44dd01497232082d0b64a4bdea69cb33418f199", + "bytes": 853054 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Mini_n4096_BASE_p1", + "arrays": { + "outputs.npz": { + "sha256": "65ef2e8f46ed7d872ca7db4066b32fd9f7689afdcafc1a4e2a93b0e92a4b2929", + "bytes": 853092 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Mini_n4096_BASE_p2", + "arrays": { + "outputs.npz": { + "sha256": "20017adb5b3337c3a45c120adeae5460c661997bb58f29c6bbe9965a7b4cffa3", + "bytes": 853064 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Mini_n4096_ECS_p0", + "arrays": { + "outputs.npz": { + "sha256": "3e7fcb2047427c4913b5f2a8c551373d40a45917f3577226f7944be1a3d1fc76", + "bytes": 852986 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Mini_n4096_ECS_p1", + "arrays": { + "outputs.npz": { + "sha256": "6fe042dc47e517b75174bcabef0e49900faa14fa646dcb84fe1aaef270737202", + "bytes": 853010 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Mini_n4096_ECS_p2", + "arrays": { + "outputs.npz": { + "sha256": "e191a89382797f806c1421f5d1064201847aa826c6ba74469a249828e7465dc1", + "bytes": 853111 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Mini_n4096_TORCH_p0", + "arrays": { + "outputs.npz": { + "sha256": "fe6be3f2fc6b12352fd1fbdc52305fc6da550aa55cd02cd6cbdc008f69d9d32e", + "bytes": 852478 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Mini_n4096_TORCH_p1", + "arrays": { + "outputs.npz": { + "sha256": "153e9d91cf9670ced3174b096a647e2cb088b5f9ea25cf18aa69084e0be74f74", + "bytes": 852505 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Mini_n4096_TORCH_p2", + "arrays": { + "outputs.npz": { + "sha256": "74387423fcb372efbe36053cef89415e2e72f9e4da0969780681b30ec728dc4a", + "bytes": 852629 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Mini_n512_BASE_p0", + "arrays": { + "outputs.npz": { + "sha256": "e66e1c57e10797ca45f0cdc362fe202d1d55293ae719fc8d5990d8f00418eb50", + "bytes": 113889 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Mini_n512_BASE_p1", + "arrays": { + "outputs.npz": { + "sha256": "368d68caf086261953c5b12ad64206f7702677671c0a6a1dacdf4eece5935c12", + "bytes": 113902 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Mini_n512_BASE_p2", + "arrays": { + "outputs.npz": { + "sha256": "e7bdfb0af239f459be5c5be24dfa1970d315334ffd06d634af48180110467bf3", + "bytes": 113884 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Mini_n512_ECS_p0", + "arrays": { + "outputs.npz": { + "sha256": "0252ce2b40bb7593d5aa395e0b52b4666b1d6145c16e01db7d05a5147b4ba87b", + "bytes": 113871 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Mini_n512_ECS_p1", + "arrays": { + "outputs.npz": { + "sha256": "3abb68cbfe314b6dd1a160e0a420a77af7164a734603a1e26b6317c785e38fb0", + "bytes": 113847 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Mini_n512_ECS_p2", + "arrays": { + "outputs.npz": { + "sha256": "0ac4a2e9b444dbdf4540f1c41bab2c42040c99516e783270c36fec2f653343d4", + "bytes": 113844 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Mini_n512_TORCH_p0", + "arrays": { + "outputs.npz": { + "sha256": "1566c553c1934ffdeeb42194527ec6459bd91fa740a3ed014b5f98a5a6423753", + "bytes": 113811 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Mini_n512_TORCH_p1", + "arrays": { + "outputs.npz": { + "sha256": "1e4c38c8823ea1167ba290a26f40c56f2217b9f448df0c1fbb9a975321b2897c", + "bytes": 113836 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Mini_n512_TORCH_p2", + "arrays": { + "outputs.npz": { + "sha256": "e7dee4623020502d2939ab61d28c64733b2371a63e2947ac7f2cd9e38c34d49c", + "bytes": 113849 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Mini_n96_BASE_p0", + "arrays": { + "outputs.npz": { + "sha256": "07d869055f4227b9ffae0c3b60da04fada965f18491ae83c50739f8d662c2c4f", + "bytes": 28419 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Mini_n96_BASE_p1", + "arrays": { + "outputs.npz": { + "sha256": "6fd57c3e09be874cbdce217d20b57407e1b4bd57b1aa00f9fc5c3a1da520256f", + "bytes": 28404 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Mini_n96_BASE_p2", + "arrays": { + "outputs.npz": { + "sha256": "b4d37603074bca353fecfb16b297f7a376edca66c98888fa3a1e249a32d2537c", + "bytes": 28403 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Mini_n96_ECS_p0", + "arrays": { + "outputs.npz": { + "sha256": "6ee9d26e7da594483b1aeb682580f604ae540a56eba860ccbf35d1035e46f0c7", + "bytes": 28421 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Mini_n96_ECS_p1", + "arrays": { + "outputs.npz": { + "sha256": "41a2bf2e18f65a3f9cb5a01af770f092d527618c7f553618a82392acb598ee48", + "bytes": 28416 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Mini_n96_ECS_p2", + "arrays": { + "outputs.npz": { + "sha256": "ad6765a6b8189b227fb4be23eca6f3f341af1d7be89985f6d84a1d9700f63193", + "bytes": 28406 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Mini_n96_TORCH_p0", + "arrays": { + "outputs.npz": { + "sha256": "7bef2dbdf45de0d6afaf3334bbcb6d0529e3e84f6ad1a4b816adc02bf978a1e4", + "bytes": 28421 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Mini_n96_TORCH_p1", + "arrays": { + "outputs.npz": { + "sha256": "504dd335ab864d5f26cf4a33bb6166212e4d7ee516629700049f08367fcd4386", + "bytes": 28396 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Mini_n96_TORCH_p2", + "arrays": { + "outputs.npz": { + "sha256": "22511679b69127fd5cad0fb647cdbb5536b5e8abb8f7a85446af73645e49e391", + "bytes": 28389 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Nano_n4096_BASE_p0", + "arrays": { + "outputs.npz": { + "sha256": "f5afdec907926be728b200840edc73a00c38a9c3bc79148c09764cf59b0149a8", + "bytes": 848054 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Nano_n4096_BASE_p1", + "arrays": { + "outputs.npz": { + "sha256": "90b64a307a4328ce167a28835062df9e4709146018f57c8214d6e4a9f87b2c83", + "bytes": 848045 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Nano_n4096_BASE_p2", + "arrays": { + "outputs.npz": { + "sha256": "0593b7d533d8ca9057095f69418a86dbd2aaa1090a3b797a94c1035ed0f46708", + "bytes": 848044 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Nano_n4096_ECS_p0", + "arrays": { + "outputs.npz": { + "sha256": "1526c7b15f6a76d669b4b4e4caa7255dc89c8e8345ebffbbe6f9e305cf26e10d", + "bytes": 848037 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Nano_n4096_ECS_p1", + "arrays": { + "outputs.npz": { + "sha256": "b61f07b7b2146f90b14438db1dc73a1674944e17f929b36f0f0832c2c2ada890", + "bytes": 848058 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Nano_n4096_ECS_p2", + "arrays": { + "outputs.npz": { + "sha256": "c447f0568f13f7f0c8a2427a7dd2229e0ee6e9be08510d44319487d1979edc0d", + "bytes": 848062 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Nano_n4096_TORCH_p0", + "arrays": { + "outputs.npz": { + "sha256": "bda3caaf714590d31f69ca5e89ef90b1fdeb7957707cb49c9bdd4d3ef304c3a5", + "bytes": 847578 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Nano_n4096_TORCH_p1", + "arrays": { + "outputs.npz": { + "sha256": "c3d4de97eb9cecdc79b4914aa68516cf09d93c54e8fd82a6f5109d85d1fbe023", + "bytes": 847651 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Nano_n4096_TORCH_p2", + "arrays": { + "outputs.npz": { + "sha256": "a7cfec34e1ef7fd949c64acd205ba7f86e8fa077c9176a2121ef5c7c9188717c", + "bytes": 847497 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Nano_n512_BASE_p0", + "arrays": { + "outputs.npz": { + "sha256": "688f9eedf9a39f347bc22fc00173440d0c7a0e6bde5de11caa3c077a39b380c2", + "bytes": 113321 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Nano_n512_BASE_p1", + "arrays": { + "outputs.npz": { + "sha256": "c01ad15aa77643bbe9ed31d26b5742b66abed57eb905b2b3b80c0d6d6d9930aa", + "bytes": 113273 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Nano_n512_BASE_p2", + "arrays": { + "outputs.npz": { + "sha256": "7148a2c033731fd49d4507d29c9bfe1fef4c397670f57cb91207c7fe6ecc3486", + "bytes": 113307 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Nano_n512_ECS_p0", + "arrays": { + "outputs.npz": { + "sha256": "e3c8a207f9b8cf8c9737a87a6ab5be0e9bd0f821cbf3308fe435d199ff65960d", + "bytes": 113300 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Nano_n512_ECS_p1", + "arrays": { + "outputs.npz": { + "sha256": "695e023d718cc9b5f186cbf36329b5167736fbf4cc28b01da9a6f276788ce49e", + "bytes": 113282 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Nano_n512_ECS_p2", + "arrays": { + "outputs.npz": { + "sha256": "e75ffe4b787fe275896b4995dc1c12e33d7cdeda34d424323b81de9f523cb8d7", + "bytes": 113265 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Nano_n512_TORCH_p0", + "arrays": { + "outputs.npz": { + "sha256": "e1285bed7037a34f130ab7f1534ed31b3e2079f1069d4609206f63f7b660ba80", + "bytes": 113257 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Nano_n512_TORCH_p1", + "arrays": { + "outputs.npz": { + "sha256": "622cffa9cc535dbbab204b173d3e116e2215057234c696fdb58dd221b14af66a", + "bytes": 113257 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Nano_n512_TORCH_p2", + "arrays": { + "outputs.npz": { + "sha256": "0e9cbf7e4082b7ea0bd241075a1956625ba15a7936822089368bea40b583a51c", + "bytes": 113267 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Nano_n96_BASE_p0", + "arrays": { + "outputs.npz": { + "sha256": "1d6eb775a449ebdb3bb5d9bcf9f61d8f31b94a96d6e83f75247b407e7f1b9563", + "bytes": 28336 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Nano_n96_BASE_p1", + "arrays": { + "outputs.npz": { + "sha256": "7410b5fe8bbb70ec57f2f65fe07ff61a9cb5bf79dafb6d142066a92d35215807", + "bytes": 28317 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Nano_n96_BASE_p2", + "arrays": { + "outputs.npz": { + "sha256": "abe49b1ee59f61cd4cc9a948224e380d494b5a576a8020b320b55013653fc59d", + "bytes": 28347 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Nano_n96_ECS_p0", + "arrays": { + "outputs.npz": { + "sha256": "6d70a09880fb46016b213838ebbdd573aad98e1174721f22840563a96dce908f", + "bytes": 28359 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Nano_n96_ECS_p1", + "arrays": { + "outputs.npz": { + "sha256": "08b3ea802eb9ac42c13ba72a214f5a188586d2202b323e435c76b5fba5ffefd5", + "bytes": 28335 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Nano_n96_ECS_p2", + "arrays": { + "outputs.npz": { + "sha256": "766ff0eefadc10a1eb5b64f52bcc4506d047a56efa53e8d71502c59a03052361", + "bytes": 28336 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Nano_n96_TORCH_p0", + "arrays": { + "outputs.npz": { + "sha256": "e14537a8af9cfe6a0aa6534169fc14ef28afbce7e10f86a21aa17f1e8fb0d474", + "bytes": 28320 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Nano_n96_TORCH_p1", + "arrays": { + "outputs.npz": { + "sha256": "f3a750c18f8015c9e1ac7b5e199e50d7241c142dc062e84cc719200092792f92", + "bytes": 28303 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Nano_n96_TORCH_p2", + "arrays": { + "outputs.npz": { + "sha256": "a8c8f0b4529d2ac6ece182d386e51d3ca3f386f573422930397a6f0218db437e", + "bytes": 28325 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "NeoCu_n4096_BASE_p0", + "arrays": { + "outputs.npz": { + "sha256": "105022ac22d678c2f2c968d7f95e3cceae153cb4e10f84defc1f0a1a2caa0486", + "bytes": 831457 + }, + "inputs.npz": { + "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "bytes": 273092 + } + } + }, + { + "run": "NeoCu_n4096_BASE_p1", + "arrays": { + "outputs.npz": { + "sha256": "6b72cda1b7456a11becc412e8b02cac5548066387e3c4d033e48eb22b6741486", + "bytes": 831540 + }, + "inputs.npz": { + "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "bytes": 273092 + } + } + }, + { + "run": "NeoCu_n4096_BASE_p2", + "arrays": { + "outputs.npz": { + "sha256": "f49399e643ccd8243d0995b68207b4830325a370f42d8d3468f813d6f20b44f1", + "bytes": 831326 + }, + "inputs.npz": { + "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "bytes": 273092 + } + } + }, + { + "run": "NeoCu_n4096_ECS_p0", + "arrays": { + "outputs.npz": { + "sha256": "6cadc81844fbf9b579bc10bf07d3f29df8fd8d3d12e558e498aa4c8a23fe44ed", + "bytes": 831533 + }, + "inputs.npz": { + "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "bytes": 273092 + } + } + }, + { + "run": "NeoCu_n4096_ECS_p1", + "arrays": { + "outputs.npz": { + "sha256": "500fcd3f0f58d011dd10328f590a00f7ec3067db205e9182700c2ce674460228", + "bytes": 831495 + }, + "inputs.npz": { + "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "bytes": 273092 + } + } + }, + { + "run": "NeoCu_n4096_ECS_p2", + "arrays": { + "outputs.npz": { + "sha256": "b40f5afb3f9da4d624427d835acaac5a5ff2292dc189c1b7eb1799a40a454d7c", + "bytes": 831467 + }, + "inputs.npz": { + "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "bytes": 273092 + } + } + }, + { + "run": "NeoCu_n4096_TORCH_p0", + "arrays": { + "outputs.npz": { + "sha256": "20825aebdf8c333e3c99767edd84fb0b14019b68cac279b056c9e0e49c6e4350", + "bytes": 831458 + }, + "inputs.npz": { + "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "bytes": 273092 + } + } + }, + { + "run": "NeoCu_n4096_TORCH_p1", + "arrays": { + "outputs.npz": { + "sha256": "452636227d68c1b2e616d16e83010b95ad498afda27831d82ed44da907c239b2", + "bytes": 831490 + }, + "inputs.npz": { + "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "bytes": 273092 + } + } + }, + { + "run": "NeoCu_n4096_TORCH_p2", + "arrays": { + "outputs.npz": { + "sha256": "4d47e6435ff1b6775954e5c2d089ab8ab311f68ec0e7400d5c4803a6f70496a1", + "bytes": 831419 + }, + "inputs.npz": { + "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "bytes": 273092 + } + } + }, + { + "run": "NeoCu_n512_BASE_p0", + "arrays": { + "outputs.npz": { + "sha256": "785d25e879d21a2a85493b2a83e9bb95e775d6323c00bfa3f710801e44173a04", + "bytes": 111341 + }, + "inputs.npz": { + "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "bytes": 35041 + } + } + }, + { + "run": "NeoCu_n512_BASE_p1", + "arrays": { + "outputs.npz": { + "sha256": "c68c94134ed475804849446223d4e64d32147c9b057d044aeccaf12e7519b3ae", + "bytes": 111334 + }, + "inputs.npz": { + "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "bytes": 35041 + } + } + }, + { + "run": "NeoCu_n512_BASE_p2", + "arrays": { + "outputs.npz": { + "sha256": "8c22edf95ca4257445ac6d475f546560de5106d1093a383ae11d9490b3475920", + "bytes": 111289 + }, + "inputs.npz": { + "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "bytes": 35041 + } + } + }, + { + "run": "NeoCu_n512_ECS_p0", + "arrays": { + "outputs.npz": { + "sha256": "6c7cf685499bd41ecce6451f4fd16dcc3f7968d5dd712d25924400afcceaa69a", + "bytes": 111306 + }, + "inputs.npz": { + "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "bytes": 35041 + } + } + }, + { + "run": "NeoCu_n512_ECS_p1", + "arrays": { + "outputs.npz": { + "sha256": "36c8e98707ed7d15f0433f52071c89c5bcaadd87e71563177a040ed668a6d384", + "bytes": 111340 + }, + "inputs.npz": { + "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "bytes": 35041 + } + } + }, + { + "run": "NeoCu_n512_ECS_p2", + "arrays": { + "outputs.npz": { + "sha256": "90de4c2164387f29fd938c27b3f0d18091f9b7be287436e83cf75f9ab464bf17", + "bytes": 111321 + }, + "inputs.npz": { + "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "bytes": 35041 + } + } + }, + { + "run": "NeoCu_n512_TORCH_p0", + "arrays": { + "outputs.npz": { + "sha256": "b81f7488c7f7330e5fa0e0290fb52ab75c358d3d0b9e0528dc53516923812a64", + "bytes": 111310 + }, + "inputs.npz": { + "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "bytes": 35041 + } + } + }, + { + "run": "NeoCu_n512_TORCH_p1", + "arrays": { + "outputs.npz": { + "sha256": "fe377642df0c8d300d23098db9257d1c218ac78c9448a918fba5c1f66eef47b8", + "bytes": 111330 + }, + "inputs.npz": { + "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "bytes": 35041 + } + } + }, + { + "run": "NeoCu_n512_TORCH_p2", + "arrays": { + "outputs.npz": { + "sha256": "774ae7bfdf8188a197cade6b72a94192fb736ddb31cc26714c4846a0133c3c84", + "bytes": 111394 + }, + "inputs.npz": { + "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "bytes": 35041 + } + } + }, + { + "run": "NeoCu_n96_BASE_p0", + "arrays": { + "outputs.npz": { + "sha256": "6dfb57c6d108929087bc240b8af9c73eb1bedcee32088050f1c302d13be3569e", + "bytes": 27959 + }, + "inputs.npz": { + "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "bytes": 7135 + } + } + }, + { + "run": "NeoCu_n96_BASE_p1", + "arrays": { + "outputs.npz": { + "sha256": "81ac2cfc7a3709be72ee35187e4e52462fc39756bea58f549b7c72e7d07d22a4", + "bytes": 27948 + }, + "inputs.npz": { + "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "bytes": 7135 + } + } + }, + { + "run": "NeoCu_n96_BASE_p2", + "arrays": { + "outputs.npz": { + "sha256": "e28df853aed6c2a55a15539ebe7f4079fb16c623009d1a3da19a51254f0153c8", + "bytes": 27937 + }, + "inputs.npz": { + "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "bytes": 7135 + } + } + }, + { + "run": "NeoCu_n96_ECS_p0", + "arrays": { + "outputs.npz": { + "sha256": "fd397f82e032b58ebee5adac31a1b6a23b01567c48975fddbc1c0aac55c412f5", + "bytes": 27947 + }, + "inputs.npz": { + "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "bytes": 7135 + } + } + }, + { + "run": "NeoCu_n96_ECS_p1", + "arrays": { + "outputs.npz": { + "sha256": "71bfa0aaed7f343fbfe8bde3bfe040d2f65d11d9eb9c0d2e77a753c4d9bc451e", + "bytes": 27959 + }, + "inputs.npz": { + "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "bytes": 7135 + } + } + }, + { + "run": "NeoCu_n96_ECS_p2", + "arrays": { + "outputs.npz": { + "sha256": "f12385fb415a24f60459c523ec86e4bbf8c20e5b7108744526bf20836ce4fe81", + "bytes": 27945 + }, + "inputs.npz": { + "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "bytes": 7135 + } + } + }, + { + "run": "NeoCu_n96_TORCH_p0", + "arrays": { + "outputs.npz": { + "sha256": "bc4a7f32a846fcd930bb2d0464ac430b1dda595c0eb3286a1b6759116859b51e", + "bytes": 27948 + }, + "inputs.npz": { + "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "bytes": 7135 + } + } + }, + { + "run": "NeoCu_n96_TORCH_p1", + "arrays": { + "outputs.npz": { + "sha256": "041d733b305bc16e1585c15968943ab92611def06d07157abf4ee1ef2ec4e6d8", + "bytes": 27914 + }, + "inputs.npz": { + "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "bytes": 7135 + } + } + }, + { + "run": "NeoCu_n96_TORCH_p2", + "arrays": { + "outputs.npz": { + "sha256": "051bf688f932fd660e4c1fdfefd47a56b148a6705b6c2bbf1dd6a4c2c889e16e", + "bytes": 27981 + }, + "inputs.npz": { + "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "bytes": 7135 + } + } + }, + { + "run": "Neo_n4096_BASE_p0", + "arrays": { + "outputs.npz": { + "sha256": "719b5fa13ac832a90f1329bf5fc0af9c8756204af946302805c3c40b11b291a3", + "bytes": 836688 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Neo_n4096_BASE_p1", + "arrays": { + "outputs.npz": { + "sha256": "a90972048f73b11137a7e3a4e3dc685d44959a548865012f3de0f75bd8788743", + "bytes": 836802 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Neo_n4096_BASE_p2", + "arrays": { + "outputs.npz": { + "sha256": "00d20e14d4ef3c50c55683dc2dd29cd42205580827b59dedf90b4332d7aff15c", + "bytes": 836649 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Neo_n4096_ECS_p0", + "arrays": { + "outputs.npz": { + "sha256": "6e184a27908dc6253d2eed761536fbce2bd9398fbb6b8a7330c5c184d01ac260", + "bytes": 836756 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Neo_n4096_ECS_p1", + "arrays": { + "outputs.npz": { + "sha256": "3c92f98d3125828f90a314e96a1f6010c77e021d3756e330166c320b67bacad9", + "bytes": 836750 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Neo_n4096_ECS_p2", + "arrays": { + "outputs.npz": { + "sha256": "a3cdfcd2cc4c20a5a7cd99b2dcb2cf746775548d8606229154ca371fc3b0d26f", + "bytes": 836813 + }, + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Neo_n4096_TORCH_p0", + "arrays": { + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Neo_n4096_TORCH_p1", + "arrays": { + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Neo_n4096_TORCH_p2", + "arrays": { + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Neo_n512_BASE_p0", + "arrays": { + "outputs.npz": { + "sha256": "3ce2a44330e9ea321b80e454a56f42edec61e15d4ee15dfe8b168e3eab9806e2", + "bytes": 111825 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Neo_n512_BASE_p1", + "arrays": { + "outputs.npz": { + "sha256": "70959f572f0350f610c977474ed4c94e5de68c59d808dfee516f804dc0749ca2", + "bytes": 111830 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Neo_n512_BASE_p2", + "arrays": { + "outputs.npz": { + "sha256": "5afdce1290cec69fd234b7d26f585ff6bd8617d103977206287b8a8e398cddc4", + "bytes": 111867 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Neo_n512_ECS_p0", + "arrays": { + "outputs.npz": { + "sha256": "6269b9cb130a27b88c81780fa79634f4dd6f684caa1f886a900d66ca72ef1e9e", + "bytes": 111851 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Neo_n512_ECS_p1", + "arrays": { + "outputs.npz": { + "sha256": "cac39cd370b80562b0be101ffe36bdb386291353c2addfba8150914e1f55dfac", + "bytes": 111849 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Neo_n512_ECS_p2", + "arrays": { + "outputs.npz": { + "sha256": "d98f94f7496e0ca0808ac22e6b2876d192c9687cbace303d4b1108aeae1e58b7", + "bytes": 111879 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Neo_n512_TORCH_p0", + "arrays": { + "outputs.npz": { + "sha256": "c8c45cc573b3ca6acb013ad5f83193311c9375f4fb5144bcbb16a2b2c8bf9796", + "bytes": 111836 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Neo_n512_TORCH_p1", + "arrays": { + "outputs.npz": { + "sha256": "27323f8142de6377f4412bdad3a42e82187b0320b63a942ebe2e1681bd39292e", + "bytes": 111813 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Neo_n512_TORCH_p2", + "arrays": { + "outputs.npz": { + "sha256": "34dbdd81889218abb466ce362276e58455da3d84a4d05aabef17870c4d20f8b4", + "bytes": 111806 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Neo_n96_BASE_p0", + "arrays": { + "outputs.npz": { + "sha256": "20d0e9e9555b2b1a647110b3960240274fe262d56df5367a7ddb7da16b2d95b1", + "bytes": 28132 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Neo_n96_BASE_p1", + "arrays": { + "outputs.npz": { + "sha256": "08cd77ee7e45fd2278e54e9129f32e17623f5dad4bc0688e19708452a5c70726", + "bytes": 28124 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Neo_n96_BASE_p2", + "arrays": { + "outputs.npz": { + "sha256": "95c17603baa0fc5e30f3fb18728036015de0cc0d3b5787394517c42e61e0d4a1", + "bytes": 28133 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Neo_n96_ECS_p0", + "arrays": { + "outputs.npz": { + "sha256": "0a034876baa0ba85e231c993528665057693b2a9add246a15e0c6bd63b4e1378", + "bytes": 28145 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Neo_n96_ECS_p1", + "arrays": { + "outputs.npz": { + "sha256": "cb8d8b8d6a3436d5d75fc0ebde9949cc84a2a146ec9bcb16ec28eb86cc044ff5", + "bytes": 28120 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Neo_n96_ECS_p2", + "arrays": { + "outputs.npz": { + "sha256": "cb144922cc6bc820fb6974f5f39e7f3c1a5ce03251794da1b57a9d7a79c4c111", + "bytes": 28134 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Neo_n96_TORCH_p0", + "arrays": { + "outputs.npz": { + "sha256": "ce05d2f2563091f4e808a1094c923f7778d819c536d7f7e338b5d96f09380ebf", + "bytes": 28132 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Neo_n96_TORCH_p1", + "arrays": { + "outputs.npz": { + "sha256": "7d0a6693c9b0bbaa47d7297726acb4c82debb4e91c0aa0b256cbbc311f7f8194", + "bytes": 28126 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Neo_n96_TORCH_p2", + "arrays": { + "outputs.npz": { + "sha256": "8ef3c5cd9b39ecb0b4da5dbb5cc53641939c4bb41204a7c62a249460f7bbf2d0", + "bytes": 28124 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Pro_n4096_BASE_p0", + "arrays": { + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Pro_n4096_BASE_p1", + "arrays": { + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Pro_n4096_BASE_p2", + "arrays": { + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Pro_n4096_ECS_p0", + "arrays": { + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Pro_n4096_ECS_p1", + "arrays": { + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Pro_n4096_ECS_p2", + "arrays": { + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Pro_n4096_TORCH_p0", + "arrays": { + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Pro_n4096_TORCH_p1", + "arrays": { + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Pro_n4096_TORCH_p2", + "arrays": { + "inputs.npz": { + "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "bytes": 275168 + } + } + }, + { + "run": "Pro_n512_BASE_p0", + "arrays": { + "outputs.npz": { + "sha256": "a8575b8f90369e96419af314e2363397c0f0385b594274ce4ef7075d788d7b6f", + "bytes": 112802 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Pro_n512_BASE_p1", + "arrays": { + "outputs.npz": { + "sha256": "c464417ef39fdc755ed06d058b0e3ae0cf8c594276fe97fbcd00d8ab6e7c3d0a", + "bytes": 112805 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Pro_n512_BASE_p2", + "arrays": { + "outputs.npz": { + "sha256": "26e5b14ac455eb2740c49b20914b1535c48ee62fd02b223e855ada3219667bfa", + "bytes": 112887 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Pro_n512_ECS_p0", + "arrays": { + "outputs.npz": { + "sha256": "7a773e05b29293e25d46421d764ccc3acd07a4c1c6643b15daa514e98e96e914", + "bytes": 112801 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Pro_n512_ECS_p1", + "arrays": { + "outputs.npz": { + "sha256": "68656449a84b97d1240500c07b4a309f181894daeef040059ccea3c3e78daa8d", + "bytes": 112830 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Pro_n512_ECS_p2", + "arrays": { + "outputs.npz": { + "sha256": "cf21213762433e01f4344f45797ec365ccce8ccf88356bd370a091f3f177a361", + "bytes": 112866 + }, + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Pro_n512_TORCH_p0", + "arrays": { + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Pro_n512_TORCH_p1", + "arrays": { + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Pro_n512_TORCH_p2", + "arrays": { + "inputs.npz": { + "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "bytes": 35228 + } + } + }, + { + "run": "Pro_n96_BASE_p0", + "arrays": { + "outputs.npz": { + "sha256": "1c66d9a94e36f34a1ccd96e9c9a6bfa6e610a8a349ad9e2959dd6cb0c0f5821e", + "bytes": 28287 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Pro_n96_BASE_p1", + "arrays": { + "outputs.npz": { + "sha256": "0c180b4a98e55acbcd29c6195b16e67b96c40a40981fab66c69deec9ee14ada8", + "bytes": 28273 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Pro_n96_BASE_p2", + "arrays": { + "outputs.npz": { + "sha256": "517fbbfe5621dad67eb683e54384d69efc1a2dd3f9d311fe1ba1719879640ad6", + "bytes": 28286 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Pro_n96_ECS_p0", + "arrays": { + "outputs.npz": { + "sha256": "c9cc708f48e90d76a6e9d88b269ffd0a0bbec52d113e3379ef621cf367eec7ae", + "bytes": 28278 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Pro_n96_ECS_p1", + "arrays": { + "outputs.npz": { + "sha256": "51e666779e9bc60aafbc775e6e946cf83e9cac3dffd987a7fe269075b4de5c12", + "bytes": 28287 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Pro_n96_ECS_p2", + "arrays": { + "outputs.npz": { + "sha256": "36c47a6218fd9411478ee61cf56125f9da914738e6b79a6f7b0f39db156069d0", + "bytes": 28285 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Pro_n96_TORCH_p0", + "arrays": { + "outputs.npz": { + "sha256": "4c195d89fa66bc32804072d4cbb7a660d48c9fa22d125f454817fa794a21c1ac", + "bytes": 28269 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Pro_n96_TORCH_p1", + "arrays": { + "outputs.npz": { + "sha256": "cc2e6ebe1070d39a982887a82c78254cf07743949c7b3d2b91d0a7a2ef72d6f6", + "bytes": 28288 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + }, + { + "run": "Pro_n96_TORCH_p2", + "arrays": { + "outputs.npz": { + "sha256": "ea79d0a9ff5abb8d4eee6fb4e005d83b9d3fef1cc21f29b11b7f2033bd1114fa", + "bytes": 28273 + }, + "inputs.npz": { + "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "bytes": 7175 + } + } + } + ], + "publication_time_gpu_snapshot_not_timing_telemetry": "index, name, uuid, driver_version, memory.total [MiB], clocks.current.sm [MHz], clocks.current.memory [MHz], temperature.gpu, power.draw [W]\n0, NVIDIA GeForce RTX 5090, GPU-8a1f47f6-0655-97e5-8ed5-433be97af788, 595.91.07, 32607 MiB, 2415 MHz, 13801 MHz, 35, 65.02 W\n1, NVIDIA GeForce RTX 5090, GPU-fcc63da0-f1b3-74c7-f868-681a40ef5f03, 595.91.07, 32607 MiB, 2400 MHz, 13801 MHz, 36, 52.94 W\n", + "source_scope": "Existing personal PR head remains on its historical base; this is an isolated port, not an implicit rebase", + "files": { + "summary.json": { + "sha256": "ffd4594c2964dc0ed99e8a53007e3d213df478851f87e57356cc091d927d8c82", + "bytes": 341989 + }, + "worker.py": { + "sha256": "01d1ab94ead96f8280ec53bd2232e08a6000ea5a9f283f870e4fcdc4b9aa1a63", + "bytes": 12889 + }, + "validation.json": { + "sha256": "6fb48828ef456594ff5b41baa293bf349855902531847ae946d497da86a1df87", + "bytes": 5673 + }, + "analyze.py": { + "sha256": "9ee530b8e3501d8c6f03401b66ac6183dd1b08b992d00ef64f1330402ff2baa7", + "bytes": 9918 + }, + "report.py": { + "sha256": "71dad5c5ae7d0295b7aafcca62e326535c14b4ebe15832d3ab1689b946ac81bd", + "bytes": 10458 + }, + "README.md": { + "sha256": "8e4f1976e589dc64751ddb4f4874215af3c61803356e1a527b5006b2bff8b068", + "bytes": 9479 + }, + "port-to-2ba617bc.patch": { + "sha256": "6983746e7c1d8f2ba11c28ce5ab3d1557f35d1c8b5a09d82ed8bacf5bdee3471", + "bytes": 25373 + }, + "ACCURACY_TABLE.md": { + "sha256": "30abb6d1f5ae8449a4e4e3e2d9ce75a8deaeb3765ab5c857bfad1f99b107a72e", + "bytes": 27863 + }, + "pro_cpu_load_check.json": { + "sha256": "6869e36cf20efee3e60091d3a6963e7eddb4302d3fb2e68bcdd339b566e11c83", + "bytes": 5256 + }, + "REPORT.md": { + "sha256": "3c2d002f8172e90ee7c60a950c3eabd9c47f38d0be90647d8c5f0bc5f8be40b9", + "bytes": 20039 + }, + "runs.json": { + "sha256": "f86945b3268e0818e46d256a496f0080d0a754818720e00ccf4e4977eaade31e", + "bytes": 953302 + }, + "run_matrix.py": { + "sha256": "647b95fc9437061d6b8875fdea9a2850c0e57cce6b4453830e6579bffea3764e", + "bytes": 4821 + } + } +} diff --git a/doc/development/ecs-validation-20261025/report.py b/doc/development/ecs-validation-20261025/report.py new file mode 100644 index 0000000000..f6a2b86107 --- /dev/null +++ b/doc/development/ecs-validation-20261025/report.py @@ -0,0 +1,223 @@ +"""Render three-column accuracy, repeat-band gates and first-peak performance.""" + +# ruff: noqa: T201, ANN001, ANN201, RUF001 -- manual measurement report +from collections import Counter +import argparse +import json +from pathlib import Path +import subprocess +import sys + +import numpy as np + +SCRIPT_DIR = Path(__file__).resolve().parent +P = argparse.ArgumentParser() +P.add_argument("--root", type=Path, default=SCRIPT_DIR) +HERE = P.parse_args().root.resolve() +subprocess.run( + [sys.executable, str(SCRIPT_DIR / "analyze.py"), "--root", str(HERE)], check=True +) +data = json.loads((HERE / "summary.json").read_text()) +states = data["statuses"] +groups = data["comparisons"] + + +def select(model, n, left, right): + return [ + g + for g in groups + if (g["model"], g["n"], g["left"], g["right"]) == (model, n, left, right) + ] + + +def band(model, n, left, right, field): + gs = select(model, n, left, right) + if not gs: + return None + return max(g["metrics"][field]["max_abs_range"][1] for g in gs) + + +def strict_status(model, n, left, right): + gs = select(model, n, left, right) + if not gs: + return "N/A" + if ( + min( + min(g["left_completed_processes"], g["right_completed_processes"]) + for g in gs + ) + < 3 + ): + return "INCOMPLETE" + return "PASS" if all(g["all_passed"] for g in gs) else "FAIL" + + +def band_status(model, n, mode): + ratios = [] + for field in ("energy", "forces", "virial", "stress"): + cross = band(model, n, mode, "TORCH", field) + own = band(model, n, "TORCH", "TORCH", field) + if cross is None or own is None: + return "N/A" + ratios.append(cross / own if own else (0 if cross == 0 else float("inf"))) + return ("PASS" if max(ratios) <= 3 else "FAIL") + f" ({max(ratios):.3f}x)" + + +def summary_cell(model, n, mode, field): + ss = [s for s in states if (s["model"], s["n"], s["mode"]) == (model, n, mode)] + good = sum(s["status"] == "completed" for s in ss) + if not good: + return "OOM" if any(s["status"] == "oom" for s in ss) else "pending/failed" + own = band(model, n, mode, mode, field) + text = f"self max_abs={own:.4g}" if own is not None else "self pending" + if mode != "TORCH": + cross = band(model, n, mode, "TORCH", field) + pure = band(model, n, "TORCH", "TORCH", field) + text += ( + f"; vs Torch={cross:.4g}" + if cross is not None + else "; Torch ref unavailable" + ) + if cross is not None and pure is not None: + ratio = cross / pure if pure else (0 if cross == 0 else float("inf")) + text += f"; band×{ratio:.3g}" + return text + (f" ({good}/3 processes)" if good < 3 else "") + + +lines = [ + "# ECS current-master comparison — measured 2026-10-25, finalized 2026-10-26", + "", + "BASE: 2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c, including merged residual-inplace #6058. Old668-base numbers are not substituted. Candidate is the isolated port of PR#2; its AOT branch-specialization issue remains unresolved.", + "", + f"Recorded {len(states)}/135 process results: {dict(Counter(s['status'] for s in states))}. Missing cells are NOT passes. Three processes ×3 frames ×3 accuracy repeats per arm; 8 extra warmups/30 wall+Event samples, separate steady replay. Same physical GPU within each case. TF32/AMP off.", + "", + "## Three accuracy columns", + "", + "Each field: worst pairwise max-absolute difference over same-frame outputs; self includes within/across-process repeats. Scientific band multiplier = worst deviation from compiled TORCH / TORCH own worst repeat max_abs, separately per field/model/size/system. <=3 is the meeting criterion, not a replacement for the fixed strict elementwise gate. Zero repeat band requires zero cross difference. Energy/virial eV, force eV/Angstrom, stress eV/Angstrom^3.", + "", + "| Model/system | Atoms | Output | Compiled Torch | Current master | Candidate |", + "| --- | ---: | --- | --- | --- | --- |", +] +cases = [ + (m, n) for m in ("Neo", "NeoCu", "Nano", "Mini", "Pro") for n in (96, 512, 4096) +] +gate_lines = [ + "## Three-column PASS/FAIL overview", + "", + "Strict columns cover all four fields: Torch self-repeat; master self-repeat and versus Torch; candidate self-repeat, versus Torch and versus master. A missing Torch reference is N/A, never PASS. The meeting band is a separately reported empirical diagnostic, not a rigorous error bound or a waiver of strict failure.", + "", + "| Model/system | Atoms | Compiled Torch | Current master | Candidate |", + "| --- | ---: | --- | --- | --- |", +] +for model, n in cases: + torch_gate = strict_status(model, n, "TORCH", "TORCH") + master_gate = f"strict self={strict_status(model, n, 'BASE', 'BASE')}; vs Torch={strict_status(model, n, 'BASE', 'TORCH')}; band={band_status(model, n, 'BASE')}" + candidate_gate = f"strict self={strict_status(model, n, 'ECS', 'ECS')}; vs Torch={strict_status(model, n, 'ECS', 'TORCH')}; vs master={strict_status(model, n, 'ECS', 'BASE')}; band={band_status(model, n, 'ECS')}" + gate_lines.append( + f"| {model} | {n} | strict self={torch_gate} | {master_gate} | {candidate_gate} |" + ) +first_table = lines.index("## Three accuracy columns") +lines[first_table:first_table] = [*gate_lines, ""] +for model, n in cases: + for field in ("energy", "forces", "virial", "stress"): + cells = [ + summary_cell(model, n, mode, field) for mode in ("TORCH", "BASE", "ECS") + ] + lines.append(f"| {model} | {n} | {field} | " + " | ".join(cells) + " |") +lines += [ + "", + "Strict per-element atol1e-5/rtol1e-4 and finite results, mean_abs/max_relative and within/across detail remain in ACCURACY_TABLE.md and summary.json. Pure-reference OOM prevents band acceptance. Band PASS does not silently erase strict FAIL.", + "", + "## Timing and memory — process medians and worst capacity", + "", + "Compilation excluded from timing, included in first/full memory. This independent-process protocol does not freeze all generated autotune choices: no stable isolated speedup is inferred solely from these percentages. GB=1e9B. Both allocated/reserved raw bytes are retained in result.json. Numbers are preliminary until 3 processes per arm complete.", + "", + "| Model/system | Atoms | Mode | Processes | Wall P50 ms | Wall P90 ms | Event P50 ms | First alloc GB | Full peak incl first GB | Steady alloc GB |", + "| --- | ---: | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |", +] +for model, n in cases: + for mode in ("TORCH", "BASE", "ECS"): + ss = [ + s + for s in states + if (s["model"], s["n"], s["mode"], s["status"]) + == (model, n, mode, "completed") + ] + if not ss: + continue + raw = [ + json.loads((HERE / "results" / s["run"] / "result.json").read_text()) + for s in ss + ] + vals = [ + np.median([r["steady_wall_ms"][k] for r in raw]) for k in ("median", "p90") + ] + vals += [np.median([r["steady_event_ms"]["median"] for r in raw])] + vals += [ + max(r[k]["allocated"] for r in raw) / 1e9 + for k in ("first_peak", "complete_peak", "steady_peak") + ] + lines.append( + f"| {model} | {n} | {mode} | {len(raw)}/3 | " + + " | ".join(f"{v:.6f}" for v in vals) + + " |" + ) +lines += [ + "", + "## Route and acceptance limits", + "", + "Nano/Mini/Pro candidate is native fallback, not demonstrated ECS acceleration. Neo dispatch must be checked against generated wrappers; current single-cohort specialization must not be described as 80 runtime batches. Pro-MPtrj is not OMat24-Pro; original checkpoint unmodified, reader-only legacy metadata alias applies equally to all arms. H20/PT2/C++/training and unmeasured larger models are not accepted by this matrix.", + "", + "Upstream review also requires focused guard/alias tests, no new public fine-grained development switch for a merge-ready path, freeze-time policy/selection where applicable, optional-Triton CPU safety and real CI approval. Current port keeps the old default-off experimental switch pending policy resolution. Do not submit as ready-to-merge.", +] +lines += [ + "", + "## Candidate vs current-master changes", + "", + "Positive percentage means reduction/improvement; negative means increase. Medians of independent process quantiles, not a controlled paired significance estimate. Fallback timing variation is not attributed to ECS.", + "", + "| Model/system | Atoms | Time reduction % | First-inclusive full alloc reduction % | Steady alloc reduction % | Candidate route |", + "| --- | ---: | ---: | ---: | ---: | --- |", +] +for model, n in cases: + by_mode = {} + for mode in ("BASE", "ECS"): + rows = [ + json.loads((HERE / "results" / s["run"] / "result.json").read_text()) + for s in states + if (s["model"], s["n"], s["mode"], s["status"]) + == (model, n, mode, "completed") + ] + if len(rows) == 3: + by_mode[mode] = ( + float(np.median([r["steady_wall_ms"]["median"] for r in rows])), + max(r["complete_peak"]["allocated"] for r in rows), + max(r["steady_peak"]["allocated"] for r in rows), + ) + if len(by_mode) != 2: + lines.append(f"| {model} | {n} | N/A | N/A | N/A | incomplete/OOM |") + continue + changes = [ + 100 * (b - c) / b for b, c in zip(by_mode["BASE"], by_mode["ECS"], strict=True) + ] + route = ( + "single-cohort specialized, not bounded runtime batching" + if model.startswith("Neo") + else "native fallback" + ) + lines.append( + f"| {model} | {n} | " + + " | ".join(f"{v:.4f}" for v in changes) + + f" | {route} |" + ) +(HERE / "REPORT.md").write_text("\n".join(lines) + "\n") +# Generated public evidence only; never copy advisor or private handoff notes. +public_dir = HERE / "candidate/doc/development" +if public_dir.is_dir(): + (public_dir / "ecs-current-master-validation.md").write_text( + "\n".join(lines) + "\n" + ) + (public_dir / "ecs-current-master-validation.json").write_text( + json.dumps(data, indent=2, ensure_ascii=False, allow_nan=False) + "\n" + ) +print("REPORT updated", len(states)) diff --git a/doc/development/ecs-validation-20261025/run_matrix.py b/doc/development/ecs-validation-20261025/run_matrix.py new file mode 100644 index 0000000000..fb4214b4f1 --- /dev/null +++ b/doc/development/ecs-validation-20261025/run_matrix.py @@ -0,0 +1,119 @@ +"""Run the disclosed three-arm manual CUDA matrix with explicit source/model paths.""" + +# ruff: noqa: T201 -- manual benchmark +import argparse +import json +import os +from pathlib import Path +import subprocess +import sys + +P = argparse.ArgumentParser(description=__doc__) +P.add_argument("--base-root", type=Path, required=True) +P.add_argument("--candidate-root", type=Path, required=True) +P.add_argument("--model-map", type=Path, required=True) +P.add_argument("--out-root", type=Path, required=True) +P.add_argument("--gpu", type=int, required=True) +P.add_argument( + "--models", nargs="+", choices=["Neo", "Nano", "Mini", "Pro"], required=True +) +P.add_argument( + "--sizes", type=int, nargs="+", choices=[96, 512, 4096], default=[96, 512, 4096] +) +P.add_argument("--repeats", type=int, default=3) +P.add_argument("--skip-existing", action="store_true") +a = P.parse_args() +models = json.loads(a.model_map.read_text()) +assert a.repeats >= 3 +for root in (a.base_root, a.candidate_root): + assert (root / "deepmd").is_dir(), root +records = [] +for model in a.models: + checkpoint = Path(models[model]).resolve() + assert checkpoint.is_file(), checkpoint + for system in ["diamond", "bcccu"] if model == "Neo" else ["diamond"]: + dims = ( + {96: (2, 2, 3), 512: (4, 4, 4), 4096: (8, 8, 8)} + if system == "diamond" + else {96: (4, 4, 3), 512: (8, 8, 4), 4096: (16, 16, 8)} + ) + label = model if system == "diamond" else model + "Cu" + for n in a.sizes: + for repeat in range(a.repeats): + for mode in ( + ["TORCH", "BASE", "ECS"] + if repeat % 2 == 0 + else ["ECS", "BASE", "TORCH"] + ): + out = ( + a.out_root.resolve() + / "results" + / f"{label}_n{n}_{mode}_p{repeat}" + ) + if (out / "result.json").exists(): + if a.skip_existing: + continue + raise FileExistsError( + f"Use a fresh output root; not overwriting {out}" + ) + busy = subprocess.check_output( + [ + "nvidia-smi", + "-i", + str(a.gpu), + "--query-compute-apps=pid", + "--format=csv,noheader", + ], + text=True, + ).strip() + if busy: + raise RuntimeError( + f"GPU busy; do not kill other processes: {busy}" + ) + out.parent.mkdir(parents=True, exist_ok=True) + command = [ + sys.executable, + str(Path(__file__).with_name("worker.py")), + "--root", + str( + ( + a.candidate_root if mode == "ECS" else a.base_root + ).resolve() + ), + "--model", + str(checkpoint), + "--out", + str(out), + "--cache", + str(a.out_root.resolve() / "cache" / f"{label}_{mode}"), + "--gpu", + str(a.gpu), + "--mode", + mode, + "--nrep", + "2", + "--repeat-cell", + *map(str, dims[n]), + "--system", + system, + "--warmup", + "8", + "--samples", + "30", + ] + print("START", out.name, flush=True) + with out.with_suffix(".log").open("w") as stream: + proc = subprocess.run( + command, + stdout=stream, + stderr=subprocess.STDOUT, + env=dict(os.environ, PYTHONHASHSEED=str(repeat % 2)), + check=False, + ) + records.append( + {"run": out.name, "exit": proc.returncode, "command": command} + ) + (a.out_root / f"commands_gpu{a.gpu}.json").write_text( + json.dumps(records, indent=2) + ) + print("DONE", out.name, proc.returncode, flush=True) diff --git a/doc/development/ecs-validation-20261025/runs.json b/doc/development/ecs-validation-20261025/runs.json new file mode 100644 index 0000000000..f1dcf559b2 --- /dev/null +++ b/doc/development/ecs-validation-20261025/runs.json @@ -0,0 +1,23956 @@ +{ + "protocol": "Three-mode current-master comparison; independent-process timing, not matched-autotune significance", + "runs": [ + { + "run": "Mini_n4096_BASE_p0", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 4096, + "started": 1792867222.9062676, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 654988, + "first_peak": { + "allocated": 7452141568, + "reserved": 8095006720 + }, + "steady_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "full_window_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "steady_wall_ms": { + "median": 61.04267225600779, + "p90": 61.18058627471328, + "min": 60.93953177332878, + "max": 61.24725332483649, + "samples": [ + 61.02215778082609, + 61.07389507815242, + 61.09322188422084, + 61.18041696026921, + 61.24725332483649, + 61.0411842353642, + 61.17264227941632, + 61.070218216627836, + 60.993232764303684, + 60.988062992691994, + 61.07923621311784, + 61.12275831401348, + 60.93953177332878, + 60.95202500000596, + 60.97432691603899, + 61.08883395791054, + 61.10132718458772, + 61.04416027665138, + 61.025633942335844, + 61.182110104709864, + 61.00085796788335, + 61.00742006674409, + 61.00931391119957, + 61.06414692476392, + 60.98863482475281, + 61.14774523302913, + 60.94228709116578, + 61.19153695181012, + 61.013901606202126, + 60.98222220316529 + ] + }, + "steady_event_ms": { + "median": 60.99692726135254, + "p90": 61.13455924987793, + "samples": [ + 60.9666862487793, + 61.02540969848633, + 61.03955078125, + 61.134239196777344, + 61.20169448852539, + 60.99555206298828, + 61.12579345703125, + 61.023136138916016, + 60.947872161865234, + 60.94099044799805, + 61.02560043334961, + 61.076480865478516, + 60.89363098144531, + 60.90675354003906, + 60.92841720581055, + 61.04182434082031, + 61.054622650146484, + 60.9983024597168, + 60.97929763793945, + 61.1374397277832, + 60.95500946044922, + 60.96249771118164, + 60.9640007019043, + 61.018463134765625, + 60.94377517700195, + 61.102718353271484, + 60.89596939086914, + 61.146240234375, + 60.96451187133789, + 60.937313079833984 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 59823.374308180064, + 68.00634087994695, + 61.9095335714519, + 61.565924901515245, + 61.38765811920166, + 61.197859700769186, + 61.3702149130404, + 61.297438107430935, + 61.10470416024327 + ], + "event_ms_including_first": [ + 59823.1171875, + 67.97103881835938, + 61.87433624267578, + 61.534175872802734, + 61.357086181640625, + 61.16611099243164, + 61.33987045288086, + 61.266849517822266, + 61.07334518432617 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/x7/cx77b35dkue4opbxvc6mlqb5sii5fzxrki6ez5i7ikjg6nxiggnt.py" + ], + "routes": [ + { + "sha256": "6ed547ece6f59134ef706206c56fd7594f455b73d9fd0d524d07fcecf71c83a7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "elapsed_s": 68.08781576156616 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_BASE_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" + } + } + }, + { + "run": "Mini_n4096_BASE_p1", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 4096, + "started": 1792867443.203055, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 654988, + "first_peak": { + "allocated": 7452141568, + "reserved": 8095006720 + }, + "steady_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "full_window_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "steady_wall_ms": { + "median": 61.09776790253818, + "p90": 61.183441849425435, + "min": 61.00971112027764, + "max": 61.2781192176044, + "samples": [ + 61.02943932637572, + 61.20341829955578, + 61.136902309954166, + 61.19725480675697, + 61.10348924994469, + 61.0364219173789, + 61.096475925296545, + 61.13603012636304, + 61.070676892995834, + 61.062600929290056, + 61.08805863186717, + 61.15029705688357, + 61.01084407418966, + 61.03906687349081, + 61.084823217242956, + 61.00971112027764, + 61.044087167829275, + 61.03205308318138, + 61.0099621117115, + 61.1819070763886, + 61.053925193846226, + 61.12477881833911, + 61.099059879779816, + 61.11292587593198, + 61.06857303529978, + 61.105913016945124, + 61.13061960786581, + 61.2781192176044, + 61.11619295552373, + 61.13417726010084 + ] + }, + "steady_event_ms": { + "median": 61.05214500427246, + "p90": 61.13870086669922, + "samples": [ + 60.97401428222656, + 61.155616760253906, + 61.091552734375, + 61.15235137939453, + 61.056640625, + 60.990718841552734, + 61.050689697265625, + 61.09001541137695, + 61.02544021606445, + 61.01705551147461, + 61.04364776611328, + 61.105342864990234, + 60.966209411621094, + 60.99388885498047, + 61.0173454284668, + 60.96156692504883, + 60.999168395996094, + 60.98713684082031, + 60.96464157104492, + 61.137184143066406, + 61.00921630859375, + 61.07932662963867, + 61.0536003112793, + 61.06729507446289, + 61.023841857910156, + 61.06070327758789, + 61.08390426635742, + 61.231327056884766, + 61.0709114074707, + 61.089054107666016 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 60186.58738071099, + 68.39554198086262, + 61.693113297224045, + 61.40699191018939, + 61.52066681534052, + 61.51946494355798, + 61.25695863738656, + 61.32363388314843, + 61.18846917524934 + ], + "event_ms_including_first": [ + 60186.32421875, + 68.35997009277344, + 61.6607666015625, + 61.37535858154297, + 61.490177154541016, + 61.48886489868164, + 61.22547149658203, + 61.29302215576172, + 61.157344818115234 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/x7/cx77b35dkue4opbxvc6mlqb5sii5fzxrki6ez5i7ikjg6nxiggnt.py" + ], + "routes": [ + { + "sha256": "6ed547ece6f59134ef706206c56fd7594f455b73d9fd0d524d07fcecf71c83a7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "elapsed_s": 68.44814229011536 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_BASE_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" + } + } + }, + { + "run": "Mini_n4096_BASE_p2", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 4096, + "started": 1792867669.8973494, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 654988, + "first_peak": { + "allocated": 7452141568, + "reserved": 8095006720 + }, + "steady_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "full_window_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "steady_wall_ms": { + "median": 61.163411708548665, + "p90": 61.23953149653971, + "min": 61.0970463603735, + "max": 61.41827302053571, + "samples": [ + 61.163251753896475, + 61.257889959961176, + 61.19335815310478, + 61.230799183249474, + 61.163571663200855, + 61.15607777610421, + 61.14509701728821, + 61.1474122852087, + 61.19094416499138, + 61.13757286220789, + 61.115161050111055, + 61.1962229013443, + 61.12717278301716, + 61.18023442104459, + 61.0973471775651, + 61.12629175186157, + 61.23749166727066, + 61.192556750029325, + 61.222052201628685, + 61.41827302053571, + 61.190002132207155, + 61.19306804612279, + 61.168260872364044, + 61.10711582005024, + 61.099059879779816, + 61.133624985814095, + 61.11720483750105, + 61.283599119633436, + 61.0970463603735, + 61.13902572542429 + ] + }, + "steady_event_ms": { + "median": 61.11276817321777, + "p90": 61.193518829345706, + "samples": [ + 61.09695816040039, + 61.21036911010742, + 61.146366119384766, + 61.184383392333984, + 61.1163215637207, + 61.109214782714844, + 61.098655700683594, + 61.10163116455078, + 61.14495849609375, + 61.09174346923828, + 61.068607330322266, + 61.150657653808594, + 61.08063888549805, + 61.13478469848633, + 61.051937103271484, + 61.07990264892578, + 61.191646575927734, + 61.14720153808594, + 61.175296783447266, + 61.36934280395508, + 61.143009185791016, + 61.14723205566406, + 61.12255859375, + 61.06166458129883, + 61.05276870727539, + 61.08745574951172, + 61.07084655761719, + 61.23756790161133, + 61.05209732055664, + 61.0931510925293 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 60133.898738306016, + 68.93159495666623, + 62.07662681117654, + 61.635542660951614, + 61.542739160358906, + 61.60901393741369, + 61.550803016871214, + 61.4536302164197, + 61.17625627666712 + ], + "event_ms_including_first": [ + 60133.625, + 68.89373016357422, + 62.0417594909668, + 61.59987258911133, + 61.50998306274414, + 61.57497787475586, + 61.5195198059082, + 61.42176055908203, + 61.144798278808594 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/x7/cx77b35dkue4opbxvc6mlqb5sii5fzxrki6ez5i7ikjg6nxiggnt.py" + ], + "routes": [ + { + "sha256": "6ed547ece6f59134ef706206c56fd7594f455b73d9fd0d524d07fcecf71c83a7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "elapsed_s": 68.38445401191711 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_BASE_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" + } + } + }, + { + "run": "Mini_n4096_ECS_p0", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 4096, + "started": 1792867296.1695714, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 654988, + "first_peak": { + "allocated": 7452141568, + "reserved": 8095006720 + }, + "steady_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "full_window_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "steady_wall_ms": { + "median": 60.98957592621446, + "p90": 61.03120888583362, + "min": 60.900348238646984, + "max": 61.073394026607275, + "samples": [ + 61.01248972117901, + 61.03119486942887, + 61.00912392139435, + 60.91094808652997, + 60.97827525809407, + 60.976872220635414, + 61.06885615736246, + 61.01922178640962, + 60.99050818011165, + 61.02008279412985, + 60.958187095820904, + 60.95267599448562, + 60.9951070509851, + 61.005236115306616, + 60.96400786191225, + 61.073394026607275, + 60.92730909585953, + 60.98353490233421, + 60.95816660672426, + 60.93218829482794, + 60.951785184443, + 60.9962590970099, + 61.02017406374216, + 60.922480188310146, + 61.03133503347635, + 60.942837968468666, + 61.027878895401955, + 61.00927386432886, + 60.900348238646984, + 60.98864367231727 + ] + }, + "steady_event_ms": { + "median": 60.94443130493164, + "p90": 60.98493957519531, + "samples": [ + 60.95686340332031, + 60.984798431396484, + 60.96412658691406, + 60.86556625366211, + 60.932289123535156, + 60.93209457397461, + 61.02377700805664, + 60.97200012207031, + 60.944862365722656, + 60.97459030151367, + 60.912513732910156, + 60.90748977661133, + 60.95027160644531, + 60.9598388671875, + 60.9183349609375, + 61.0266227722168, + 60.88025665283203, + 60.93952178955078, + 60.913089752197266, + 60.887168884277344, + 60.906944274902344, + 60.95142364501953, + 60.97520065307617, + 60.877342224121094, + 60.986209869384766, + 60.898494720458984, + 60.98195266723633, + 60.963905334472656, + 60.85561752319336, + 60.944000244140625 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 60283.80609024316, + 68.8195270486176, + 61.977081932127476, + 61.584239825606346, + 61.37083610519767, + 61.32127298042178, + 61.13739591091871, + 61.443001963198185, + 61.05743395164609 + ], + "event_ms_including_first": [ + 60283.546875, + 68.78253173828125, + 61.945152282714844, + 61.551551818847656, + 61.34025573730469, + 61.29004669189453, + 61.106815338134766, + 61.40435028076172, + 61.02656173706055 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/lc/clcey24vo3vhag6juyof3cin4zl6vo4cq6w6wjqwb3ii4k3p4mdv.py" + ], + "routes": [ + { + "sha256": "ba83281ec08f12427203faf70f2514e44c06c842c6326c3510b69dd7375504c3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "elapsed_s": 68.5319676399231 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_ECS_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" + } + } + }, + { + "run": "Mini_n4096_ECS_p1", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 4096, + "started": 1792867369.8683994, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 654988, + "first_peak": { + "allocated": 7452141568, + "reserved": 8095006720 + }, + "steady_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "full_window_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "steady_wall_ms": { + "median": 61.07865693047643, + "p90": 61.165013862773776, + "min": 60.97889319062233, + "max": 61.9726711884141, + "samples": [ + 61.02394871413708, + 61.13261403515935, + 61.9726711884141, + 61.350204050540924, + 61.018256936222315, + 61.080154962837696, + 61.12186284735799, + 61.051000375300646, + 61.07715889811516, + 61.0645548440516, + 61.15341279655695, + 60.97889319062233, + 61.03958794847131, + 61.04878522455692, + 61.13497819751501, + 61.094441916793585, + 61.03859608992934, + 61.095863580703735, + 61.004661954939365, + 61.16234976798296, + 61.08914082869887, + 61.081716790795326, + 61.1001318320632, + 61.01345922797918, + 61.18899071589112, + 61.08778901398182, + 61.07305083423853, + 61.0268241725862, + 61.06699910014868, + 61.07644829899073 + ] + }, + "steady_event_ms": { + "median": 61.03289604187012, + "p90": 61.119131088256836, + "samples": [ + 60.96467208862305, + 61.083839416503906, + 61.92348861694336, + 61.30335998535156, + 60.9719352722168, + 61.03398513793945, + 61.07593536376953, + 61.00371170043945, + 61.03180694580078, + 61.01910400390625, + 61.108062744140625, + 60.932830810546875, + 60.99353790283203, + 61.00364685058594, + 61.0873908996582, + 61.048160552978516, + 60.99273681640625, + 61.04995346069336, + 60.9587516784668, + 61.11648178100586, + 61.0432014465332, + 61.03583908081055, + 61.054080963134766, + 60.967201232910156, + 61.142974853515625, + 61.04179382324219, + 61.026302337646484, + 60.980255126953125, + 61.02006530761719, + 61.030174255371094 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 59904.77965306491, + 68.51080991327763, + 62.0174347423017, + 61.49318441748619, + 61.26428255811334, + 61.232542153447866, + 61.14294286817312, + 61.394177842885256, + 61.16898311302066 + ], + "event_ms_including_first": [ + 59904.5234375, + 68.47503662109375, + 61.982398986816406, + 61.46131134033203, + 61.23273468017578, + 61.20051193237305, + 61.11145782470703, + 61.36249542236328, + 61.13734436035156 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/lc/clcey24vo3vhag6juyof3cin4zl6vo4cq6w6wjqwb3ii4k3p4mdv.py" + ], + "routes": [ + { + "sha256": "ba83281ec08f12427203faf70f2514e44c06c842c6326c3510b69dd7375504c3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "elapsed_s": 68.14441180229187 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_ECS_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" + } + } + }, + { + "run": "Mini_n4096_ECS_p2", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 4096, + "started": 1792867743.65348, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 654988, + "first_peak": { + "allocated": 7452141568, + "reserved": 8095006720 + }, + "steady_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "full_window_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "steady_wall_ms": { + "median": 60.97031175158918, + "p90": 61.05337189510465, + "min": 60.8975887298584, + "max": 61.115370597690344, + "samples": [ + 60.98806019872427, + 61.07715889811516, + 61.032854951918125, + 61.030720826238394, + 60.9822990372777, + 61.050728894770145, + 61.1080676317215, + 60.9194808639586, + 60.97125867381692, + 60.96936482936144, + 60.985765885561705, + 60.94291480258107, + 60.8975887298584, + 60.91742683202028, + 60.944739263504744, + 61.01744715124369, + 60.93149306252599, + 60.91032410040498, + 60.975026339292526, + 60.9655580483377, + 60.928798746317625, + 60.92679500579834, + 60.940401162952185, + 60.964205767959356, + 61.115370597690344, + 60.971619095653296, + 60.9713988378644, + 60.998078901320696, + 60.96720090135932, + 60.914361383765936 + ] + }, + "steady_event_ms": { + "median": 60.924991607666016, + "p90": 61.00752067565918, + "samples": [ + 60.932769775390625, + 61.03084945678711, + 60.98780822753906, + 60.9727668762207, + 60.926143646240234, + 61.00492858886719, + 61.062591552734375, + 60.87363052368164, + 60.92585754394531, + 60.92438507080078, + 60.9400634765625, + 60.897342681884766, + 60.84476852416992, + 60.87180709838867, + 60.89948654174805, + 60.97135925292969, + 60.88643264770508, + 60.86470413208008, + 60.92969512939453, + 60.920318603515625, + 60.883487701416016, + 60.88249588012695, + 60.89491271972656, + 60.91836929321289, + 61.07097625732422, + 60.92723083496094, + 60.92559814453125, + 60.95344161987305, + 60.92182540893555, + 60.868896484375 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 60466.39922820032, + 67.97197321429849, + 61.87120825052261, + 61.44612608477473, + 61.397894751280546, + 61.66181433945894, + 62.994180247187614, + 61.37062283232808, + 61.08261877670884 + ], + "event_ms_including_first": [ + 60466.12109375, + 67.93590545654297, + 61.83747100830078, + 61.41292953491211, + 61.36761474609375, + 61.615745544433594, + 62.964351654052734, + 61.33865737915039, + 61.050048828125 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/lc/clcey24vo3vhag6juyof3cin4zl6vo4cq6w6wjqwb3ii4k3p4mdv.py" + ], + "routes": [ + { + "sha256": "ba83281ec08f12427203faf70f2514e44c06c842c6326c3510b69dd7375504c3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + }, + "elapsed_s": 68.71718192100525 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_ECS_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" + } + } + }, + { + "run": "Mini_n4096_TORCH_p0", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 4096, + "started": 1792867145.494091, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 654988, + "first_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "steady_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "full_window_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "steady_wall_ms": { + "median": 122.26220243610442, + "p90": 122.41586772724986, + "min": 122.13869392871857, + "max": 139.66630212962627, + "samples": [ + 122.24502488970757, + 122.37802613526583, + 122.36830731853843, + 122.17809772118926, + 122.18895880505443, + 122.24624725058675, + 122.25467199459672, + 122.20452772453427, + 139.66630212962627, + 122.13869392871857, + 122.19808576628566, + 122.42885213345289, + 122.19564197584987, + 122.19670368358493, + 122.30909615755081, + 122.48423602432013, + 122.31219094246626, + 122.25418211892247, + 122.36553290858865, + 122.41442501544952, + 122.3484599031508, + 122.26623483002186, + 122.2110609523952, + 122.25817004218698, + 122.20055097714067, + 122.24678788334131, + 122.30692198500037, + 122.41428531706333, + 122.27693479508162, + 122.31923500075936 + ] + }, + "steady_event_ms": { + "median": 122.21728134155273, + "p90": 122.37042541503907, + "samples": [ + 122.18745422363281, + 122.3318099975586, + 122.32268524169922, + 122.13314819335938, + 122.1435546875, + 122.20121765136719, + 122.20883178710938, + 122.16063690185547, + 139.6134796142578, + 122.0923843383789, + 122.15225219726562, + 122.38329315185547, + 122.14883422851562, + 122.1513900756836, + 122.26102447509766, + 122.43885040283203, + 122.26537322998047, + 122.20877075195312, + 122.31993865966797, + 122.36870574951172, + 122.30271911621094, + 122.22163391113281, + 122.16595458984375, + 122.21292877197266, + 122.15494537353516, + 122.20214080810547, + 122.26182556152344, + 122.3689956665039, + 122.2311019897461, + 122.27388763427734 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 60576.916771009564, + 128.13726486638188, + 122.89219675585628, + 122.33999371528625, + 122.38834565505385, + 122.22636863589287, + 122.60594684630632, + 122.36158410087228, + 122.20882624387741 + ], + "event_ms_including_first": [ + 60576.69140625, + 128.1009979248047, + 122.86009979248047, + 122.30815887451172, + 122.35711669921875, + 122.19583892822266, + 122.57417297363281, + 122.3304672241211, + 122.1778564453125 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/o2/co2b57k6vquuozw2btfvvh3khmwsnn7pzkgpiszs2tpco6zodq3i.py" + ], + "routes": [ + { + "sha256": "d9cbf3a17f5f5b687bee6d5793efbaf9c1726545fed7d540125793f31fe24a8f", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "elapsed_s": 73.1863534450531 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_TORCH_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" + } + } + }, + { + "run": "Mini_n4096_TORCH_p1", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 4096, + "started": 1792867516.4544158, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 654988, + "first_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "steady_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "full_window_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "steady_wall_ms": { + "median": 122.27084231562912, + "p90": 122.37977255135775, + "min": 122.14242480695248, + "max": 122.43114039301872, + "samples": [ + 122.27325234562159, + 122.30976112186909, + 122.32868699356914, + 122.1912782639265, + 122.21209704875946, + 122.25636979565024, + 122.22587317228317, + 122.20507394522429, + 122.29625601321459, + 122.21181718632579, + 122.23479989916086, + 122.3161038942635, + 122.14242480695248, + 122.29083525016904, + 122.3339568823576, + 122.18738999217749, + 122.29597475379705, + 122.27269075810909, + 122.18696996569633, + 122.22475092858076, + 122.40086309611797, + 122.26899387314916, + 122.24822491407394, + 122.24787380546331, + 122.33703304082155, + 122.3774291574955, + 122.43114039301872, + 122.2524931654334, + 122.29443294927478, + 122.42865609005094 + ] + }, + "steady_event_ms": { + "median": 122.21646499633789, + "p90": 122.33288345336913, + "samples": [ + 122.2059555053711, + 122.26150512695312, + 122.28348541259766, + 122.14486694335938, + 122.1659164428711, + 122.20976257324219, + 122.17852783203125, + 122.15939331054688, + 122.25023651123047, + 122.16492462158203, + 122.19062042236328, + 122.27091217041016, + 122.09613037109375, + 122.24476623535156, + 122.28755187988281, + 122.14060974121094, + 122.24992370605469, + 122.22675323486328, + 122.14112091064453, + 122.17804718017578, + 122.35497283935547, + 122.2231674194336, + 122.20191955566406, + 122.20095825195312, + 122.28844451904297, + 122.33042907714844, + 122.38304138183594, + 122.20585632324219, + 122.24864196777344, + 122.38317108154297 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 59596.018130891025, + 128.29603906720877, + 123.01529431715608, + 122.51695292070508, + 122.56631581112742, + 122.35965626314282, + 122.58337810635567, + 123.03007207810879, + 122.2479548305273 + ], + "event_ms_including_first": [ + 59595.765625, + 128.25350952148438, + 122.98255920410156, + 122.48310089111328, + 122.53520202636719, + 122.32860565185547, + 122.5514907836914, + 122.9916763305664, + 122.2161636352539 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/o2/co2b57k6vquuozw2btfvvh3khmwsnn7pzkgpiszs2tpco6zodq3i.py" + ], + "routes": [ + { + "sha256": "d9cbf3a17f5f5b687bee6d5793efbaf9c1726545fed7d540125793f31fe24a8f", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "elapsed_s": 72.17204761505127 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_TORCH_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" + } + } + }, + { + "run": "Mini_n4096_TORCH_p2", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 4096, + "started": 1792867592.8907924, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 654988, + "first_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "steady_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "full_window_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "steady_wall_ms": { + "median": 122.2964464686811, + "p90": 122.36465467140079, + "min": 122.11965303868055, + "max": 122.46708897873759, + "samples": [ + 122.25889461115003, + 122.25533789023757, + 122.35245201736689, + 122.20631586387753, + 122.30104487389326, + 122.35298287123442, + 122.39576410502195, + 122.22753604874015, + 122.24060017615557, + 122.11965303868055, + 122.32813565060496, + 122.31592275202274, + 122.18573736026883, + 122.2306820563972, + 122.20919225364923, + 122.18717997893691, + 122.26473586633801, + 122.30825796723366, + 122.24209401756525, + 122.32885789126158, + 122.46708897873759, + 122.3611980676651, + 122.29184806346893, + 122.30792827904224, + 122.30482185259461, + 122.31641309335828, + 122.28008499369025, + 122.33105162158608, + 122.28718865662813, + 122.40182515233755 + ] + }, + "steady_event_ms": { + "median": 122.2488784790039, + "p90": 122.31769104003907, + "samples": [ + 122.20172882080078, + 122.20694732666016, + 122.30403137207031, + 122.15961456298828, + 122.25318145751953, + 122.30377960205078, + 122.34758758544922, + 122.17984008789062, + 122.19312286376953, + 122.0728988647461, + 122.28141021728516, + 122.26947021484375, + 122.13932800292969, + 122.18409729003906, + 122.16118621826172, + 122.14035034179688, + 122.21731567382812, + 122.2613754272461, + 122.1942367553711, + 122.27884674072266, + 122.42041778564453, + 122.31436920166016, + 122.24457550048828, + 122.25965118408203, + 122.25830078125, + 122.26956939697266, + 122.23321533203125, + 122.28307342529297, + 122.24095916748047, + 122.3552017211914 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 60099.492565728724, + 128.68898082524538, + 122.91135778650641, + 122.5331830792129, + 122.555335983634, + 122.74573463946581, + 122.32044199481606, + 122.60388722643256, + 122.24827613681555 + ], + "event_ms_including_first": [ + 60099.2265625, + 128.6378631591797, + 122.87814331054688, + 122.5000991821289, + 122.52438354492188, + 122.71417236328125, + 122.28697967529297, + 122.57142639160156, + 122.21734619140625 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/o2/co2b57k6vquuozw2btfvvh3khmwsnn7pzkgpiszs2tpco6zodq3i.py" + ], + "routes": [ + { + "sha256": "d9cbf3a17f5f5b687bee6d5793efbaf9c1726545fed7d540125793f31fe24a8f", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "elapsed_s": 72.60985684394836 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_TORCH_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" + } + } + }, + { + "run": "Mini_n512_BASE_p0", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 512, + "started": 1792866590.2607875, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 654988, + "first_peak": { + "allocated": 944773120, + "reserved": 1052770304 + }, + "steady_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "full_window_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "steady_wall_ms": { + "median": 12.18432979658246, + "p90": 12.276597879827023, + "min": 12.1065778657794, + "max": 12.431442737579346, + "samples": [ + 12.176771182566881, + 12.269516009837389, + 12.16338574886322, + 12.186318635940552, + 12.222628109157085, + 12.163696810603142, + 12.182340957224369, + 12.194875162094831, + 12.276139110326767, + 12.171921785920858, + 12.314010877162218, + 12.12492398917675, + 12.212919071316719, + 12.191309127956629, + 12.124452739953995, + 12.128811329603195, + 12.221445795148611, + 12.170840986073017, + 12.280726805329323, + 12.208881787955761, + 12.19422509893775, + 12.223959900438786, + 12.194594833999872, + 12.175819836556911, + 12.1065778657794, + 12.151634320616722, + 12.133909855037928, + 12.15583086013794, + 12.431442737579346, + 12.116817757487297 + ] + }, + "steady_event_ms": { + "median": 12.140736103057861, + "p90": 12.234502792358398, + "samples": [ + 12.12713623046875, + 12.22662353515625, + 12.121024131774902, + 12.140416145324707, + 12.179776191711426, + 12.121855735778809, + 12.141056060791016, + 12.1528959274292, + 12.234016418457031, + 12.130528450012207, + 12.27228832244873, + 12.082976341247559, + 12.171072006225586, + 12.149503707885742, + 12.08243179321289, + 12.0863037109375, + 12.177824020385742, + 12.127872467041016, + 12.238880157470703, + 12.166272163391113, + 12.15334415435791, + 12.182175636291504, + 12.152576446533203, + 12.134464263916016, + 12.064864158630371, + 12.110527992248535, + 12.092576026916504, + 12.114591598510742, + 12.389599800109863, + 12.076224327087402 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 59870.724057778716, + 15.3455869294703, + 12.648012023419142, + 12.784809805452824, + 12.588358949869871, + 12.656236998736858, + 12.473010923713446, + 12.699497863650322, + 12.54234230145812 + ], + "event_ms_including_first": [ + 59870.4765625, + 15.315744400024414, + 12.618144035339355, + 12.754528045654297, + 12.55891227722168, + 12.627264022827148, + 12.444000244140625, + 12.670495986938477, + 12.512127876281738 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/pt/cptnk5o74w56xu7fo2xk45i3fxcauwgddnybnjx3j6gv4leo7cf2.py" + ], + "routes": [ + { + "sha256": "65b87bf8215249eac2e03cbb20cb741c8a61edf1f8f0997b9a65e5c6ebaab228", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "elapsed_s": 64.34333086013794 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_BASE_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" + } + } + }, + { + "run": "Mini_n512_BASE_p1", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 512, + "started": 1792866799.3416362, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 654988, + "first_peak": { + "allocated": 944773120, + "reserved": 1052770304 + }, + "steady_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "full_window_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "steady_wall_ms": { + "median": 12.35263841226697, + "p90": 12.428011605516076, + "min": 12.306676246225834, + "max": 12.68098410218954, + "samples": [ + 12.33563106507063, + 12.68098410218954, + 12.313568964600563, + 12.379805091768503, + 12.427153997123241, + 12.395594269037247, + 12.320312205702066, + 12.35394598916173, + 12.36275164410472, + 12.345599941909313, + 12.345710769295692, + 12.334438972175121, + 12.325682677328587, + 12.410562951117754, + 12.349477037787437, + 12.40589376538992, + 12.435730081051588, + 12.311204802244902, + 12.438266072422266, + 12.383401859551668, + 12.375557329505682, + 12.359817046672106, + 12.349718250334263, + 12.396687176078558, + 12.306676246225834, + 12.348886579275131, + 12.330211233347654, + 12.337423861026764, + 12.35133083537221, + 12.364265974611044 + ] + }, + "steady_event_ms": { + "median": 12.309119701385498, + "p90": 12.383843421936035, + "samples": [ + 12.28326416015625, + 12.635775566101074, + 12.269887924194336, + 12.335455894470215, + 12.382880210876465, + 12.351072311401367, + 12.277088165283203, + 12.309951782226562, + 12.319007873535156, + 12.302751541137695, + 12.300000190734863, + 12.291775703430176, + 12.282143592834473, + 12.367520332336426, + 12.306719779968262, + 12.362560272216797, + 12.392512321472168, + 12.268159866333008, + 12.394271850585938, + 12.33948802947998, + 12.325023651123047, + 12.315584182739258, + 12.306048393249512, + 12.352640151977539, + 12.263551712036133, + 12.305439949035645, + 12.28713607788086, + 12.293760299682617, + 12.308287620544434, + 12.321151733398438 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 59819.45493305102, + 15.633180271834135, + 13.011027127504349, + 12.809726875275373, + 12.606462929397821, + 12.62407610192895, + 12.576025910675526, + 12.877735309302807, + 12.96274596825242 + ], + "event_ms_including_first": [ + 59819.21484375, + 15.597472190856934, + 12.978848457336426, + 12.777471542358398, + 12.575424194335938, + 12.59347152709961, + 12.545087814331055, + 12.843744277954102, + 12.931903839111328 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/pt/cptnk5o74w56xu7fo2xk45i3fxcauwgddnybnjx3j6gv4leo7cf2.py" + ], + "routes": [ + { + "sha256": "65b87bf8215249eac2e03cbb20cb741c8a61edf1f8f0997b9a65e5c6ebaab228", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "elapsed_s": 64.20091247558594 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_BASE_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" + } + } + }, + { + "run": "Mini_n512_BASE_p2", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 512, + "started": 1792867008.3304482, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 654988, + "first_peak": { + "allocated": 944773120, + "reserved": 1052770304 + }, + "steady_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "full_window_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "steady_wall_ms": { + "median": 12.151073198765516, + "p90": 12.189678940922022, + "min": 12.09471607580781, + "max": 12.388702016323805, + "samples": [ + 12.166400905698538, + 12.13507167994976, + 12.10670918226242, + 12.09471607580781, + 12.172844260931015, + 12.143759056925774, + 12.188103049993515, + 12.160180136561394, + 12.128399685025215, + 12.127057183533907, + 12.152204755693674, + 12.177943717688322, + 12.150632217526436, + 12.16147281229496, + 12.157886289060116, + 12.129962909966707, + 12.388702016323805, + 12.123018968850374, + 12.219000607728958, + 12.203861959278584, + 12.126766610890627, + 12.15366693213582, + 12.137035839259624, + 12.175679206848145, + 12.139610946178436, + 12.151514180004597, + 12.170649133622646, + 12.147696688771248, + 12.139459606260061, + 12.127157766371965 + ] + }, + "steady_event_ms": { + "median": 12.10644817352295, + "p90": 12.147126293182373, + "samples": [ + 12.112223625183105, + 12.091039657592773, + 12.063424110412598, + 12.051615715026855, + 12.130687713623047, + 12.101247787475586, + 12.145567893981934, + 12.11689567565918, + 12.085472106933594, + 12.084511756896973, + 12.10927963256836, + 12.13475227355957, + 12.108256340026855, + 12.118207931518555, + 12.115296363830566, + 12.08732795715332, + 12.346624374389648, + 12.08073616027832, + 12.176511764526367, + 12.161151885986328, + 12.084768295288086, + 12.104096412658691, + 12.094016075134277, + 12.13263988494873, + 12.096960067749023, + 12.108320236206055, + 12.1212797164917, + 12.104640007019043, + 12.09609603881836, + 12.083871841430664 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 58759.12004522979, + 15.163243282586336, + 12.724225874990225, + 12.695321347564459, + 12.569292914122343, + 12.540267780423164, + 12.605720665305853, + 12.63672998175025, + 12.311405036598444 + ], + "event_ms_including_first": [ + 58758.88671875, + 15.122079849243164, + 12.692383766174316, + 12.663647651672363, + 12.539072036743164, + 12.509087562561035, + 12.575743675231934, + 12.606752395629883, + 12.280927658081055 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/pt/cptnk5o74w56xu7fo2xk45i3fxcauwgddnybnjx3j6gv4leo7cf2.py" + ], + "routes": [ + { + "sha256": "65b87bf8215249eac2e03cbb20cb741c8a61edf1f8f0997b9a65e5c6ebaab228", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "elapsed_s": 63.19084167480469 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_BASE_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" + } + } + }, + { + "run": "Mini_n512_ECS_p0", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 512, + "started": 1792866659.882099, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 654988, + "first_peak": { + "allocated": 944773120, + "reserved": 1052770304 + }, + "steady_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "full_window_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "steady_wall_ms": { + "median": 12.20858097076416, + "p90": 12.24905801936984, + "min": 12.141655199229717, + "max": 12.585121672600508, + "samples": [ + 12.186639942228794, + 12.269657105207443, + 12.215043883770704, + 12.17960612848401, + 12.141655199229717, + 12.213480193167925, + 12.212920002639294, + 12.175377923995256, + 12.244630139321089, + 12.235441710799932, + 12.20801007002592, + 12.170399073511362, + 12.229971587657928, + 12.149409856647253, + 12.183513958007097, + 12.224973179399967, + 12.263754848390818, + 12.195285875350237, + 12.155530974268913, + 12.166031170636415, + 12.226724997162819, + 12.20202911645174, + 12.188322842121124, + 12.173475231975317, + 12.585121672600508, + 12.24742503836751, + 12.2053362429142, + 12.229921761900187, + 12.226476334035397, + 12.2091518715024 + ] + }, + "steady_event_ms": { + "median": 12.166287899017334, + "p90": 12.206233692169189, + "samples": [ + 12.13599967956543, + 12.224160194396973, + 12.171456336975098, + 12.135456085205078, + 12.09875202178955, + 12.170880317687988, + 12.169759750366211, + 12.131967544555664, + 12.196864128112793, + 12.192000389099121, + 12.165696144104004, + 12.127167701721191, + 12.18716812133789, + 12.106783866882324, + 12.140480041503906, + 12.18188762664795, + 12.221440315246582, + 12.152383804321289, + 12.112863540649414, + 12.12326431274414, + 12.181599617004395, + 12.159680366516113, + 12.145343780517578, + 12.129631996154785, + 12.54207992553711, + 12.204544067382812, + 12.16204833984375, + 12.180000305175781, + 12.183103561401367, + 12.166879653930664 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 60215.07346723229, + 15.661814250051975, + 13.246532063931227, + 12.9128722473979, + 12.726659886538982, + 12.70681293681264, + 12.631400022655725, + 12.905597686767578, + 12.458022218197584 + ], + "event_ms_including_first": [ + 60214.83203125, + 15.626272201538086, + 13.214943885803223, + 12.88003158569336, + 12.694751739501953, + 12.675328254699707, + 12.600383758544922, + 12.873503684997559, + 12.427071571350098 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/bv/cbvfyyen4txa7fs43ouu4o7ol5yetrvdozi7ie46qqloq345xu2p.py" + ], + "routes": [ + { + "sha256": "ad7d03de10bff6b7698af0e611860f8f311a974be4adb3cc315196bcc2372ef1", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "elapsed_s": 64.68185305595398 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_ECS_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" + } + } + }, + { + "run": "Mini_n512_ECS_p1", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 512, + "started": 1792866729.7270973, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 654988, + "first_peak": { + "allocated": 944773120, + "reserved": 1052770304 + }, + "steady_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "full_window_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "steady_wall_ms": { + "median": 12.268950464203954, + "p90": 12.327449349686503, + "min": 12.194224167615175, + "max": 12.34022993594408, + "samples": [ + 12.287429999560118, + 12.333877850323915, + 12.224141042679548, + 12.270328123122454, + 12.22304766997695, + 12.248557060956955, + 12.326735071837902, + 12.250942178070545, + 12.281518895179033, + 12.263294775038958, + 12.233077082782984, + 12.194224167615175, + 12.256913352757692, + 12.212829664349556, + 12.276388704776764, + 12.272171676158905, + 12.272140942513943, + 12.33433885499835, + 12.316724751144648, + 12.236142996698618, + 12.246313039213419, + 12.249828781932592, + 12.288571801036596, + 12.223339173942804, + 12.267572805285454, + 12.34022993594408, + 12.287882156670094, + 12.254567816853523, + 12.274496257305145, + 12.279556132853031 + ] + }, + "steady_event_ms": { + "median": 12.2249116897583, + "p90": 12.277036762237548, + "samples": [ + 12.235551834106445, + 12.28816032409668, + 12.179903984069824, + 12.22662353515625, + 12.170783996582031, + 12.203680038452148, + 12.276063919067383, + 12.204544067382812, + 12.23692798614502, + 12.219103813171387, + 12.188799858093262, + 12.149791717529297, + 12.213279724121094, + 12.16857624053955, + 12.232319831848145, + 12.226688385009766, + 12.228768348693848, + 12.289407730102539, + 12.270751953125, + 12.194047927856445, + 12.202495574951172, + 12.206080436706543, + 12.244256019592285, + 12.179167747497559, + 12.223199844360352, + 12.285792350769043, + 12.243200302124023, + 12.210176467895508, + 12.230015754699707, + 12.23574447631836 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 59843.85432396084, + 15.788232907652855, + 12.830296065658331, + 12.739465106278658, + 12.561467941850424, + 12.491496279835701, + 12.53019878640771, + 12.777777388691902, + 12.477869633585215 + ], + "event_ms_including_first": [ + 59843.61328125, + 15.755743980407715, + 12.797087669372559, + 12.707327842712402, + 12.530240058898926, + 12.45952033996582, + 12.498527526855469, + 12.743424415588379, + 12.446016311645508 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/bv/cbvfyyen4txa7fs43ouu4o7ol5yetrvdozi7ie46qqloq345xu2p.py" + ], + "routes": [ + { + "sha256": "ad7d03de10bff6b7698af0e611860f8f311a974be4adb3cc315196bcc2372ef1", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "elapsed_s": 64.29855155944824 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_ECS_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" + } + } + }, + { + "run": "Mini_n512_ECS_p2", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 512, + "started": 1792867076.4172797, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 654988, + "first_peak": { + "allocated": 944773120, + "reserved": 1052770304 + }, + "steady_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "full_window_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "steady_wall_ms": { + "median": 12.096314458176494, + "p90": 12.16979962773621, + "min": 12.050202116370201, + "max": 12.36288296058774, + "samples": [ + 12.093895114958286, + 12.105357367545366, + 12.147816829383373, + 12.089225929230452, + 12.071521952748299, + 12.071552220731974, + 12.074708007276058, + 12.090588919818401, + 12.118089944124222, + 12.182161677628756, + 12.092382181435823, + 12.050202116370201, + 12.098733801394701, + 12.068197131156921, + 12.36288296058774, + 12.099996209144592, + 12.217928655445576, + 12.058498337864876, + 12.068736832588911, + 12.072264216840267, + 12.106759008020163, + 12.155560776591301, + 12.076601851731539, + 12.109833769500256, + 12.16842606663704, + 12.152264825999737, + 12.110175099223852, + 12.087191920727491, + 12.068177107721567, + 12.103131972253323 + ] + }, + "steady_event_ms": { + "median": 12.052688121795654, + "p90": 12.126400470733643, + "samples": [ + 12.040512084960938, + 12.061152458190918, + 12.104255676269531, + 12.046272277832031, + 12.02883243560791, + 12.029343605041504, + 12.032735824584961, + 12.048288345336914, + 12.075296401977539, + 12.1396484375, + 12.049568176269531, + 12.006848335266113, + 12.055808067321777, + 12.0250883102417, + 12.32044792175293, + 12.056608200073242, + 12.168767929077148, + 12.015135765075684, + 12.025919914245605, + 12.029952049255371, + 12.064448356628418, + 12.113247871398926, + 12.033599853515625, + 12.066399574279785, + 12.12492847442627, + 12.109567642211914, + 12.068703651428223, + 12.044544219970703, + 12.024383544921875, + 12.060895919799805 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 59879.84981574118, + 15.038406942039728, + 13.018801808357239, + 12.634275015443563, + 12.525981292128563, + 12.449356727302074, + 12.437273282557726, + 12.671777047216892, + 12.329960707575083 + ], + "event_ms_including_first": [ + 59879.61328125, + 15.006112098693848, + 12.987296104431152, + 12.603327751159668, + 12.494879722595215, + 12.419103622436523, + 12.407872200012207, + 12.641440391540527, + 12.299776077270508 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/bv/cbvfyyen4txa7fs43ouu4o7ol5yetrvdozi7ie46qqloq345xu2p.py" + ], + "routes": [ + { + "sha256": "ad7d03de10bff6b7698af0e611860f8f311a974be4adb3cc315196bcc2372ef1", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 945821696, + "reserved": 1052770304 + }, + "elapsed_s": 64.29158616065979 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_ECS_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" + } + } + }, + { + "run": "Mini_n512_TORCH_p0", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 512, + "started": 1792866520.3602352, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 654988, + "first_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "steady_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "full_window_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "steady_wall_ms": { + "median": 18.290149746462703, + "p90": 18.326486693695188, + "min": 18.249412067234516, + "max": 21.09384536743164, + "samples": [ + 18.27865792438388, + 18.295048736035824, + 18.277024384588003, + 18.27305695042014, + 18.33269977942109, + 18.27648375183344, + 18.307842779904604, + 18.286473117768764, + 18.27615173533559, + 18.292264081537724, + 18.284848891198635, + 18.249412067234516, + 18.270893022418022, + 18.293214961886406, + 18.282334320247173, + 18.270893022418022, + 18.288035411387682, + 18.274499103426933, + 18.308954779058695, + 18.266144208610058, + 18.292264081537724, + 18.309055361896753, + 21.09384536743164, + 18.778712023049593, + 18.309636041522026, + 18.324705306440592, + 18.266885075718164, + 18.302693031728268, + 18.325796350836754, + 18.293165136128664 + ] + }, + "steady_event_ms": { + "median": 18.247647285461426, + "p90": 18.284413528442382, + "samples": [ + 18.227231979370117, + 18.251392364501953, + 18.234336853027344, + 18.229631423950195, + 18.29043197631836, + 18.233856201171875, + 18.264480590820312, + 18.24425506591797, + 18.233600616455078, + 18.250240325927734, + 18.23161506652832, + 18.206815719604492, + 18.228607177734375, + 18.2511043548584, + 18.239839553833008, + 18.227392196655273, + 18.245695114135742, + 18.232351303100586, + 18.265727996826172, + 18.223167419433594, + 18.24959945678711, + 18.26633644104004, + 21.050464630126953, + 18.73504066467285, + 18.26697540283203, + 18.282495498657227, + 18.22447967529297, + 18.260351181030273, + 18.28374481201172, + 18.251039505004883 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 60659.45019200444, + 21.058508660644293, + 18.990471959114075, + 18.77062674611807, + 18.65514786913991, + 18.603050149977207, + 18.53853790089488, + 18.750338815152645, + 18.403362948447466 + ], + "event_ms_including_first": [ + 60659.20703125, + 21.02342414855957, + 18.958751678466797, + 18.73948860168457, + 18.624544143676758, + 18.571392059326172, + 18.50771141052246, + 18.720352172851562, + 18.373632431030273 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/zj/czji6yuoowveeslyj6rbbqmc4fg3laqzy2ls622oescgppuvtbof.py" + ], + "routes": [ + { + "sha256": "819c53568da57b620534fc63446dfce6693c9eb0a90cea4e25979860d1a8cb51", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "elapsed_s": 65.24397683143616 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_TORCH_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" + } + } + }, + { + "run": "Mini_n512_TORCH_p1", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 512, + "started": 1792866868.7664943, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 654988, + "first_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "steady_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "full_window_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "steady_wall_ms": { + "median": 18.30332330428064, + "p90": 18.349090218544006, + "min": 18.266985192894936, + "max": 18.476551864296198, + "samples": [ + 18.317931797355413, + 18.3699200861156, + 18.277985975146294, + 18.32501497119665, + 18.33803905174136, + 18.27726513147354, + 18.28382769599557, + 18.28879676759243, + 18.286211881786585, + 18.279538955539465, + 18.314425367861986, + 18.325626850128174, + 18.281874246895313, + 18.282365053892136, + 18.307451158761978, + 18.33704812452197, + 18.317030277103186, + 18.34677578881383, + 18.277023918926716, + 18.31158995628357, + 18.266985192894936, + 18.343870993703604, + 18.281472846865654, + 18.476551864296198, + 18.280510790646076, + 18.305246718227863, + 18.293465953320265, + 18.301399890333414, + 18.29145196825266, + 18.380078952759504 + ] + }, + "steady_event_ms": { + "median": 18.260480880737305, + "p90": 18.3061279296875, + "samples": [ + 18.264223098754883, + 18.325855255126953, + 18.235136032104492, + 18.281312942504883, + 18.29542350769043, + 18.233535766601562, + 18.241472244262695, + 18.245759963989258, + 18.243328094482422, + 18.23664093017578, + 18.270816802978516, + 18.28278350830078, + 18.239328384399414, + 18.232959747314453, + 18.264192581176758, + 18.293312072753906, + 18.273151397705078, + 18.303936004638672, + 18.233951568603516, + 18.266752243041992, + 18.223968505859375, + 18.302080154418945, + 18.238784790039062, + 18.432640075683594, + 18.238239288330078, + 18.262496948242188, + 18.25052833557129, + 18.258464813232422, + 18.249055862426758, + 18.336896896362305 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 60798.475925810635, + 21.254238206893206, + 18.6204737983644, + 18.639269284904003, + 18.548406660556793, + 18.743867054581642, + 18.567251972854137, + 18.65253411233425, + 18.373325932770967 + ], + "event_ms_including_first": [ + 60798.23828125, + 21.22047996520996, + 18.588863372802734, + 18.60723114013672, + 18.517696380615234, + 18.70047950744629, + 18.53606414794922, + 18.622304916381836, + 18.342815399169922 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/zj/czji6yuoowveeslyj6rbbqmc4fg3laqzy2ls622oescgppuvtbof.py" + ], + "routes": [ + { + "sha256": "819c53568da57b620534fc63446dfce6693c9eb0a90cea4e25979860d1a8cb51", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "elapsed_s": 65.35191535949707 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_TORCH_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" + } + } + }, + { + "run": "Mini_n512_TORCH_p2", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 512, + "started": 1792866938.3249924, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 654988, + "first_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "steady_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "full_window_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "steady_wall_ms": { + "median": 18.31850688904524, + "p90": 18.362727155908942, + "min": 18.283457029610872, + "max": 18.39214190840721, + "samples": [ + 18.37693341076374, + 18.39214190840721, + 18.33346113562584, + 18.318491987884045, + 18.362064845860004, + 18.305058125406504, + 18.314565997570753, + 18.304115626960993, + 18.283457029610872, + 18.334343098104, + 18.302453216165304, + 18.321007024496794, + 18.315687775611877, + 18.306669779121876, + 18.323452211916447, + 18.35256675258279, + 18.31625821068883, + 18.328281119465828, + 18.33395194262266, + 18.30446720123291, + 18.304096069186926, + 18.348549026995897, + 18.2849601842463, + 18.368687946349382, + 18.316589295864105, + 18.323352094739676, + 18.30858364701271, + 18.307292368263006, + 18.318521790206432, + 18.3437904343009 + ] + }, + "steady_event_ms": { + "median": 18.27348804473877, + "p90": 18.318901824951173, + "samples": [ + 18.32601547241211, + 18.34828758239746, + 18.279071807861328, + 18.274463653564453, + 18.318111419677734, + 18.260448455810547, + 18.272672653198242, + 18.261600494384766, + 18.22969627380371, + 18.291296005249023, + 18.26095962524414, + 18.268352508544922, + 18.27244758605957, + 18.26406478881836, + 18.269535064697266, + 18.30886459350586, + 18.27350425720215, + 18.280000686645508, + 18.29088020324707, + 18.262208938598633, + 18.26188850402832, + 18.30633544921875, + 18.24224090576172, + 18.326112747192383, + 18.27347183227539, + 18.280351638793945, + 18.265247344970703, + 18.264863967895508, + 18.275903701782227, + 18.301471710205078 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 61141.63054805249, + 20.599632058292627, + 18.707447219640017, + 18.70771823450923, + 18.631063401699066, + 18.550631124526262, + 18.4494499117136, + 18.69372185319662, + 18.388234078884125 + ], + "event_ms_including_first": [ + 61141.390625, + 20.56768035888672, + 18.67580795288086, + 18.67558479309082, + 18.599552154541016, + 18.519935607910156, + 18.41868782043457, + 18.662879943847656, + 18.357120513916016 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/zj/czji6yuoowveeslyj6rbbqmc4fg3laqzy2ls622oescgppuvtbof.py" + ], + "routes": [ + { + "sha256": "819c53568da57b620534fc63446dfce6693c9eb0a90cea4e25979860d1a8cb51", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "elapsed_s": 65.69359827041626 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_TORCH_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" + } + } + }, + { + "run": "Mini_n96_BASE_p0", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 96, + "started": 1792865886.026652, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 654988, + "first_peak": { + "allocated": 286303232, + "reserved": 335544320 + }, + "steady_peak": { + "allocated": 190499840, + "reserved": 335544320 + }, + "full_window_peak": { + "allocated": 286303232, + "reserved": 335544320 + }, + "steady_wall_ms": { + "median": 11.099673574790359, + "p90": 11.355408700183034, + "min": 11.011966969817877, + "max": 19.798481836915016, + "samples": [ + 11.369592975825071, + 11.353832669556141, + 11.243053711950779, + 11.224298737943172, + 11.225830763578415, + 11.246159207075834, + 11.20980130508542, + 11.210332158952951, + 11.12418994307518, + 11.013990733772516, + 11.043977923691273, + 11.090175248682499, + 11.039449833333492, + 11.06884516775608, + 11.10405195504427, + 11.091648135334253, + 11.131834238767624, + 11.095295194536448, + 11.03614317253232, + 11.091367807239294, + 11.028788983821869, + 11.011966969817877, + 11.044659186154604, + 11.078863870352507, + 19.798481836915016, + 11.29082404077053, + 11.095095425844193, + 11.073683854192495, + 11.515829246491194, + 11.168622877448797 + ] + }, + "steady_event_ms": { + "median": 11.05783987045288, + "p90": 11.310601711273193, + "samples": [ + 11.320768356323242, + 11.30947208404541, + 11.200127601623535, + 11.182080268859863, + 11.183327674865723, + 11.203807830810547, + 11.166784286499023, + 11.167872428894043, + 11.081888198852539, + 10.971839904785156, + 11.00160026550293, + 11.049087524414062, + 10.997599601745605, + 11.026464462280273, + 11.062335968017578, + 11.048959732055664, + 11.089695930480957, + 11.053343772888184, + 10.993951797485352, + 11.047455787658691, + 10.98755168914795, + 10.96998405456543, + 11.002528190612793, + 11.03667163848877, + 19.74982452392578, + 11.248064041137695, + 11.053088188171387, + 11.027872085571289, + 11.473664283752441, + 11.127167701721191 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 101353.3333139494, + 15.31868102028966, + 11.893622111529112, + 11.628672014921904, + 11.458660941570997, + 11.47284684702754, + 11.654842179268599, + 11.858916841447353, + 11.356637813150883 + ], + "event_ms_including_first": [ + 101352.96875, + 15.288384437561035, + 11.863264083862305, + 11.596927642822266, + 11.427743911743164, + 11.44211196899414, + 11.62399959564209, + 11.828319549560547, + 11.326080322265625 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/l4/cl47buc6lhwg656bzvyv4go4yvakcy2xiolvimccgi6ahup4uoys.py" + ], + "routes": [ + { + "sha256": "26c1c078b36a0cfd8615a408c5f057d0e14f11a5191d4416efc8cf6d357e96a4", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 286303232, + "reserved": 335544320 + }, + "elapsed_s": 105.70226383209229 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_BASE_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" + } + } + }, + { + "run": "Mini_n96_BASE_p1", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 96, + "started": 1792866176.3936014, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 654988, + "first_peak": { + "allocated": 189451264, + "reserved": 230686720 + }, + "steady_peak": { + "allocated": 190499840, + "reserved": 230686720 + }, + "full_window_peak": { + "allocated": 190499840, + "reserved": 230686720 + }, + "steady_wall_ms": { + "median": 11.15957647562027, + "p90": 11.31912306882441, + "min": 11.060710065066814, + "max": 11.518843937665224, + "samples": [ + 11.097047943621874, + 11.507312767207623, + 11.518843937665224, + 11.206825263798237, + 11.271887924522161, + 11.165366973727942, + 11.096486821770668, + 11.210592929273844, + 11.069827247411013, + 11.34379394352436, + 11.25029707327485, + 11.09737902879715, + 11.097429320216179, + 11.239686980843544, + 11.077582370489836, + 11.069465894252062, + 11.316381860524416, + 11.060710065066814, + 11.08026597648859, + 11.288128793239594, + 11.123719159513712, + 11.175115592777729, + 11.218177154660225, + 11.153785977512598, + 11.094273068010807, + 11.210863012820482, + 11.071840766817331, + 11.064365971833467, + 11.219029314815998, + 11.063735000789165 + ] + }, + "steady_event_ms": { + "median": 11.112720012664795, + "p90": 11.276912021636964, + "samples": [ + 11.04800033569336, + 11.464639663696289, + 11.476320266723633, + 11.163968086242676, + 11.229599952697754, + 11.114815711975098, + 11.053664207458496, + 11.167327880859375, + 11.028608322143555, + 11.301247596740723, + 11.207136154174805, + 11.055392265319824, + 11.054752349853516, + 11.1942720413208, + 11.034239768981934, + 11.026399612426758, + 11.274208068847656, + 11.017760276794434, + 11.037792205810547, + 11.245152473449707, + 11.08124828338623, + 11.132512092590332, + 11.173919677734375, + 11.110624313354492, + 11.05123233795166, + 11.167072296142578, + 11.028736114501953, + 11.021759986877441, + 11.176544189453125, + 11.021439552307129 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 60047.99153795466, + 15.65907383337617, + 12.29199394583702, + 12.016674969345331, + 11.63383200764656, + 11.827778071165085, + 11.512563098222017, + 12.00299896299839, + 11.473828926682472 + ], + "event_ms_including_first": [ + 60047.76171875, + 15.623807907104492, + 12.25932788848877, + 11.984864234924316, + 11.602784156799316, + 11.79695987701416, + 11.48147201538086, + 11.971424102783203, + 11.442463874816895 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/l4/cl47buc6lhwg656bzvyv4go4yvakcy2xiolvimccgi6ahup4uoys.py" + ], + "routes": [ + { + "sha256": "26c1c078b36a0cfd8615a408c5f057d0e14f11a5191d4416efc8cf6d357e96a4", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 190499840, + "reserved": 230686720 + }, + "elapsed_s": 64.37705945968628 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_BASE_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" + } + } + }, + { + "run": "Mini_n96_BASE_p2", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 96, + "started": 1792866383.047765, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 654988, + "first_peak": { + "allocated": 189451264, + "reserved": 230686720 + }, + "steady_peak": { + "allocated": 190499840, + "reserved": 230686720 + }, + "full_window_peak": { + "allocated": 190499840, + "reserved": 230686720 + }, + "steady_wall_ms": { + "median": 10.899999411776662, + "p90": 10.948528908193111, + "min": 10.837931651622057, + "max": 11.328309308737516, + "samples": [ + 10.911791119724512, + 10.957077611237764, + 10.885020717978477, + 10.898696724325418, + 11.328309308737516, + 10.938561987131834, + 10.876926127821207, + 10.907953605055809, + 10.893817991018295, + 10.88465005159378, + 10.85195830091834, + 10.885402094572783, + 10.837931651622057, + 10.891644284129143, + 10.862739756703377, + 10.867157019674778, + 10.922852903604507, + 10.886423755437136, + 10.947579052299261, + 10.975402314215899, + 10.844325181096792, + 10.886825155466795, + 10.913394857198, + 10.884881019592285, + 10.90425718575716, + 10.90707303956151, + 10.902503971010447, + 10.90902741998434, + 10.91534923762083, + 10.901302099227905 + ] + }, + "steady_event_ms": { + "median": 10.855216026306152, + "p90": 10.907209396362305, + "samples": [ + 10.862848281860352, + 10.914496421813965, + 10.843487739562988, + 10.849823951721191, + 11.285728454589844, + 10.897151947021484, + 10.835968017578125, + 10.86633586883545, + 10.851391792297363, + 10.843199729919434, + 10.810432434082031, + 10.844063758850098, + 10.795455932617188, + 10.849696159362793, + 10.822015762329102, + 10.823904037475586, + 10.881376266479492, + 10.844575881958008, + 10.906399726867676, + 10.934144020080566, + 10.80361557006836, + 10.84496021270752, + 10.871359825134277, + 10.843392372131348, + 10.859040260314941, + 10.865983963012695, + 10.860735893249512, + 10.86847972869873, + 10.873984336853027, + 10.859231948852539 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 58811.385630164295, + 14.293550048023462, + 11.719167232513428, + 11.661377269774675, + 11.522365268319845, + 11.48529490455985, + 11.495094280689955, + 11.768540367484093, + 11.490033939480782 + ], + "event_ms_including_first": [ + 58811.14453125, + 14.260479927062988, + 11.68057632446289, + 11.630016326904297, + 11.492095947265625, + 11.454784393310547, + 11.464768409729004, + 11.73078441619873, + 11.459327697753906 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/l4/cl47buc6lhwg656bzvyv4go4yvakcy2xiolvimccgi6ahup4uoys.py" + ], + "routes": [ + { + "sha256": "26c1c078b36a0cfd8615a408c5f057d0e14f11a5191d4416efc8cf6d357e96a4", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 190499840, + "reserved": 230686720 + }, + "elapsed_s": 63.09790778160095 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_BASE_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" + } + } + }, + { + "run": "Mini_n96_ECS_p0", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 96, + "started": 1792865996.5800514, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 654988, + "first_peak": { + "allocated": 286303232, + "reserved": 335544320 + }, + "steady_peak": { + "allocated": 190499840, + "reserved": 335544320 + }, + "full_window_peak": { + "allocated": 286303232, + "reserved": 335544320 + }, + "steady_wall_ms": { + "median": 11.064626974985003, + "p90": 11.128738848492503, + "min": 11.002540122717619, + "max": 11.19787897914648, + "samples": [ + 11.072972789406776, + 11.19787897914648, + 11.128086596727371, + 11.043325997889042, + 11.13460911437869, + 11.096838396042585, + 11.0542681068182, + 11.0572031699121, + 11.043798178434372, + 11.055809911340475, + 11.088171042501926, + 11.107437312602997, + 11.064657010138035, + 11.048646178096533, + 11.049076914787292, + 11.064596939831972, + 11.1572309397161, + 11.077250819653273, + 11.072582099586725, + 11.068635154515505, + 11.011966969817877, + 11.038588359951973, + 11.051130946725607, + 11.0724619589746, + 11.002540122717619, + 11.02180639281869, + 11.113518849015236, + 11.071820743381977, + 11.03671407327056, + 11.050449684262276 + ] + }, + "steady_event_ms": { + "median": 11.022655963897705, + "p90": 11.085865306854249, + "samples": [ + 11.022848129272461, + 11.154111862182617, + 11.085151672363281, + 11.00108814239502, + 11.09228801727295, + 11.045663833618164, + 11.011712074279785, + 11.016127586364746, + 11.001503944396973, + 11.013567924499512, + 11.046496391296387, + 11.064607620239258, + 11.022687911987305, + 11.007360458374023, + 11.007360458374023, + 11.022624015808105, + 11.115263938903809, + 11.035296440124512, + 11.030400276184082, + 11.026464462280273, + 10.96947193145752, + 10.997056007385254, + 11.008959770202637, + 11.029472351074219, + 10.961024284362793, + 10.979616165161133, + 11.071840286254883, + 11.029760360717773, + 10.994943618774414, + 10.997119903564453 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 101371.07564276084, + 14.978197868913412, + 11.838868726044893, + 11.623702943325043, + 11.490671895444393, + 11.486994102597237, + 11.470222845673561, + 11.87683129683137, + 11.390062049031258 + ], + "event_ms_including_first": [ + 101370.7265625, + 14.947360038757324, + 11.807744026184082, + 11.594016075134277, + 11.459775924682617, + 11.456543922424316, + 11.43939208984375, + 11.846431732177734, + 11.359264373779297 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/vq/cvqquhjv5f6nyhttrdqdc3cvajtnipif3bhq3zusk3y4bjgy5kg5.py" + ], + "routes": [ + { + "sha256": "27be9e332efbed712736875b79ff26763add57a318f7542effdfa27c92cd6148", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 286303232, + "reserved": 335544320 + }, + "elapsed_s": 105.68764877319336 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_ECS_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" + } + } + }, + { + "run": "Mini_n96_ECS_p1", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 96, + "started": 1792866107.294757, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 654988, + "first_peak": { + "allocated": 189451264, + "reserved": 230686720 + }, + "steady_peak": { + "allocated": 190499840, + "reserved": 230686720 + }, + "full_window_peak": { + "allocated": 190499840, + "reserved": 230686720 + }, + "steady_wall_ms": { + "median": 11.228691786527634, + "p90": 11.320870881900191, + "min": 11.183430906385183, + "max": 13.469889760017395, + "samples": [ + 11.286165565252304, + 11.30366837605834, + 11.242311913520098, + 11.298778932541609, + 11.221963912248611, + 11.22920773923397, + 11.230469681322575, + 11.2320426851511, + 11.681932955980301, + 11.294191237539053, + 11.212516110390425, + 11.218787636607885, + 11.250457726418972, + 11.201024055480957, + 11.254204902797937, + 11.294401250779629, + 11.223016306757927, + 11.210131924599409, + 11.196126230061054, + 11.206223629415035, + 11.228175833821297, + 11.213317979127169, + 11.190635152161121, + 11.227064300328493, + 11.298928875476122, + 13.469889760017395, + 11.475693434476852, + 11.20501197874546, + 11.211614590138197, + 11.183430906385183 + ] + }, + "steady_event_ms": { + "median": 11.18222427368164, + "p90": 11.276556682586671, + "samples": [ + 11.236031532287598, + 11.259903907775879, + 11.19974422454834, + 11.248703956604004, + 11.179200172424316, + 11.185407638549805, + 11.179776191711426, + 11.188159942626953, + 11.638912200927734, + 11.25062370300293, + 11.16982364654541, + 11.175552368164062, + 11.203167915344238, + 11.15884780883789, + 11.211584091186523, + 11.25158405303955, + 11.179743766784668, + 11.16761589050293, + 11.153887748718262, + 11.163135528564453, + 11.176223754882812, + 11.169568061828613, + 11.148287773132324, + 11.184672355651855, + 11.249728202819824, + 13.426560401916504, + 11.426431655883789, + 11.162591934204102, + 11.1692476272583, + 11.141087532043457 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 59556.63427198306, + 14.58091801032424, + 12.380111031234264, + 12.355554848909378, + 11.90849021077156, + 11.857222765684128, + 11.812129057943821, + 11.955789756029844, + 11.422543320804834 + ], + "event_ms_including_first": [ + 59556.3984375, + 14.545280456542969, + 12.347007751464844, + 12.32249641418457, + 11.87673568725586, + 11.825407981872559, + 11.7805757522583, + 11.92460823059082, + 11.391008377075195 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/vq/cvqquhjv5f6nyhttrdqdc3cvajtnipif3bhq3zusk3y4bjgy5kg5.py" + ], + "routes": [ + { + "sha256": "27be9e332efbed712736875b79ff26763add57a318f7542effdfa27c92cd6148", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 190499840, + "reserved": 230686720 + }, + "elapsed_s": 63.8685827255249 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_ECS_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" + } + } + }, + { + "run": "Mini_n96_ECS_p2", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 96, + "started": 1792866451.1167815, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 654988, + "first_peak": { + "allocated": 189451264, + "reserved": 230686720 + }, + "steady_peak": { + "allocated": 190499840, + "reserved": 230686720 + }, + "full_window_peak": { + "allocated": 190499840, + "reserved": 230686720 + }, + "steady_wall_ms": { + "median": 11.180259054526687, + "p90": 11.242529144510627, + "min": 11.106470134109259, + "max": 11.387921869754791, + "samples": [ + 11.197451036423445, + 11.256612837314606, + 11.198182590305805, + 11.223780922591686, + 11.150523088872433, + 11.190097313374281, + 11.183535680174828, + 11.179877910763025, + 11.24096428975463, + 11.3618322648108, + 11.157175060361624, + 11.14298915490508, + 11.185969226062298, + 11.138849891722202, + 11.206117924302816, + 11.387921869754791, + 11.180640198290348, + 11.106470134109259, + 11.1243543215096, + 11.163047049194574, + 11.160532012581825, + 11.177263222634792, + 11.186048854142427, + 11.142278090119362, + 11.174296960234642, + 11.186329647898674, + 11.155432090163231, + 11.145333293825388, + 11.12887216731906, + 11.181070003658533 + ] + }, + "steady_event_ms": { + "median": 11.13595199584961, + "p90": 11.199059104919433, + "samples": [ + 11.146688461303711, + 11.212479591369629, + 11.153663635253906, + 11.180512428283691, + 11.10694408416748, + 11.133119583129883, + 11.140031814575195, + 11.136992454528809, + 11.1975679397583, + 11.316800117492676, + 11.114463806152344, + 11.100095748901367, + 11.142592430114746, + 11.09603214263916, + 11.146719932556152, + 11.34278392791748, + 11.137824058532715, + 11.064448356628418, + 11.08140754699707, + 11.11952018737793, + 11.117631912231445, + 11.13491153717041, + 11.141983985900879, + 11.09932804107666, + 11.121983528137207, + 11.14352035522461, + 11.112159729003906, + 11.102368354797363, + 11.08556842803955, + 11.138431549072266 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 59844.46926461533, + 14.64522397145629, + 12.472039088606834, + 12.144370004534721, + 11.790500953793526, + 11.74235064536333, + 11.560207232832909, + 11.87158515676856, + 11.438757181167603 + ], + "event_ms_including_first": [ + 59844.22265625, + 14.610143661499023, + 12.440192222595215, + 12.111616134643555, + 11.759679794311523, + 11.711392402648926, + 11.529888153076172, + 11.840607643127441, + 11.407327651977539 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/vq/cvqquhjv5f6nyhttrdqdc3cvajtnipif3bhq3zusk3y4bjgy5kg5.py" + ], + "routes": [ + { + "sha256": "27be9e332efbed712736875b79ff26763add57a318f7542effdfa27c92cd6148", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 190499840, + "reserved": 230686720 + }, + "elapsed_s": 64.1533555984497 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_ECS_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" + } + } + }, + { + "run": "Mini_n96_TORCH_p0", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 96, + "started": 1792865783.8177643, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 654988, + "first_peak": { + "allocated": 400473088, + "reserved": 438304768 + }, + "steady_peak": { + "allocated": 299809792, + "reserved": 438304768 + }, + "full_window_peak": { + "allocated": 400473088, + "reserved": 438304768 + }, + "steady_wall_ms": { + "median": 11.962016113102436, + "p90": 12.010487634688616, + "min": 11.932887136936188, + "max": 12.064263690263033, + "samples": [ + 12.02404871582985, + 12.03087205067277, + 11.9469640776515, + 11.994914151728153, + 11.962492018938065, + 11.950539890676737, + 11.963024269789457, + 11.95826381444931, + 11.95215294137597, + 11.944207828491926, + 11.969405226409435, + 11.974694672971964, + 11.941343080252409, + 12.064263690263033, + 12.008980847895145, + 11.958344839513302, + 11.957113165408373, + 11.987450066953897, + 11.999193113297224, + 11.932887136936188, + 11.965589132159948, + 11.976048350334167, + 11.937013827264309, + 11.939539108425379, + 11.954947840422392, + 11.958044022321701, + 11.967581696808338, + 11.991175822913647, + 11.961540207266808, + 11.938678100705147 + ] + }, + "steady_event_ms": { + "median": 11.917488098144531, + "p90": 11.959945678710938, + "samples": [ + 11.972991943359375, + 11.987104415893555, + 11.904735565185547, + 11.953023910522461, + 11.919008255004883, + 11.906911849975586, + 11.91385555267334, + 11.905792236328125, + 11.90998363494873, + 11.902112007141113, + 11.927424430847168, + 11.928895950317383, + 11.899999618530273, + 12.022784233093262, + 11.95849609375, + 11.91596794128418, + 11.915072441101074, + 11.937536239624023, + 11.948896408081055, + 11.890496253967285, + 11.924384117126465, + 11.935168266296387, + 11.895423889160156, + 11.897631645202637, + 11.913599967956543, + 11.915871620178223, + 11.924832344055176, + 11.949695587158203, + 11.920191764831543, + 11.897600173950195 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 93835.04986809567, + 15.891552902758121, + 12.558197136968374, + 12.636424973607063, + 12.474059127271175, + 12.371035292744637, + 12.355444021522999, + 12.527980376034975, + 12.09571398794651 + ], + "event_ms_including_first": [ + 93834.734375, + 15.860639572143555, + 12.527647972106934, + 12.606111526489258, + 12.443039894104004, + 12.340383529663086, + 12.32419204711914, + 12.496576309204102, + 12.06499195098877 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/6p/c6ptz5ocvvs5y3qw2wrdkfwqgc4khppg6muvh3ieos2bzq2pv24i.py" + ], + "routes": [ + { + "sha256": "4b43a1b1ab027b3a94c3379d411c299005cbbb14e4174a6c3185a78004ed888d", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 400473088, + "reserved": 438304768 + }, + "elapsed_s": 97.88647866249084 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_TORCH_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" + } + } + }, + { + "run": "Mini_n96_TORCH_p1", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 96, + "started": 1792866245.7738216, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 654988, + "first_peak": { + "allocated": 299809792, + "reserved": 354418688 + }, + "steady_peak": { + "allocated": 299809792, + "reserved": 354418688 + }, + "full_window_peak": { + "allocated": 299809792, + "reserved": 354418688 + }, + "steady_wall_ms": { + "median": 11.872476898133755, + "p90": 11.919480795040727, + "min": 11.804745066910982, + "max": 11.942875571548939, + "samples": [ + 11.836314108222723, + 11.879755649715662, + 11.855038814246655, + 11.927897110581398, + 11.942875571548939, + 11.8507519364357, + 11.895966716110706, + 11.83595322072506, + 11.873855255544186, + 11.916685849428177, + 11.880808044224977, + 11.844600085169077, + 11.92786730825901, + 11.874064803123474, + 11.861652135848999, + 11.871820781379938, + 11.877611745148897, + 11.835782788693905, + 11.879375204443932, + 11.870898772031069, + 11.89142931252718, + 11.918548960238695, + 11.804745066910982, + 11.868675705045462, + 11.858276091516018, + 11.873133014887571, + 11.908079963177443, + 11.81336073204875, + 11.842125095427036, + 11.865749955177307 + ] + }, + "steady_event_ms": { + "median": 11.829071998596191, + "p90": 11.876803016662597, + "samples": [ + 11.785920143127441, + 11.836640357971191, + 11.813183784484863, + 11.885760307312012, + 11.900287628173828, + 11.808159828186035, + 11.85324764251709, + 11.793984413146973, + 11.832544326782227, + 11.87440013885498, + 11.839072227478027, + 11.80303955078125, + 11.886272430419922, + 11.832703590393066, + 11.819583892822266, + 11.829728126525879, + 11.82755184173584, + 11.793472290039062, + 11.83788776397705, + 11.828415870666504, + 11.849311828613281, + 11.875807762145996, + 11.762880325317383, + 11.827072143554688, + 11.817312240600586, + 11.831392288208008, + 11.865920066833496, + 11.771136283874512, + 11.800352096557617, + 11.824352264404297 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 59704.94273910299, + 14.817934948951006, + 12.73782690986991, + 12.492494191974401, + 12.31105113402009, + 12.179201934486628, + 12.370773125439882, + 12.554200366139412, + 12.049547396600246 + ], + "event_ms_including_first": [ + 59704.72265625, + 14.78444766998291, + 12.70582389831543, + 12.46025562286377, + 12.278847694396973, + 12.148159980773926, + 12.340448379516602, + 12.524031639099121, + 12.019904136657715 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/6p/c6ptz5ocvvs5y3qw2wrdkfwqgc4khppg6muvh3ieos2bzq2pv24i.py" + ], + "routes": [ + { + "sha256": "4b43a1b1ab027b3a94c3379d411c299005cbbb14e4174a6c3185a78004ed888d", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 299809792, + "reserved": 354418688 + }, + "elapsed_s": 63.70583724975586 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_TORCH_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" + } + } + }, + { + "run": "Mini_n96_TORCH_p2", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 96, + "started": 1792866313.6985586, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 654988, + "first_peak": { + "allocated": 299809792, + "reserved": 354418688 + }, + "steady_peak": { + "allocated": 299809792, + "reserved": 354418688 + }, + "full_window_peak": { + "allocated": 299809792, + "reserved": 354418688 + }, + "steady_wall_ms": { + "median": 11.973392684012651, + "p90": 12.178195919841528, + "min": 11.850764974951744, + "max": 12.349145952612162, + "samples": [ + 12.089837808161974, + 12.15304620563984, + 12.167553883045912, + 12.173835653811693, + 12.09471607580781, + 12.006279081106186, + 12.03369116410613, + 12.060462031513453, + 11.956525035202503, + 11.925095692276955, + 12.330321129411459, + 12.022721115499735, + 11.92574668675661, + 11.89782377332449, + 11.887384112924337, + 11.850764974951744, + 11.997593101114035, + 11.913324240595102, + 11.950814165174961, + 12.118370737880468, + 12.21743831411004, + 11.948390398174524, + 11.975712142884731, + 11.912032030522823, + 11.893205810338259, + 11.885582003742456, + 11.890038847923279, + 11.881554033607244, + 11.971073225140572, + 12.349145952612162 + ] + }, + "steady_event_ms": { + "median": 11.931136131286621, + "p90": 12.135885047912598, + "samples": [ + 12.040191650390625, + 12.109888076782227, + 12.125663757324219, + 12.13152027130127, + 12.052000045776367, + 11.964672088623047, + 11.99068832397461, + 12.01689624786377, + 11.9137601852417, + 11.883744239807129, + 12.288384437561035, + 11.979968070983887, + 11.884032249450684, + 11.855168342590332, + 11.84547233581543, + 11.808704376220703, + 11.955007553100586, + 11.87183952331543, + 11.90931224822998, + 12.076383590698242, + 12.17516803741455, + 11.906304359436035, + 11.933216094970703, + 11.869759559631348, + 11.851136207580566, + 11.843680381774902, + 11.847840309143066, + 11.839167594909668, + 11.929056167602539, + 12.307328224182129 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 60716.16989700124, + 14.733079820871353, + 12.62748334556818, + 12.553762644529343, + 12.356731109321117, + 12.328787706792355, + 12.547621969133615, + 12.847759295254946, + 12.331744190305471 + ], + "event_ms_including_first": [ + 60715.93359375, + 14.700160026550293, + 12.595552444458008, + 12.52182388305664, + 12.32579231262207, + 12.2990083694458, + 12.517056465148926, + 12.816991806030273, + 12.300352096557617 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/6p/c6ptz5ocvvs5y3qw2wrdkfwqgc4khppg6muvh3ieos2bzq2pv24i.py" + ], + "routes": [ + { + "sha256": "4b43a1b1ab027b3a94c3379d411c299005cbbb14e4174a6c3185a78004ed888d", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 299809792, + "reserved": 354418688 + }, + "elapsed_s": 64.75148701667786 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_TORCH_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" + } + } + }, + { + "run": "Nano_n4096_BASE_p0", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 4096, + "started": 1792865253.6144357, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 480268, + "first_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "steady_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "full_window_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "steady_wall_ms": { + "median": 33.639237051829696, + "p90": 33.738844841718674, + "min": 33.57167402282357, + "max": 33.76523917540908, + "samples": [ + 33.64197677001357, + 33.747294917702675, + 33.73164590448141, + 33.6329797282815, + 33.63686706870794, + 33.737597055733204, + 33.633781131356955, + 33.61224103718996, + 33.64518331363797, + 33.5743292234838, + 33.6665129289031, + 33.72410172596574, + 33.64210668951273, + 33.738779835402966, + 33.640805166214705, + 33.610316924750805, + 33.634933177381754, + 33.69778208434582, + 33.66278624162078, + 33.58423803001642, + 33.63535413518548, + 33.76523917540908, + 33.57329685240984, + 33.63766893744469, + 33.57167402282357, + 33.60843379050493, + 33.64728670567274, + 33.62593660131097, + 33.606068696826696, + 33.73942989856005 + ] + }, + "steady_event_ms": { + "median": 33.5918083190918, + "p90": 33.69369125366211, + "samples": [ + 33.58198547363281, + 33.69919967651367, + 33.6860466003418, + 33.58758544921875, + 33.591552734375, + 33.69145584106445, + 33.58883285522461, + 33.56623840332031, + 33.59968185424805, + 33.52956771850586, + 33.62054443359375, + 33.678688049316406, + 33.59699249267578, + 33.69363021850586, + 33.59600067138672, + 33.56547164916992, + 33.5893440246582, + 33.648704528808594, + 33.61705780029297, + 33.540382385253906, + 33.590145111083984, + 33.71955108642578, + 33.5283203125, + 33.592063903808594, + 33.527198791503906, + 33.56467056274414, + 33.60259246826172, + 33.580318450927734, + 33.561729431152344, + 33.69424057006836 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 54837.45691506192, + 40.017187129706144, + 34.25865154713392, + 33.998601138591766, + 36.992254201322794, + 34.63848913088441, + 34.06333224847913, + 34.24490615725517, + 33.88819191604853 + ], + "event_ms_including_first": [ + 54837.25, + 39.981056213378906, + 34.22467041015625, + 33.965919494628906, + 36.96022415161133, + 34.60700988769531, + 34.03238296508789, + 34.21305465698242, + 33.856544494628906 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/mc/cmcshhnw6zjmsa6g2uz2fg4ilw66ueexz73ln3hpykrxg3h3ship.py" + ], + "routes": [ + { + "sha256": "bbfadf5ea5775e0a16623cb8c6854fad704fc72a15d24e3c3e999da74eaee59e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "elapsed_s": 60.83520150184631 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_BASE_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" + } + } + }, + { + "run": "Nano_n4096_BASE_p1", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 4096, + "started": 1792865451.4082878, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 480268, + "first_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "steady_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "full_window_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "steady_wall_ms": { + "median": 33.59390632249415, + "p90": 33.72048828750849, + "min": 33.5276210680604, + "max": 33.816666807979345, + "samples": [ + 33.64565409719944, + 33.71925186365843, + 33.62102713435888, + 33.54980330914259, + 33.594297245144844, + 33.73161610215902, + 33.5276210680604, + 33.58499892055988, + 33.580692019313574, + 33.554391004145145, + 33.57728384435177, + 33.57868688181043, + 33.6191738024354, + 33.73637516051531, + 33.612621016800404, + 33.542159013450146, + 33.62960275262594, + 33.593515399843454, + 33.54010405018926, + 33.569800201803446, + 33.59739203006029, + 33.816666807979345, + 33.59139105305076, + 33.594666980206966, + 33.58374582603574, + 33.575842157006264, + 33.6186527274549, + 33.56025228276849, + 33.69623888283968, + 33.67920685559511 + ] + }, + "steady_event_ms": { + "median": 33.54777526855469, + "p90": 33.67527770996094, + "samples": [ + 33.588382720947266, + 33.67388916015625, + 33.5748176574707, + 33.50486373901367, + 33.54576110839844, + 33.687774658203125, + 33.48332977294922, + 33.53891372680664, + 33.53654479980469, + 33.50998306274414, + 33.533504486083984, + 33.53299331665039, + 33.574913024902344, + 33.69126510620117, + 33.56790542602539, + 33.49679946899414, + 33.58377456665039, + 33.54851150512695, + 33.495582580566406, + 33.52534484863281, + 33.552608489990234, + 33.77222442626953, + 33.54703903198242, + 33.549312591552734, + 33.5392951965332, + 33.5318717956543, + 33.57404708862305, + 33.51558303833008, + 33.651424407958984, + 33.634368896484375 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 55484.10599771887, + 39.5029759965837, + 34.16461404412985, + 33.893000800162554, + 33.82117627188563, + 33.80829142406583, + 33.85297488421202, + 33.98126736283302, + 33.72129611670971 + ], + "event_ms_including_first": [ + 55483.89453125, + 39.469505310058594, + 34.13343811035156, + 33.86105728149414, + 33.78953552246094, + 33.777854919433594, + 33.822208404541016, + 33.95030212402344, + 33.69059371948242 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/mc/cmcshhnw6zjmsa6g2uz2fg4ilw66ueexz73ln3hpykrxg3h3ship.py" + ], + "routes": [ + { + "sha256": "bbfadf5ea5775e0a16623cb8c6854fad704fc72a15d24e3c3e999da74eaee59e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "elapsed_s": 61.48959255218506 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_BASE_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" + } + } + }, + { + "run": "Nano_n4096_BASE_p2", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 4096, + "started": 1792865651.4912226, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 480268, + "first_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "steady_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "full_window_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "steady_wall_ms": { + "median": 33.55279820971191, + "p90": 33.67178360931575, + "min": 33.47690496593714, + "max": 33.75234501436353, + "samples": [ + 33.66990899667144, + 33.62894197925925, + 33.551886677742004, + 33.545543905347586, + 33.58188271522522, + 33.723310101777315, + 33.51209172978997, + 33.59128115698695, + 33.60055899247527, + 33.47690496593714, + 33.50875619798899, + 33.513744827359915, + 33.55615399777889, + 33.63155713304877, + 33.58515910804272, + 33.54282910004258, + 33.52992516011, + 33.582454081624746, + 33.51015783846378, + 33.553709741681814, + 33.51638978347182, + 33.75234501436353, + 33.54529524222016, + 33.58372626826167, + 33.509816974401474, + 33.51752087473869, + 33.573638182133436, + 33.54958212003112, + 33.515107817947865, + 33.688655123114586 + ] + }, + "steady_event_ms": { + "median": 33.50811195373535, + "p90": 33.618245697021486, + "samples": [ + 33.61529541015625, + 33.58233642578125, + 33.50681686401367, + 33.50028610229492, + 33.537376403808594, + 33.67824172973633, + 33.46828842163086, + 33.546688079833984, + 33.549407958984375, + 33.43312072753906, + 33.46371078491211, + 33.469886779785156, + 33.51212692260742, + 33.58784103393555, + 33.54064178466797, + 33.496639251708984, + 33.48371124267578, + 33.53782272338867, + 33.466304779052734, + 33.50940704345703, + 33.472991943359375, + 33.7086067199707, + 33.50115203857422, + 33.53984069824219, + 33.46681594848633, + 33.47420883178711, + 33.52979278564453, + 33.50553512573242, + 33.470977783203125, + 33.644798278808594 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 55512.14522216469, + 39.35163002461195, + 33.92147412523627, + 33.78685005009174, + 33.762936014682055, + 33.742906991392374, + 33.84470986202359, + 33.97524589672685, + 33.6701599881053 + ], + "event_ms_including_first": [ + 55511.91796875, + 39.3125114440918, + 33.88896179199219, + 33.754398345947266, + 33.73177719116211, + 33.71196746826172, + 33.81283187866211, + 33.94464111328125, + 33.63897705078125 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/mc/cmcshhnw6zjmsa6g2uz2fg4ilw66ueexz73ln3hpykrxg3h3ship.py" + ], + "routes": [ + { + "sha256": "bbfadf5ea5775e0a16623cb8c6854fad704fc72a15d24e3c3e999da74eaee59e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "elapsed_s": 61.51416873931885 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_BASE_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" + } + } + }, + { + "run": "Nano_n4096_ECS_p0", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 4096, + "started": 1792865319.2081473, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 480268, + "first_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "steady_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "full_window_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "steady_wall_ms": { + "median": 33.56249653734267, + "p90": 33.65920991636813, + "min": 33.48502004519105, + "max": 33.78743166103959, + "samples": [ + 33.78743166103959, + 33.67964783683419, + 33.571163192391396, + 33.50574988871813, + 33.48502004519105, + 33.58804481104016, + 33.638681285083294, + 33.560823649168015, + 33.563819248229265, + 33.50716223940253, + 33.54077599942684, + 33.56117382645607, + 33.55917055159807, + 33.55776704847813, + 33.58149202540517, + 33.65829819813371, + 33.57411874458194, + 33.54843985289335, + 33.522079698741436, + 33.57640327885747, + 33.60564820468426, + 33.52191997691989, + 33.502473030239344, + 33.53985399007797, + 33.667415380477905, + 33.57108309864998, + 33.58917683362961, + 33.51984731853008, + 33.55085523799062, + 33.57009124010801 + ] + }, + "steady_event_ms": { + "median": 33.5189266204834, + "p90": 33.61557388305664, + "samples": [ + 33.72489547729492, + 33.62675094604492, + 33.525856018066406, + 33.46108627319336, + 33.440895080566406, + 33.54499053955078, + 33.59436798095703, + 33.515838623046875, + 33.51996612548828, + 33.46384048461914, + 33.49715042114258, + 33.517887115478516, + 33.511199951171875, + 33.51420974731445, + 33.536705017089844, + 33.61471939086914, + 33.5307502746582, + 33.50502395629883, + 33.47849655151367, + 33.5335693359375, + 33.560768127441406, + 33.477630615234375, + 33.459007263183594, + 33.49574279785156, + 33.62326431274414, + 33.527679443359375, + 33.53731155395508, + 33.47679901123047, + 33.508094787597656, + 33.52707290649414 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 54867.95313982293, + 39.59920722991228, + 34.005504101514816, + 33.84555084630847, + 33.74310815706849, + 33.69056899100542, + 34.8994517698884, + 87.70747622475028, + 33.73203659430146 + ], + "event_ms_including_first": [ + 54867.7421875, + 39.56758499145508, + 33.973472595214844, + 33.812896728515625, + 33.71267318725586, + 33.66115188598633, + 34.86947250366211, + 87.67699432373047, + 33.70051193237305 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/fe/cfebefbouar7sbvih4kqo6idf32bnivzmdmkelj6zxrfnr67kltw.py" + ], + "routes": [ + { + "sha256": "fe71d505febf0c32eb4c837d76ffa98baf33e57d9d0ae4628705a385edebf3ef", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "elapsed_s": 60.93559670448303 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_ECS_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" + } + } + }, + { + "run": "Nano_n4096_ECS_p1", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 4096, + "started": 1792865385.2900107, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 480268, + "first_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "steady_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "full_window_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "steady_wall_ms": { + "median": 33.59777294099331, + "p90": 33.68244916200638, + "min": 33.518703654408455, + "max": 33.72800862416625, + "samples": [ + 33.57038088142872, + 33.6095760576427, + 33.59959693625569, + 33.70034694671631, + 33.597432076931, + 33.581191673874855, + 33.64808764308691, + 33.58934773132205, + 33.61694002524018, + 33.518703654408455, + 33.57557114213705, + 33.581022173166275, + 33.56056287884712, + 33.64083403721452, + 33.59811380505562, + 33.72800862416625, + 33.59952615574002, + 33.58338586986065, + 33.554250840097666, + 33.54181814938784, + 33.6506930179894, + 33.60937489196658, + 33.58849510550499, + 33.580340910702944, + 33.68083015084267, + 33.554641995579004, + 33.69702026247978, + 33.58879592269659, + 33.603363670408726, + 33.59922580420971 + ] + }, + "steady_event_ms": { + "median": 33.550048828125, + "p90": 33.63717880249023, + "samples": [ + 33.51567840576172, + 33.563201904296875, + 33.55433654785156, + 33.65488052368164, + 33.5530891418457, + 33.534912109375, + 33.60348892211914, + 33.543582916259766, + 33.57244873046875, + 33.473087310791016, + 33.53129577636719, + 33.5359992980957, + 33.51536178588867, + 33.5959358215332, + 33.552127838134766, + 33.68345642089844, + 33.55516815185547, + 33.538753509521484, + 33.50966262817383, + 33.49740982055664, + 33.60665512084961, + 33.56390380859375, + 33.543678283691406, + 33.53481674194336, + 33.63568115234375, + 33.50998306274414, + 33.650657653808594, + 33.54355239868164, + 33.558528900146484, + 33.547969818115234 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 55326.546587981284, + 39.755592588335276, + 34.307282883673906, + 33.9517118409276, + 33.86435657739639, + 33.748327288776636, + 33.8508621789515, + 34.1216828674078, + 33.708772622048855 + ], + "event_ms_including_first": [ + 55326.32421875, + 39.721439361572266, + 34.27497482299805, + 33.91881561279297, + 33.83283233642578, + 33.71763229370117, + 33.813568115234375, + 34.09062576293945, + 33.671966552734375 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/fe/cfebefbouar7sbvih4kqo6idf32bnivzmdmkelj6zxrfnr67kltw.py" + ], + "routes": [ + { + "sha256": "fe71d505febf0c32eb4c837d76ffa98baf33e57d9d0ae4628705a385edebf3ef", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "elapsed_s": 61.37485408782959 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_ECS_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" + } + } + }, + { + "run": "Nano_n4096_ECS_p2", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 4096, + "started": 1792865717.8257728, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 480268, + "first_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "steady_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "full_window_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "steady_wall_ms": { + "median": 33.589447382837534, + "p90": 33.697893330827355, + "min": 33.53781998157501, + "max": 33.70968485251069, + "samples": [ + 33.57557114213705, + 33.70696026831865, + 33.63008378073573, + 33.571504056453705, + 33.62324181944132, + 33.62398315221071, + 33.69774203747511, + 33.58308598399162, + 33.63529499620199, + 33.592683263123035, + 33.637598156929016, + 33.59480807557702, + 33.56406977400184, + 33.546196296811104, + 33.58618076890707, + 33.69925497099757, + 33.59286393970251, + 33.556765876710415, + 33.58974773436785, + 33.59315497800708, + 33.594788052141666, + 33.57645310461521, + 33.57342816889286, + 33.583576790988445, + 33.70968485251069, + 33.53781998157501, + 33.58914703130722, + 33.57126330956817, + 33.55047386139631, + 33.55503315106034 + ] + }, + "steady_event_ms": { + "median": 33.54452896118164, + "p90": 33.653022384643556, + "samples": [ + 33.52134323120117, + 33.66096115112305, + 33.584129333496094, + 33.52675247192383, + 33.579071044921875, + 33.579071044921875, + 33.653568267822266, + 33.53830337524414, + 33.590721130371094, + 33.54710388183594, + 33.59267044067383, + 33.550113677978516, + 33.51030349731445, + 33.50166320800781, + 33.54182434082031, + 33.65296173095703, + 33.54703903198242, + 33.51276779174805, + 33.544769287109375, + 33.54924774169922, + 33.5503044128418, + 33.53120040893555, + 33.52899169921875, + 33.538848876953125, + 33.665313720703125, + 33.49302291870117, + 33.544288635253906, + 33.526336669921875, + 33.50620651245117, + 33.5115852355957 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 54869.62467804551, + 39.9483572691679, + 33.97274063900113, + 33.79550715908408, + 34.0077867731452, + 34.15979538112879, + 33.85108197107911, + 34.15454505011439, + 33.82469201460481 + ], + "event_ms_including_first": [ + 54869.3984375, + 39.9128303527832, + 33.94073486328125, + 33.76473617553711, + 33.971839904785156, + 34.12879943847656, + 33.82060623168945, + 34.1247673034668, + 33.793792724609375 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/fe/cfebefbouar7sbvih4kqo6idf32bnivzmdmkelj6zxrfnr67kltw.py" + ], + "routes": [ + { + "sha256": "fe71d505febf0c32eb4c837d76ffa98baf33e57d9d0ae4628705a385edebf3ef", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "elapsed_s": 60.96187090873718 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_ECS_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" + } + } + }, + { + "run": "Nano_n4096_TORCH_p0", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 4096, + "started": 1792865186.314646, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 480268, + "first_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "steady_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "full_window_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "steady_wall_ms": { + "median": 56.467912858352065, + "p90": 56.539253843948245, + "min": 56.41053384169936, + "max": 56.676206178963184, + "samples": [ + 56.423477828502655, + 56.473503820598125, + 56.48699775338173, + 56.49141687899828, + 56.44672177731991, + 56.51460122317076, + 56.443074718117714, + 56.43230536952615, + 56.41053384169936, + 56.41792807728052, + 56.477701757103205, + 56.45526805892587, + 56.48570600897074, + 56.441121734678745, + 56.59043416380882, + 56.42866902053356, + 56.420162320137024, + 56.43951892852783, + 56.462321896106005, + 56.44660210236907, + 56.49378104135394, + 56.4531646668911, + 56.5199414268136, + 56.676206178963184, + 56.61236634477973, + 56.51857890188694, + 56.533567141741514, + 56.48784013465047, + 56.41874996945262, + 56.52504973113537 + ] + }, + "steady_event_ms": { + "median": 56.422000885009766, + "p90": 56.49388313293457, + "samples": [ + 56.368736267089844, + 56.42630386352539, + 56.440032958984375, + 56.441951751708984, + 56.401214599609375, + 56.469791412353516, + 56.398048400878906, + 56.3864631652832, + 56.364864349365234, + 56.37295913696289, + 56.428672790527344, + 56.410240173339844, + 56.44131088256836, + 56.39628982543945, + 56.545982360839844, + 56.38371276855469, + 56.374977111816406, + 56.395294189453125, + 56.41769790649414, + 56.40198516845703, + 56.448543548583984, + 56.40755081176758, + 56.47248077392578, + 56.631614685058594, + 56.56755065917969, + 56.47401428222656, + 56.488094329833984, + 56.442623138427734, + 56.37420654296875, + 56.48064041137695 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 55517.836848739535, + 62.92313290759921, + 56.751868687570095, + 56.71780463308096, + 56.526102125644684, + 56.58322013914585, + 56.62134196609259, + 56.75896164029837, + 56.473884265869856 + ], + "event_ms_including_first": [ + 55517.6484375, + 62.890785217285156, + 56.71971130371094, + 56.684478759765625, + 56.49484634399414, + 56.55292892456055, + 56.5909423828125, + 56.728065490722656, + 56.44348907470703 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/zi/cziiiddfhdwtparpkcfw37er53vawenwzpsdvpxvs5odi67ztozy.py" + ], + "routes": [ + { + "sha256": "671320d7fc3f17ba6859418708b63017691791082ef155bff72d047363fd3d2b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "elapsed_s": 62.98772692680359 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_TORCH_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" + } + } + }, + { + "run": "Nano_n4096_TORCH_p1", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 4096, + "started": 1792865517.6458747, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 480268, + "first_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "steady_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "full_window_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "steady_wall_ms": { + "median": 56.43263435922563, + "p90": 56.59253243356943, + "min": 56.38753483071923, + "max": 56.72779772430658, + "samples": [ + 56.46520061418414, + 56.577994022518396, + 56.42602685838938, + 56.42098793759942, + 56.43423227593303, + 56.59371428191662, + 56.41968501731753, + 56.43337080255151, + 56.431897915899754, + 56.41495622694492, + 56.398444809019566, + 56.72779772430658, + 56.40287371352315, + 56.458909064531326, + 56.59240111708641, + 56.42917286604643, + 56.55619315803051, + 56.49274401366711, + 56.447537150233984, + 56.53482209891081, + 56.47737393155694, + 56.41772085800767, + 56.4112002030015, + 56.605064775794744, + 56.38753483071923, + 56.39732303097844, + 56.41082813963294, + 56.40697106719017, + 56.42417399212718, + 56.4510440453887 + ] + }, + "steady_event_ms": { + "median": 56.387535095214844, + "p90": 56.539633178710936, + "samples": [ + 56.39487838745117, + 56.52921676635742, + 56.37919998168945, + 56.374656677246094, + 56.38924789428711, + 56.54899215698242, + 56.3666877746582, + 56.387550354003906, + 56.38751983642578, + 56.369537353515625, + 56.35308837890625, + 56.6822395324707, + 56.357601165771484, + 56.413856506347656, + 56.53859329223633, + 56.38227081298828, + 56.51152038574219, + 56.447391510009766, + 56.39235305786133, + 56.48915100097656, + 56.43289566040039, + 56.37343978881836, + 56.365440368652344, + 56.56089782714844, + 56.343326568603516, + 56.351200103759766, + 56.36671829223633, + 56.3625602722168, + 56.3804817199707, + 56.407264709472656 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 55881.2905466184, + 62.508014030754566, + 56.87322234734893, + 56.75185285508633, + 56.555502116680145, + 56.554548908025026, + 56.6428666934371, + 56.701366789638996, + 56.524012703448534 + ], + "event_ms_including_first": [ + 55881.0703125, + 62.46080017089844, + 56.84076690673828, + 56.719966888427734, + 56.52588653564453, + 56.52159881591797, + 56.61305618286133, + 56.6712646484375, + 56.49363327026367 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/zi/cziiiddfhdwtparpkcfw37er53vawenwzpsdvpxvs5odi67ztozy.py" + ], + "routes": [ + { + "sha256": "671320d7fc3f17ba6859418708b63017691791082ef155bff72d047363fd3d2b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "elapsed_s": 63.37538719177246 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_TORCH_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" + } + } + }, + { + "run": "Nano_n4096_TORCH_p2", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 4096, + "started": 1792865585.1975026, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 480268, + "first_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "steady_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "full_window_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "steady_wall_ms": { + "median": 56.51950347237289, + "p90": 56.61683832295239, + "min": 56.463117245584726, + "max": 56.66384706273675, + "samples": [ + 56.468007154762745, + 56.64713401347399, + 56.57438701018691, + 56.56798463314772, + 56.5273379907012, + 56.66384706273675, + 56.52137706056237, + 56.53286911547184, + 56.53837928548455, + 56.489257141947746, + 56.590067222714424, + 56.48427689447999, + 56.493985932320356, + 56.50494573637843, + 56.618650909513235, + 56.504515931010246, + 56.55480129644275, + 56.51798099279404, + 56.50304304435849, + 56.50238133966923, + 56.476382073014975, + 56.49193236604333, + 56.482844054698944, + 56.61663692444563, + 56.463117245584726, + 56.53766822069883, + 56.537797674536705, + 56.51942314580083, + 56.47734412923455, + 56.51958379894495 + ] + }, + "steady_event_ms": { + "median": 56.47407913208008, + "p90": 56.570186614990234, + "samples": [ + 56.41177749633789, + 56.60051345825195, + 56.52742385864258, + 56.52009582519531, + 56.481536865234375, + 56.61811065673828, + 56.475521087646484, + 56.48611068725586, + 56.49241638183594, + 56.442142486572266, + 56.542945861816406, + 56.43910217285156, + 56.448673248291016, + 56.45814514160156, + 56.5728645324707, + 56.4574089050293, + 56.50950241088867, + 56.47078323364258, + 56.45772933959961, + 56.45692825317383, + 56.430816650390625, + 56.445472717285156, + 56.42975997924805, + 56.569889068603516, + 56.41654586791992, + 56.49184036254883, + 56.492095947265625, + 56.473663330078125, + 56.43190383911133, + 56.47449493408203 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 54410.43918207288, + 63.58301406726241, + 57.15729808434844, + 56.66540935635567, + 56.650811806321144, + 56.604133918881416, + 56.70361081138253, + 56.758936028927565, + 56.49197194725275 + ], + "event_ms_including_first": [ + 54410.22265625, + 63.54556655883789, + 57.12470245361328, + 56.6328010559082, + 56.61894226074219, + 56.57334518432617, + 56.67251205444336, + 56.727935791015625, + 56.460670471191406 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/zi/cziiiddfhdwtparpkcfw37er53vawenwzpsdvpxvs5odi67ztozy.py" + ], + "routes": [ + { + "sha256": "671320d7fc3f17ba6859418708b63017691791082ef155bff72d047363fd3d2b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "elapsed_s": 61.86613392829895 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_TORCH_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" + } + } + }, + { + "run": "Nano_n512_BASE_p0", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 512, + "started": 1792864672.8544633, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 480268, + "first_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "steady_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "full_window_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "steady_wall_ms": { + "median": 11.1921401694417, + "p90": 11.412075813859701, + "min": 11.113476008176804, + "max": 11.538049206137657, + "samples": [ + 11.538049206137657, + 11.434934101998806, + 11.378356255590916, + 11.379428673535585, + 11.47891627624631, + 11.409536004066467, + 11.402552016079426, + 11.373907793313265, + 11.340655852109194, + 11.370802763849497, + 11.196413077414036, + 11.139716021716595, + 11.113476939499378, + 11.113476008176804, + 11.121410876512527, + 11.193518061190844, + 11.265052948147058, + 11.152369901537895, + 11.215869802981615, + 11.200100183486938, + 11.155526153743267, + 11.166867334395647, + 11.145616881549358, + 11.190762277692556, + 11.184060014784336, + 11.144725140184164, + 11.119537986814976, + 11.188548058271408, + 11.12406700849533, + 11.181846261024475 + ] + }, + "steady_event_ms": { + "median": 11.147887706756592, + "p90": 11.36800012588501, + "samples": [ + 11.480704307556152, + 11.389887809753418, + 11.334431648254395, + 11.336031913757324, + 11.435487747192383, + 11.365568161010742, + 11.360032081604004, + 11.3306884765625, + 11.29526424407959, + 11.327775955200195, + 11.153056144714355, + 11.095328330993652, + 11.070560455322266, + 11.070464134216309, + 11.078720092773438, + 11.150015830993652, + 11.221887588500977, + 11.108768463134766, + 11.171551704406738, + 11.15664005279541, + 11.112095832824707, + 11.12342357635498, + 11.102144241333008, + 11.145631790161133, + 11.140735626220703, + 11.101792335510254, + 11.075648307800293, + 11.145759582519531, + 11.080863952636719, + 11.138751983642578 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 54849.28183630109, + 14.635247178375721, + 12.101061176508665, + 11.98397995904088, + 11.616817209869623, + 11.628498788923025, + 11.476773303002119, + 11.782790068536997, + 11.699703987687826 + ], + "event_ms_including_first": [ + 54849.0625, + 14.581184387207031, + 12.06873607635498, + 11.951199531555176, + 11.585760116577148, + 11.597375869750977, + 11.446304321289062, + 11.751872062683105, + 11.666303634643555 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/ga/cga7e3zlaa3pm56ptkcksm427sdaxfris3hj2znxqfhmc7zhxepr.py" + ], + "routes": [ + { + "sha256": "c11e155658bce0552509e209cbbe6d3cdd3ff19e64909cbc53b5d18edd099a89", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "elapsed_s": 59.15643262863159 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_BASE_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" + } + } + }, + { + "run": "Nano_n512_BASE_p1", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 512, + "started": 1792864865.7160206, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 480268, + "first_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "steady_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "full_window_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "steady_wall_ms": { + "median": 10.9702805057168, + "p90": 11.062636831775308, + "min": 10.903008747845888, + "max": 11.15195918828249, + "samples": [ + 11.007116176187992, + 11.062209028750658, + 10.97187865525484, + 10.96072793006897, + 11.035609059035778, + 10.989343281835318, + 10.934037156403065, + 10.973893105983734, + 11.011854745447636, + 10.943996720016003, + 10.968923103064299, + 10.94022998586297, + 10.904612019658089, + 10.962200816720724, + 10.9318639151752, + 10.96603786572814, + 11.069482658058405, + 10.947202797979116, + 10.991314891725779, + 11.025229934602976, + 10.931592900305986, + 10.914790909737349, + 10.971637908369303, + 10.903008747845888, + 10.95147104933858, + 10.983190964907408, + 10.952393058687449, + 10.99151698872447, + 11.066487058997154, + 11.15195918828249 + ] + }, + "steady_event_ms": { + "median": 10.927616119384766, + "p90": 11.018886375427247, + "samples": [ + 10.94438362121582, + 11.018239974975586, + 10.928607940673828, + 10.918399810791016, + 10.992447853088379, + 10.947648048400879, + 10.891648292541504, + 10.93171215057373, + 10.970399856567383, + 10.901344299316406, + 10.926624298095703, + 10.896927833557129, + 10.86246395111084, + 10.920607566833496, + 10.890399932861328, + 10.923263549804688, + 11.027071952819824, + 10.897151947021484, + 10.948287963867188, + 10.983231544494629, + 10.888480186462402, + 10.873023986816406, + 10.929375648498535, + 10.860480308532715, + 10.90937614440918, + 10.940704345703125, + 10.909472465515137, + 10.949407577514648, + 11.024703979492188, + 11.103520393371582 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 54901.77723625675, + 16.8565409258008, + 12.315535917878151, + 11.930570006370544, + 11.56400702893734, + 11.444050818681717, + 11.399406008422375, + 11.76080759614706, + 11.864924803376198 + ], + "event_ms_including_first": [ + 54901.57421875, + 16.82134437561035, + 12.282591819763184, + 11.898591995239258, + 11.533439636230469, + 11.414336204528809, + 11.36963176727295, + 11.729472160339355, + 11.833536148071289 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/ga/cga7e3zlaa3pm56ptkcksm427sdaxfris3hj2znxqfhmc7zhxepr.py" + ], + "routes": [ + { + "sha256": "c11e155658bce0552509e209cbbe6d3cdd3ff19e64909cbc53b5d18edd099a89", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "elapsed_s": 59.13134813308716 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_BASE_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" + } + } + }, + { + "run": "Nano_n512_BASE_p2", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 512, + "started": 1792865057.389775, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 480268, + "first_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "steady_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "full_window_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "steady_wall_ms": { + "median": 11.256080819293857, + "p90": 11.325887963175774, + "min": 11.17898989468813, + "max": 11.378065682947636, + "samples": [ + 11.325245723128319, + 11.302753817290068, + 11.297313030809164, + 11.304727755486965, + 11.378065682947636, + 11.331668123602867, + 11.235986836254597, + 11.247259099036455, + 11.186434887349606, + 11.277145240455866, + 11.225016787648201, + 11.17898989468813, + 11.24687772244215, + 11.240446008741856, + 11.244514025747776, + 11.229325085878372, + 11.342990212142467, + 11.254452634602785, + 11.27601321786642, + 11.272456031292677, + 11.288526933640242, + 11.29560125991702, + 11.218674946576357, + 11.252749245613813, + 11.24634686857462, + 11.273258365690708, + 11.24621694907546, + 11.295530945062637, + 11.257709003984928, + 11.22845383360982 + ] + }, + "steady_event_ms": { + "median": 11.20897626876831, + "p90": 11.27391996383667, + "samples": [ + 11.272480010986328, + 11.257087707519531, + 11.252479553222656, + 11.261343955993652, + 11.333632469177246, + 11.286879539489746, + 11.191776275634766, + 11.202752113342285, + 11.142911911010742, + 11.233695983886719, + 11.180607795715332, + 11.134655952453613, + 11.20297622680664, + 11.196672439575195, + 11.199487686157227, + 11.1845121383667, + 11.291135787963867, + 11.210176467895508, + 11.232159614562988, + 11.228192329406738, + 11.243424415588379, + 11.25164794921875, + 11.174400329589844, + 11.199808120727539, + 11.201472282409668, + 11.228992462158203, + 11.20195198059082, + 11.251328468322754, + 11.207776069641113, + 11.183679580688477 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 54922.19497309998, + 14.407956972718239, + 11.997226160019636, + 11.739509180188179, + 11.592520866543055, + 11.560249608010054, + 11.612508911639452, + 11.769124772399664, + 18.945065792649984 + ], + "event_ms_including_first": [ + 54921.9921875, + 14.375136375427246, + 11.964608192443848, + 11.70412826538086, + 11.561440467834473, + 11.529536247253418, + 11.581727981567383, + 11.737631797790527, + 18.912416458129883 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/ga/cga7e3zlaa3pm56ptkcksm427sdaxfris3hj2znxqfhmc7zhxepr.py" + ], + "routes": [ + { + "sha256": "c11e155658bce0552509e209cbbe6d3cdd3ff19e64909cbc53b5d18edd099a89", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "elapsed_s": 59.08953332901001 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_BASE_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" + } + } + }, + { + "run": "Nano_n512_ECS_p0", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 512, + "started": 1792864736.9773095, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 480268, + "first_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "steady_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "full_window_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "steady_wall_ms": { + "median": 11.038615368306637, + "p90": 11.383346561342478, + "min": 10.979062877595425, + "max": 11.57768303528428, + "samples": [ + 11.294178199023008, + 11.57768303528428, + 11.154414154589176, + 11.02809514850378, + 11.040568817406893, + 11.021634098142385, + 11.017024051398039, + 10.991415940225124, + 11.092246044427156, + 11.064654216170311, + 11.481050867587328, + 11.113566812127829, + 11.045609135180712, + 11.038264725357294, + 11.034877970814705, + 11.025148909538984, + 11.078401003032923, + 11.089229956269264, + 11.021382175385952, + 11.382604017853737, + 11.002096347510815, + 10.98922174423933, + 10.979062877595425, + 10.995973832905293, + 11.030579917132854, + 11.03896601125598, + 11.034728027880192, + 11.00781699642539, + 11.390029452741146, + 11.199349071830511 + ] + }, + "steady_event_ms": { + "median": 10.99508810043335, + "p90": 11.340579509735107, + "samples": [ + 11.243647575378418, + 11.529376029968262, + 11.111552238464355, + 10.983488082885742, + 10.997056007385254, + 10.977824211120605, + 10.974111557006836, + 10.946784019470215, + 11.048192024230957, + 11.02086353302002, + 11.437664031982422, + 11.0698881149292, + 11.001855850219727, + 10.994784355163574, + 10.991040229797363, + 10.981247901916504, + 11.035391807556152, + 11.044960021972656, + 10.978431701660156, + 11.339872360229492, + 10.958944320678711, + 10.94649600982666, + 10.935615539550781, + 10.951807975769043, + 10.983648300170898, + 10.995391845703125, + 10.99068832397461, + 10.964127540588379, + 11.346943855285645, + 11.155839920043945 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 54961.92668098956, + 14.267463237047195, + 11.900443118065596, + 11.985043063759804, + 11.371012777090073, + 11.384227778762579, + 15.718451701104641, + 14.074356760829687, + 11.49061881005764 + ], + "event_ms_including_first": [ + 54961.72265625, + 14.23311996459961, + 11.868032455444336, + 11.952128410339355, + 11.340127944946289, + 11.35324764251709, + 15.687840461730957, + 14.042816162109375, + 11.458175659179688 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/wo/cwo62idblozatqg4kgjkv3wraljg6txodj5xveaw3wqub4po2kh4.py" + ], + "routes": [ + { + "sha256": "6542c402bf0c74df1f71266111b5ad040463d8e513f6e2fabb83dbe368c8571c", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "elapsed_s": 59.15576720237732 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_ECS_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" + } + } + }, + { + "run": "Nano_n512_ECS_p1", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 512, + "started": 1792864800.741138, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 480268, + "first_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "steady_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "full_window_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "steady_wall_ms": { + "median": 11.160740396007895, + "p90": 11.249917186796665, + "min": 11.093799024820328, + "max": 11.342649348080158, + "samples": [ + 11.229204945266247, + 11.342649348080158, + 11.271545197814703, + 11.16531528532505, + 11.142981704324484, + 11.26545388251543, + 11.162599083036184, + 11.159322690218687, + 11.248190887272358, + 11.209717951714993, + 11.199908796697855, + 11.162799783051014, + 11.178719811141491, + 11.152721010148525, + 11.104779783636332, + 11.15027628839016, + 11.199548840522766, + 11.110069695860147, + 11.153320781886578, + 11.135257314890623, + 11.143504176288843, + 11.093799024820328, + 11.162158101797104, + 11.09814690425992, + 11.197084095329046, + 11.171675752848387, + 11.138834059238434, + 11.14035677164793, + 11.142049916088581, + 11.120489798486233 + ] + }, + "steady_event_ms": { + "median": 11.11729621887207, + "p90": 11.206403064727784, + "samples": [ + 11.177248001098633, + 11.297504425048828, + 11.223999977111816, + 11.120896339416504, + 11.099103927612305, + 11.221983909606934, + 11.119135856628418, + 11.11622428894043, + 11.204671859741211, + 11.16540813446045, + 11.155776023864746, + 11.119775772094727, + 11.13542366027832, + 11.107359886169434, + 11.061344146728516, + 11.106368064880371, + 11.15664005279541, + 11.06704044342041, + 11.109951972961426, + 11.090239524841309, + 11.100159645080566, + 11.05078411102295, + 11.118368148803711, + 11.053824424743652, + 11.15385627746582, + 11.128288269042969, + 11.095871925354004, + 11.097023963928223, + 11.098560333251953, + 11.07759952545166 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 55750.25101471692, + 14.614017214626074, + 12.277984991669655, + 12.025348842144012, + 11.723307892680168, + 11.674505658447742, + 11.673654895275831, + 11.958582792431116, + 11.443289928138256 + ], + "event_ms_including_first": [ + 55750.046875, + 14.579008102416992, + 12.245408058166504, + 11.993120193481445, + 11.693023681640625, + 11.643327713012695, + 11.64352035522461, + 11.92841625213623, + 11.404928207397461 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/wo/cwo62idblozatqg4kgjkv3wraljg6txodj5xveaw3wqub4po2kh4.py" + ], + "routes": [ + { + "sha256": "6542c402bf0c74df1f71266111b5ad040463d8e513f6e2fabb83dbe368c8571c", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "elapsed_s": 59.91718244552612 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_ECS_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" + } + } + }, + { + "run": "Nano_n512_ECS_p2", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 512, + "started": 1792865121.4820917, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 480268, + "first_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "steady_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "full_window_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "steady_wall_ms": { + "median": 11.161016300320625, + "p90": 11.202026391401887, + "min": 11.112434789538383, + "max": 11.254040990024805, + "samples": [ + 11.194468941539526, + 11.254040990024805, + 11.14242197945714, + 11.15045603364706, + 11.163199786096811, + 11.168228927999735, + 11.162989772856236, + 11.157198809087276, + 11.217824183404446, + 11.174000799655914, + 11.153440922498703, + 11.139145120978355, + 11.159042827785015, + 11.20027108117938, + 11.13891415297985, + 11.130067985504866, + 11.185080744326115, + 11.198617052286863, + 11.15304185077548, + 11.170213110744953, + 11.112434789538383, + 11.132633313536644, + 11.113926768302917, + 11.116612236946821, + 11.237810831516981, + 11.178349144756794, + 11.144273914396763, + 11.12359482795, + 11.171515099704266, + 11.184731032699347 + ] + }, + "steady_event_ms": { + "median": 11.116624355316162, + "p90": 11.158575630187988, + "samples": [ + 11.1429443359375, + 11.21014404296875, + 11.099072456359863, + 11.107199668884277, + 11.119584083557129, + 11.1244478225708, + 11.117952346801758, + 11.112832069396973, + 11.17369556427002, + 11.130240440368652, + 11.110176086425781, + 11.095392227172852, + 11.115296363830566, + 11.156895637512207, + 11.095104217529297, + 11.086112022399902, + 11.141216278076172, + 11.154496192932129, + 11.108448028564453, + 11.126720428466797, + 11.069375991821289, + 11.089471817016602, + 11.069567680358887, + 11.07254409790039, + 11.193535804748535, + 11.13212776184082, + 11.101183891296387, + 11.08073616027832, + 11.128255844116211, + 11.141471862792969 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 55531.21514292434, + 14.188512694090605, + 11.772110126912594, + 11.793059762567282, + 11.623440310359001, + 11.523670982569456, + 11.560289654880762, + 11.819619685411453, + 11.362637393176556 + ], + "event_ms_including_first": [ + 55531.015625, + 14.155839920043945, + 11.740575790405273, + 11.75932788848877, + 11.592255592346191, + 11.492959976196289, + 11.529631614685059, + 11.788352012634277, + 11.331487655639648 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/wo/cwo62idblozatqg4kgjkv3wraljg6txodj5xveaw3wqub4po2kh4.py" + ], + "routes": [ + { + "sha256": "6542c402bf0c74df1f71266111b5ad040463d8e513f6e2fabb83dbe368c8571c", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "elapsed_s": 59.76078939437866 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_ECS_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" + } + } + }, + { + "run": "Nano_n512_TORCH_p0", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 512, + "started": 1792864609.6866386, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 480268, + "first_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "steady_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "full_window_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "steady_wall_ms": { + "median": 11.875134659931064, + "p90": 11.910365149378777, + "min": 11.80792786180973, + "max": 12.286973185837269, + "samples": [ + 11.919487733393908, + 11.914188973605633, + 11.870906222611666, + 11.89138600602746, + 11.840478982776403, + 11.903608217835426, + 11.856870260089636, + 11.867691297084093, + 11.831692885607481, + 11.88244903460145, + 11.894190683960915, + 11.80792786180973, + 11.871587950736284, + 11.893909890204668, + 11.846971232444048, + 11.85173075646162, + 11.886064894497395, + 11.875355150550604, + 11.881676968187094, + 11.874914169311523, + 11.84031879529357, + 11.909940280020237, + 11.8478131480515, + 11.852841824293137, + 11.851389892399311, + 11.876517906785011, + 12.286973185837269, + 11.87782920897007, + 11.849295813590288, + 11.876638047397137 + ] + }, + "steady_event_ms": { + "median": 11.830927848815918, + "p90": 11.866732692718506, + "samples": [ + 11.867712020874023, + 11.868351936340332, + 11.825311660766602, + 11.839615821838379, + 11.79638385772705, + 11.860128402709961, + 11.813088417053223, + 11.823103904724121, + 11.788384437561035, + 11.839391708374023, + 11.850784301757812, + 11.764063835144043, + 11.827648162841797, + 11.850239753723145, + 11.80288028717041, + 11.807007789611816, + 11.842528343200684, + 11.831583976745605, + 11.838432312011719, + 11.83027172088623, + 11.797120094299316, + 11.866623878479004, + 11.80361557006836, + 11.809408187866211, + 11.806528091430664, + 11.832863807678223, + 12.24294376373291, + 11.833215713500977, + 11.80617618560791, + 11.833120346069336 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 54857.05778002739, + 14.987031929194927, + 12.248619925230742, + 12.248890940099955, + 12.171324342489243, + 12.148921843618155, + 12.096482794731855, + 12.345283292233944, + 11.95844216272235 + ], + "event_ms_including_first": [ + 54856.86328125, + 14.953856468200684, + 12.216544151306152, + 12.215680122375488, + 12.140447616577148, + 12.116928100585938, + 12.065024375915527, + 12.314111709594727, + 11.926591873168945 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/3j/c3jhrl6ze54ozmozxtxuizkafijbohbw53j53hn2okkeqhybm3ep.py" + ], + "routes": [ + { + "sha256": "752d0803e3c03a8e34aa80861e1dea19b373e140d04e0e08bdbf5ab50de13d29", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "elapsed_s": 58.72197246551514 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_TORCH_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" + } + } + }, + { + "run": "Nano_n512_TORCH_p1", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 512, + "started": 1792864929.705408, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 480268, + "first_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "steady_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "full_window_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "steady_wall_ms": { + "median": 11.83854485861957, + "p90": 11.887328512966633, + "min": 11.79527398198843, + "max": 12.16445118188858, + "samples": [ + 11.858372949063778, + 11.886557098478079, + 11.836391873657703, + 11.834598146378994, + 11.827996000647545, + 11.800132691860199, + 11.910691857337952, + 11.852622032165527, + 11.837894096970558, + 11.866007931530476, + 11.878842022269964, + 11.842864099889994, + 11.829449329525232, + 11.894271243363619, + 11.881446931511164, + 11.836240999400616, + 11.870265938341618, + 11.828606016933918, + 11.823497246950865, + 11.801175307482481, + 11.812346056103706, + 11.828886810690165, + 11.822495143860579, + 11.79527398198843, + 11.846600100398064, + 11.839195620268583, + 12.16445118188858, + 11.886256281286478, + 11.80465193465352, + 11.863572988659143 + ] + }, + "steady_event_ms": { + "median": 11.796272277832031, + "p90": 11.844886589050294, + "samples": [ + 11.806879997253418, + 11.84284782409668, + 11.793408393859863, + 11.790911674499512, + 11.785056114196777, + 11.75772762298584, + 11.860799789428711, + 11.809503555297852, + 11.7958402633667, + 11.82419204711914, + 11.836447715759277, + 11.800191879272461, + 11.785599708557129, + 11.85200023651123, + 11.838784217834473, + 11.793343544006348, + 11.827424049377441, + 11.785951614379883, + 11.78115177154541, + 11.757887840270996, + 11.76972770690918, + 11.779616355895996, + 11.779328346252441, + 11.752063751220703, + 11.804351806640625, + 11.796704292297363, + 12.122048377990723, + 11.844096183776855, + 11.762240409851074, + 11.82147216796875 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 55448.59727937728, + 14.827489852905273, + 12.568785343319178, + 13.543976936489344, + 12.209525797516108, + 12.15369114652276, + 12.253078166395426, + 12.264440301805735, + 11.925709899514914 + ], + "event_ms_including_first": [ + 55448.3984375, + 14.794464111328125, + 12.536288261413574, + 13.511199951171875, + 12.176480293273926, + 12.121024131774902, + 12.221792221069336, + 12.233792304992676, + 11.89465618133545 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/3j/c3jhrl6ze54ozmozxtxuizkafijbohbw53j53hn2okkeqhybm3ep.py" + ], + "routes": [ + { + "sha256": "752d0803e3c03a8e34aa80861e1dea19b373e140d04e0e08bdbf5ab50de13d29", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "elapsed_s": 59.429744243621826 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_TORCH_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" + } + } + }, + { + "run": "Nano_n512_TORCH_p2", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 512, + "started": 1792864993.2747834, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 480268, + "first_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "steady_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "full_window_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "steady_wall_ms": { + "median": 11.856694938614964, + "p90": 11.921798810362816, + "min": 11.811704840511084, + "max": 12.216500006616116, + "samples": [ + 11.868722271174192, + 11.921513359993696, + 11.891975998878479, + 11.852873023599386, + 11.918495874851942, + 11.891596019268036, + 11.871757917106152, + 11.858283076435328, + 11.864484753459692, + 11.902096215635538, + 11.924367863684893, + 11.811704840511084, + 11.847130954265594, + 11.837333906441927, + 11.821142863482237, + 11.883630882948637, + 11.930469889193773, + 11.835900135338306, + 11.855106800794601, + 11.8336770683527, + 11.82427816092968, + 11.852141004055738, + 11.836942750960588, + 11.836160905659199, + 11.844466906040907, + 11.835921090096235, + 12.216500006616116, + 11.915421113371849, + 11.881185695528984, + 11.829629074782133 + ] + }, + "steady_event_ms": { + "median": 11.813136100769043, + "p90": 11.877385520935059, + "samples": [ + 11.817536354064941, + 11.876895904541016, + 11.849247932434082, + 11.809503555297852, + 11.875743865966797, + 11.848608016967773, + 11.826432228088379, + 11.81430435180664, + 11.820927619934082, + 11.858304023742676, + 11.881792068481445, + 11.76899242401123, + 11.804191589355469, + 11.791328430175781, + 11.778176307678223, + 11.840191841125488, + 11.887743949890137, + 11.793055534362793, + 11.811967849731445, + 11.790207862854004, + 11.78172779083252, + 11.809823989868164, + 11.793184280395508, + 11.793120384216309, + 11.801568031311035, + 11.792511940002441, + 12.174240112304688, + 11.872447967529297, + 11.838656425476074, + 11.787263870239258 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 56109.36489701271, + 15.04540117457509, + 12.538247276097536, + 12.602739036083221, + 12.204947881400585, + 12.105939909815788, + 12.170661706477404, + 12.339662294834852, + 12.12005689740181 + ], + "event_ms_including_first": [ + 56109.16796875, + 15.01046371459961, + 12.505727767944336, + 12.569503784179688, + 12.173376083374023, + 12.075008392333984, + 12.14025592803955, + 12.309087753295898, + 12.08902359008789 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/3j/c3jhrl6ze54ozmozxtxuizkafijbohbw53j53hn2okkeqhybm3ep.py" + ], + "routes": [ + { + "sha256": "752d0803e3c03a8e34aa80861e1dea19b373e140d04e0e08bdbf5ab50de13d29", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "elapsed_s": 60.069340229034424 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_TORCH_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" + } + } + }, + { + "run": "Nano_n96_BASE_p0", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 96, + "started": 1792864021.0256033, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 480268, + "first_peak": { + "allocated": 204831232, + "reserved": 232783872 + }, + "steady_peak": { + "allocated": 104167936, + "reserved": 232783872 + }, + "full_window_peak": { + "allocated": 204831232, + "reserved": 232783872 + }, + "steady_wall_ms": { + "median": 10.733155999332666, + "p90": 10.87905541062355, + "min": 10.657132137566805, + "max": 11.141397058963776, + "samples": [ + 10.728776920586824, + 10.748565196990967, + 10.817025322467089, + 10.73679281398654, + 10.76126890257001, + 10.721183381974697, + 10.676818899810314, + 10.729498695582151, + 10.80954959616065, + 10.934435762465, + 10.832382831722498, + 10.718457866460085, + 10.715814307332039, + 10.721213184297085, + 10.735160205513239, + 10.657132137566805, + 10.759546421468258, + 10.727264918386936, + 10.760147124528885, + 11.141397058963776, + 10.891173966228962, + 10.699501726776361, + 10.720672085881233, + 10.800282936543226, + 10.721663944423199, + 10.711315087974072, + 10.713379364460707, + 10.731151793152094, + 10.877708904445171, + 10.735671035945415 + ] + }, + "steady_event_ms": { + "median": 10.691344261169434, + "p90": 10.837651538848878, + "samples": [ + 10.679424285888672, + 10.70524787902832, + 10.77462387084961, + 10.693951606750488, + 10.712800025939941, + 10.678208351135254, + 10.635231971740723, + 10.686944007873535, + 10.758975982666016, + 10.892383575439453, + 10.788928031921387, + 10.675840377807617, + 10.6746244430542, + 10.678943634033203, + 10.693375587463379, + 10.6146879196167, + 10.717120170593262, + 10.67795181274414, + 10.717599868774414, + 11.100000381469727, + 10.849344253540039, + 10.657471656799316, + 10.679360389709473, + 10.758720397949219, + 10.68012809753418, + 10.66966438293457, + 10.671551704406738, + 10.689760208129883, + 10.836352348327637, + 10.692928314208984 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 92821.31170481443, + 14.613362029194832, + 11.181642767041922, + 11.214093770831823, + 11.122060939669609, + 11.039023753255606, + 10.99772471934557, + 11.638885829597712, + 10.881715919822454 + ], + "event_ms_including_first": [ + 92820.96875, + 14.582847595214844, + 11.152480125427246, + 11.183967590332031, + 11.091327667236328, + 11.008288383483887, + 10.96735954284668, + 11.608192443847656, + 10.85155200958252 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/xt/cxtaymbrblp46rlykltzbo7iz5yni5morlx573efzpa5ecchrvrl.py" + ], + "routes": [ + { + "sha256": "cba1a62b4389df004c8aa90085d868da326250d562233dca490331b71c3efd88", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 204831232, + "reserved": 232783872 + }, + "elapsed_s": 97.04701805114746 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_BASE_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" + } + } + }, + { + "run": "Nano_n96_BASE_p1", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 96, + "started": 1792864289.6198416, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 480268, + "first_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "steady_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "full_window_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "steady_wall_ms": { + "median": 10.827781865373254, + "p90": 10.899460967630148, + "min": 10.741183999925852, + "max": 10.92290598899126, + "samples": [ + 10.86328411474824, + 10.918017011135817, + 10.84054121747613, + 10.83585200831294, + 10.899301618337631, + 10.819741990417242, + 10.75743418186903, + 10.783974081277847, + 10.834109038114548, + 10.827656835317612, + 10.832175612449646, + 10.786429047584534, + 10.881909169256687, + 10.827906895428896, + 10.77065896242857, + 10.830332059413195, + 10.853315237909555, + 10.797119233757257, + 10.92290598899126, + 10.85173198953271, + 10.900895111262798, + 10.813229717314243, + 10.813119355589151, + 10.789284016937017, + 10.878792963922024, + 10.805523954331875, + 10.803361423313618, + 10.741183999925852, + 10.74131391942501, + 10.7572041451931 + ] + }, + "steady_event_ms": { + "median": 10.785791873931885, + "p90": 10.857631587982178, + "samples": [ + 10.811776161193848, + 10.87440013885498, + 10.797887802124023, + 10.792799949645996, + 10.857407569885254, + 10.77724838256836, + 10.715999603271484, + 10.741375923156738, + 10.79155158996582, + 10.785408020019531, + 10.790143966674805, + 10.743583679199219, + 10.839584350585938, + 10.786175727844238, + 10.728799819946289, + 10.787808418273926, + 10.800736427307129, + 10.753824234008789, + 10.880800247192383, + 10.809568405151367, + 10.859647750854492, + 10.771583557128906, + 10.771488189697266, + 10.745216369628906, + 10.834303855895996, + 10.763551712036133, + 10.760640144348145, + 10.699647903442383, + 10.698816299438477, + 10.715776443481445 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 55701.768561732024, + 13.8981849886477, + 11.759857181459665, + 11.462095193564892, + 11.171555612236261, + 11.200760956853628, + 11.0764866694808, + 11.444801930338144, + 11.174711864441633 + ], + "event_ms_including_first": [ + 55701.546875, + 13.854144096374512, + 11.728128433227539, + 11.428031921386719, + 11.140800476074219, + 11.170016288757324, + 11.045663833618164, + 11.414239883422852, + 11.144000053405762 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/xt/cxtaymbrblp46rlykltzbo7iz5yni5morlx573efzpa5ecchrvrl.py" + ], + "routes": [ + { + "sha256": "cba1a62b4389df004c8aa90085d868da326250d562233dca490331b71c3efd88", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "elapsed_s": 59.9027578830719 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_BASE_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" + } + } + }, + { + "run": "Nano_n96_BASE_p2", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 96, + "started": 1792864481.3907807, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 480268, + "first_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "steady_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "full_window_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "steady_wall_ms": { + "median": 10.998343816027045, + "p90": 11.144884023815393, + "min": 10.779886040836573, + "max": 15.755651984363794, + "samples": [ + 10.874154977500439, + 10.873873252421618, + 10.891676880419254, + 11.144876014441252, + 10.877581313252449, + 10.87558688595891, + 10.792290326207876, + 10.860849171876907, + 10.839369148015976, + 10.964544955641031, + 10.809683240950108, + 10.804563760757446, + 10.779886040836573, + 10.806648060679436, + 10.848124977201223, + 15.755651984363794, + 12.825530022382736, + 11.096253991127014, + 11.144956108182669, + 11.085723992437124, + 11.05540618300438, + 11.087947990745306, + 11.118114925920963, + 11.057940777391195, + 11.081826873123646, + 11.038594879209995, + 11.140736751258373, + 11.002376675605774, + 10.994310956448317, + 11.007186025381088 + ] + }, + "steady_event_ms": { + "median": 10.956480026245117, + "p90": 11.10163230895996, + "samples": [ + 10.82374382019043, + 10.831104278564453, + 10.848575592041016, + 11.102784156799316, + 10.833919525146484, + 10.832575798034668, + 10.750495910644531, + 10.818400382995605, + 10.797920227050781, + 10.921567916870117, + 10.766719818115234, + 10.762080192565918, + 10.737471580505371, + 10.764384269714355, + 10.806464195251465, + 15.710944175720215, + 12.783072471618652, + 11.05408000946045, + 11.1015043258667, + 11.042880058288574, + 11.013407707214355, + 11.045984268188477, + 11.075424194335938, + 11.015487670898438, + 11.03974437713623, + 10.996671676635742, + 11.098912239074707, + 10.960127830505371, + 10.952832221984863, + 10.9618558883667 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 54769.29545216262, + 13.770753983408213, + 11.659588199108839, + 11.302273254841566, + 11.25294016674161, + 11.096274014562368, + 11.093398090451956, + 11.46297575905919, + 11.174872051924467 + ], + "event_ms_including_first": [ + 54769.08984375, + 13.737759590148926, + 11.624128341674805, + 11.269344329833984, + 11.22156810760498, + 11.06492805480957, + 11.062623977661133, + 11.43222427368164, + 11.143584251403809 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/xt/cxtaymbrblp46rlykltzbo7iz5yni5morlx573efzpa5ecchrvrl.py" + ], + "routes": [ + { + "sha256": "cba1a62b4389df004c8aa90085d868da326250d562233dca490331b71c3efd88", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "elapsed_s": 58.89723491668701 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_BASE_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", + "gpu": "1", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" + } + } + }, + { + "run": "Nano_n96_ECS_p0", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 96, + "started": 1792864122.8756602, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 480268, + "first_peak": { + "allocated": 204831232, + "reserved": 232783872 + }, + "steady_peak": { + "allocated": 104167936, + "reserved": 232783872 + }, + "full_window_peak": { + "allocated": 204831232, + "reserved": 232783872 + }, + "steady_wall_ms": { + "median": 10.751245310530066, + "p90": 10.808398528024554, + "min": 10.631013195961714, + "max": 11.018664110451937, + "samples": [ + 10.804920922964811, + 10.83969697356224, + 10.780936107039452, + 10.79531293362379, + 10.744957718998194, + 10.75512683019042, + 10.762781836092472, + 10.772780980914831, + 10.797187220305204, + 10.794821660965681, + 10.754887945950031, + 10.771297849714756, + 10.746531188488007, + 10.747602675110102, + 10.796335060149431, + 10.72707399725914, + 10.767350904643536, + 10.729058180004358, + 11.018664110451937, + 10.631393641233444, + 10.631013195961714, + 10.705273132771254, + 10.703008621931076, + 10.673021897673607, + 10.734137147665024, + 10.671518743038177, + 10.670618154108524, + 10.696236044168472, + 10.896113235503435, + 10.73046075180173 + ] + }, + "steady_event_ms": { + "median": 10.71068811416626, + "p90": 10.760060501098632, + "samples": [ + 10.752191543579102, + 10.797183990478516, + 10.739744186401367, + 10.7542724609375, + 10.703392028808594, + 10.714048385620117, + 10.721247673034668, + 10.73203182220459, + 10.754048347473145, + 10.753408432006836, + 10.714367866516113, + 10.730048179626465, + 10.705887794494629, + 10.707327842712402, + 10.755935668945312, + 10.686079978942871, + 10.726400375366211, + 10.68614387512207, + 10.97753620147705, + 10.590720176696777, + 10.590847969055176, + 10.664352416992188, + 10.6626558303833, + 10.632384300231934, + 10.693535804748535, + 10.630399703979492, + 10.629695892333984, + 10.6561918258667, + 10.855104446411133, + 10.680512428283691 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 93603.48245827481, + 14.961379114538431, + 11.682859156280756, + 11.430552694946527, + 11.271502822637558, + 11.213222052901983, + 11.120748240500689, + 11.493450962007046, + 11.1066410318017 + ], + "event_ms_including_first": [ + 93603.1484375, + 14.930975914001465, + 11.653440475463867, + 11.400639533996582, + 11.241567611694336, + 11.183199882507324, + 11.09119987487793, + 11.46288013458252, + 11.076448440551758 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/za/czayf3532psnxdtw7xetqlsc6pd6v7htufd3gew6twzdaxoxmclg.py" + ], + "routes": [ + { + "sha256": "2bd826f473a672ac42b626c10de39c75d10102ecd71410c6dd4cdebb9320c92a", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 204831232, + "reserved": 232783872 + }, + "elapsed_s": 98.04223704338074 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_ECS_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" + } + } + }, + { + "run": "Nano_n96_ECS_p1", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 96, + "started": 1792864225.857543, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 480268, + "first_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "steady_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "full_window_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "steady_wall_ms": { + "median": 10.834284592419863, + "p90": 11.058952659368515, + "min": 10.748827829957008, + "max": 11.119076982140541, + "samples": [ + 11.101322714239359, + 11.119076982140541, + 11.045548133552074, + 11.066337116062641, + 11.002095881849527, + 11.058132164180279, + 11.03077083826065, + 10.980304796248674, + 11.03949686512351, + 11.032914277166128, + 10.901986621320248, + 10.797549970448017, + 10.751774068921804, + 10.795475915074348, + 10.816184803843498, + 10.766139719635248, + 10.836664121598005, + 10.77226223424077, + 10.796448215842247, + 10.799484327435493, + 10.772442910820246, + 10.748827829957008, + 10.849247220903635, + 10.777051094919443, + 10.875968262553215, + 10.827417019754648, + 10.829288978129625, + 10.768875945359468, + 10.83190506324172, + 10.862252209335566 + ] + }, + "steady_event_ms": { + "median": 10.791536331176758, + "p90": 11.016917991638184, + "samples": [ + 11.044639587402344, + 11.073920249938965, + 11.003392219543457, + 11.024031639099121, + 10.959615707397461, + 11.016127586364746, + 10.989119529724121, + 10.93712043762207, + 10.997632026672363, + 10.99078369140625, + 10.85977554321289, + 10.755776405334473, + 10.710016250610352, + 10.741312026977539, + 10.774304389953613, + 10.723456382751465, + 10.794048309326172, + 10.728511810302734, + 10.753824234008789, + 10.757375717163086, + 10.730624198913574, + 10.706944465637207, + 10.806719779968262, + 10.732064247131348, + 10.834431648254395, + 10.78115177154541, + 10.786144256591797, + 10.727007865905762, + 10.789024353027344, + 10.810463905334473 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 54761.62023888901, + 14.032318256795406, + 11.889121029525995, + 11.73345698043704, + 11.478154920041561, + 11.462516151368618, + 11.35220704600215, + 11.678113136440516, + 11.256566736847162 + ], + "event_ms_including_first": [ + 54761.39453125, + 13.996383666992188, + 11.85644817352295, + 11.700799942016602, + 11.446016311645508, + 11.430432319641113, + 11.320608139038086, + 11.645983695983887, + 11.218208312988281 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/za/czayf3532psnxdtw7xetqlsc6pd6v7htufd3gew6twzdaxoxmclg.py" + ], + "routes": [ + { + "sha256": "2bd826f473a672ac42b626c10de39c75d10102ecd71410c6dd4cdebb9320c92a", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "elapsed_s": 58.92485165596008 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_ECS_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" + } + } + }, + { + "run": "Nano_n96_ECS_p2", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 96, + "started": 1792864545.0989456, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 480268, + "first_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "steady_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "full_window_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "steady_wall_ms": { + "median": 10.780998272821307, + "p90": 10.826601833105087, + "min": 10.706027038395405, + "max": 10.85093105211854, + "samples": [ + 10.782009921967983, + 10.817678179591894, + 10.749098379164934, + 10.829549748450518, + 10.85093105211854, + 10.80044498667121, + 10.779986623674631, + 10.830000974237919, + 10.826274286955595, + 10.790436062961817, + 10.758045129477978, + 10.744289960712194, + 10.751763824373484, + 10.706027038395405, + 10.708551853895187, + 10.7421251013875, + 10.792800690978765, + 10.707349982112646, + 10.749629698693752, + 10.81469189375639, + 10.803751181811094, + 10.784285143017769, + 10.754649061709642, + 10.735833086073399, + 10.792650748044252, + 10.795045644044876, + 10.734951123595238, + 10.777933057397604, + 10.738769080489874, + 10.794233996421099 + ] + }, + "steady_event_ms": { + "median": 10.738671779632568, + "p90": 10.786323070526123, + "samples": [ + 10.7326078414917, + 10.776576042175293, + 10.707967758178711, + 10.788224220275879, + 10.806559562683105, + 10.759136199951172, + 10.739935874938965, + 10.788991928100586, + 10.786111831665039, + 10.749792098999023, + 10.717151641845703, + 10.6942720413208, + 10.710975646972656, + 10.665984153747559, + 10.667519569396973, + 10.701055526733398, + 10.752639770507812, + 10.666975975036621, + 10.697471618652344, + 10.77286434173584, + 10.763423919677734, + 10.742912292480469, + 10.71452808380127, + 10.685407638549805, + 10.75171184539795, + 10.754816055297852, + 10.694111824035645, + 10.737407684326172, + 10.69820785522461, + 10.754048347473145 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 55300.507810898125, + 14.478270895779133, + 12.003426905721426, + 11.69545529410243, + 11.360862758010626, + 11.300619691610336, + 11.26081496477127, + 11.460251174867153, + 11.067869607359171 + ], + "event_ms_including_first": [ + 55300.30078125, + 14.442208290100098, + 11.970815658569336, + 11.663392066955566, + 11.330368041992188, + 11.248127937316895, + 11.231136322021484, + 11.430463790893555, + 11.038335800170898 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/za/czayf3532psnxdtw7xetqlsc6pd6v7htufd3gew6twzdaxoxmclg.py" + ], + "routes": [ + { + "sha256": "2bd826f473a672ac42b626c10de39c75d10102ecd71410c6dd4cdebb9320c92a", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "elapsed_s": 59.48199510574341 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_ECS_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" + } + } + }, + { + "run": "Nano_n96_TORCH_p0", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 96, + "started": 1792863903.9348423, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 480268, + "first_peak": { + "allocated": 267504640, + "reserved": 295698432 + }, + "steady_peak": { + "allocated": 168914432, + "reserved": 295698432 + }, + "full_window_peak": { + "allocated": 267504640, + "reserved": 295698432 + }, + "steady_wall_ms": { + "median": 10.857054498046637, + "p90": 10.90511935763061, + "min": 10.758072137832642, + "max": 11.050153989344835, + "samples": [ + 10.857671033591032, + 10.904368944466114, + 10.865516029298306, + 10.802946984767914, + 10.819538962095976, + 10.843753814697266, + 10.814157780259848, + 10.88523305952549, + 10.882287286221981, + 10.880183894187212, + 10.94115898013115, + 10.878289118409157, + 10.911873076111078, + 10.848433244973421, + 10.854925960302353, + 10.85355319082737, + 10.86358167231083, + 10.847772937268019, + 10.850267019122839, + 10.818838141858578, + 10.856437962502241, + 10.889740660786629, + 10.860124602913857, + 10.837251786142588, + 10.859103873372078, + 10.758072137832642, + 11.050153989344835, + 10.898669250309467, + 10.793108958750963, + 10.815191082656384 + ] + }, + "steady_event_ms": { + "median": 10.81337594985962, + "p90": 10.861683177947999, + "samples": [ + 10.80838394165039, + 10.860671997070312, + 10.822591781616211, + 10.761343955993652, + 10.777152061462402, + 10.800288200378418, + 10.772735595703125, + 10.842368125915527, + 10.840127944946289, + 10.838208198547363, + 10.89897632598877, + 10.835552215576172, + 10.870783805847168, + 10.806816101074219, + 10.812704086303711, + 10.810720443725586, + 10.820927619934082, + 10.806431770324707, + 10.808671951293945, + 10.777055740356445, + 10.814047813415527, + 10.847776412963867, + 10.81827163696289, + 10.795136451721191, + 10.81612777709961, + 10.715904235839844, + 11.008671760559082, + 10.856415748596191, + 10.750783920288086, + 10.773728370666504 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 88560.2951599285, + 15.084350947290659, + 11.486507952213287, + 11.724798008799553, + 11.425802949815989, + 11.459317058324814, + 11.436713859438896, + 11.63086062297225, + 11.230925098061562 + ], + "event_ms_including_first": [ + 88559.9375, + 15.054368019104004, + 11.45689582824707, + 11.6942720413208, + 11.394847869873047, + 11.429056167602539, + 11.406047821044922, + 11.59990406036377, + 11.20032024383545 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/hg/chg6wzs2xjm2gwlehr2fbnsgvlt73vrtgsdw4i5fohwcmscdn2bw.py" + ], + "routes": [ + { + "sha256": "b535aa30720bdd4a7b4d7f7f266eeaa7d6205b2217f5ad2c4c7f660b2bd656fc", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 267504640, + "reserved": 295698432 + }, + "elapsed_s": 92.92989468574524 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_TORCH_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" + } + } + }, + { + "run": "Nano_n96_TORCH_p1", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 96, + "started": 1792864354.2838655, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 480268, + "first_peak": { + "allocated": 168914432, + "reserved": 190840832 + }, + "steady_peak": { + "allocated": 168914432, + "reserved": 190840832 + }, + "full_window_peak": { + "allocated": 168914432, + "reserved": 190840832 + }, + "steady_wall_ms": { + "median": 10.842765448614955, + "p90": 10.89477320201695, + "min": 10.768103878945112, + "max": 11.153141036629677, + "samples": [ + 10.90514287352562, + 10.878954082727432, + 10.846813209354877, + 10.88989432901144, + 10.872601997107267, + 10.846572928130627, + 10.773944668471813, + 10.84093190729618, + 10.880316141992807, + 10.863093193620443, + 10.868433862924576, + 10.84459898993373, + 10.821936186403036, + 10.818488895893097, + 10.83518099039793, + 10.801536962389946, + 10.819371324032545, + 10.855258908122778, + 10.768103878945112, + 10.808840859681368, + 10.769215878099203, + 10.80280914902687, + 10.986065957695246, + 10.794434230774641, + 10.794984642416239, + 10.778994765132666, + 11.153141036629677, + 10.893621016293764, + 10.866379830986261, + 10.834760032594204 + ] + }, + "steady_event_ms": { + "median": 10.799535751342773, + "p90": 10.851967811584473, + "samples": [ + 10.854559898376465, + 10.835552215576172, + 10.80457592010498, + 10.846816062927246, + 10.829952239990234, + 10.804287910461426, + 10.73145580291748, + 10.798527717590332, + 10.83852767944336, + 10.821056365966797, + 10.826592445373535, + 10.800543785095215, + 10.77990436553955, + 10.776320457458496, + 10.793279647827148, + 10.760031700134277, + 10.776543617248535, + 10.813728332519531, + 10.72655963897705, + 10.766655921936035, + 10.725664138793945, + 10.761919975280762, + 10.943743705749512, + 10.751744270324707, + 10.753312110900879, + 10.737055778503418, + 11.111136436462402, + 10.851679801940918, + 10.823871612548828, + 10.793408393859863 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 55847.48191293329, + 14.04241705313325, + 11.672261636704206, + 11.654529254883528, + 11.33274007588625, + 11.394738219678402, + 11.384136974811554, + 11.567564215511084, + 11.224906891584396 + ], + "event_ms_including_first": [ + 55847.27734375, + 14.009183883666992, + 11.64025592803955, + 11.620960235595703, + 11.301823616027832, + 11.3635835647583, + 11.352352142333984, + 11.53542423248291, + 11.193440437316895 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/hg/chg6wzs2xjm2gwlehr2fbnsgvlt73vrtgsdw4i5fohwcmscdn2bw.py" + ], + "routes": [ + { + "sha256": "b535aa30720bdd4a7b4d7f7f266eeaa7d6205b2217f5ad2c4c7f660b2bd656fc", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 168914432, + "reserved": 190840832 + }, + "elapsed_s": 59.70823812484741 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_TORCH_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" + } + } + }, + { + "run": "Nano_n96_TORCH_p2", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 96, + "started": 1792864418.0821834, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 480268, + "first_peak": { + "allocated": 168914432, + "reserved": 190840832 + }, + "steady_peak": { + "allocated": 168914432, + "reserved": 190840832 + }, + "full_window_peak": { + "allocated": 168914432, + "reserved": 190840832 + }, + "steady_wall_ms": { + "median": 10.69800229743123, + "p90": 10.754376510158181, + "min": 10.654861107468605, + "max": 11.754055973142385, + "samples": [ + 10.700777173042297, + 10.715133976191282, + 10.699113830924034, + 10.654861107468605, + 10.68326411768794, + 11.754055973142385, + 11.300900019705296, + 10.680268052965403, + 10.685307905077934, + 10.747465305030346, + 10.71334071457386, + 10.684655979275703, + 10.713981930166483, + 10.676641017198563, + 10.68259309977293, + 10.686549823731184, + 10.733498726040125, + 10.683243628591299, + 10.698172729462385, + 10.669707786291838, + 10.735752992331982, + 10.685116983950138, + 10.68250322714448, + 10.697831865400076, + 10.742336045950651, + 10.740522295236588, + 10.807918850332499, + 10.748427361249924, + 10.664459317922592, + 10.697520803660154 + ] + }, + "steady_event_ms": { + "median": 10.656463623046875, + "p90": 10.712748432159424, + "samples": [ + 10.65113639831543, + 10.673184394836426, + 10.657024383544922, + 10.61359977722168, + 10.641440391540527, + 11.707551956176758, + 11.252351760864258, + 10.637824058532715, + 10.643808364868164, + 10.70531177520752, + 10.672384262084961, + 10.643199920654297, + 10.671968460083008, + 10.635007858276367, + 10.641280174255371, + 10.645055770874023, + 10.691840171813965, + 10.642399787902832, + 10.656991958618164, + 10.628191947937012, + 10.694751739501953, + 10.644031524658203, + 10.64089584350586, + 10.656959533691406, + 10.701408386230469, + 10.69916820526123, + 10.765567779541016, + 10.706879615783691, + 10.62390422821045, + 10.655967712402344 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 55381.22761901468, + 13.754493091255426, + 11.31836324930191, + 11.312562972307205, + 11.177427135407925, + 11.123885866254568, + 11.266796384006739, + 11.545511893928051, + 10.938966646790504 + ], + "event_ms_including_first": [ + 55381.02734375, + 13.722911834716797, + 11.287039756774902, + 11.281472206115723, + 11.146880149841309, + 11.094079971313477, + 11.237759590148926, + 11.515904426574707, + 10.909536361694336 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/hg/chg6wzs2xjm2gwlehr2fbnsgvlt73vrtgsdw4i5fohwcmscdn2bw.py" + ], + "routes": [ + { + "sha256": "b535aa30720bdd4a7b4d7f7f266eeaa7d6205b2217f5ad2c4c7f660b2bd656fc", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 168914432, + "reserved": 190840832 + }, + "elapsed_s": 59.17427396774292 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_TORCH_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", + "gpu": "1", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" + } + } + }, + { + "run": "NeoCu_n4096_BASE_p0", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 4096, + "started": 1792868123.1350977, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "parameter_count": 1124910, + "first_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + }, + "steady_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + }, + "full_window_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + }, + "steady_wall_ms": { + "median": 80.32713015563786, + "p90": 80.51427467726171, + "min": 80.12435678392649, + "max": 80.90564329177141, + "samples": [ + 80.26505308225751, + 80.4279800504446, + 80.23814298212528, + 80.3706618025899, + 80.27752581983805, + 80.2444750443101, + 80.3326703608036, + 80.30397677794099, + 80.27813816443086, + 80.42500494048, + 80.38592105731368, + 80.28538106009364, + 80.67486668005586, + 80.90564329177141, + 80.38176316767931, + 80.34715801477432, + 80.43078612536192, + 80.51326172426343, + 80.52339125424623, + 80.260104034096, + 80.38847614079714, + 80.30541008338332, + 80.25659713894129, + 80.24798100814223, + 80.4141047410667, + 80.48368571326137, + 80.12905577197671, + 80.25590516626835, + 80.12435678392649, + 80.32158995047212 + ] + }, + "steady_event_ms": { + "median": 80.2801742553711, + "p90": 80.46779937744141, + "samples": [ + 80.20540618896484, + 80.37935638427734, + 80.19078063964844, + 80.32364654541016, + 80.22991943359375, + 80.19718170166016, + 80.2852783203125, + 80.2544937133789, + 80.23228454589844, + 80.37913513183594, + 80.33824157714844, + 80.23766326904297, + 80.62380981445312, + 80.8583984375, + 80.3355484008789, + 80.30009460449219, + 80.38409423828125, + 80.46688079833984, + 80.47606658935547, + 80.21356964111328, + 80.3410873413086, + 80.25958251953125, + 80.20767974853516, + 80.20140838623047, + 80.36009979248047, + 80.43705749511719, + 80.08073425292969, + 80.20909118652344, + 80.07711791992188, + 80.27507019042969 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 73949.57724306732, + 86.8740864098072, + 81.13977499306202, + 80.92188369482756, + 80.51841100677848, + 80.4877239279449, + 80.41399391368032, + 80.67111019045115, + 80.26729663833976 + ], + "event_ms_including_first": [ + 73949.25, + 86.83606719970703, + 81.10588836669922, + 80.88787078857422, + 80.48521423339844, + 80.45500946044922, + 80.38195037841797, + 80.62911987304688, + 80.23494720458984 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/xa/cxazbdrklj3m4rz4wghdrus6hkjdqhiw2qrmdr3uoyetgzcfdrvy.py" + ], + "routes": [ + { + "sha256": "0e26451d495a702bb2e2961a6c53a3a22faae697a63f047bb6d44732628a35c4", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + }, + "elapsed_s": 83.83816456794739 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_BASE_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[16, 16, 8]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" + } + } + }, + { + "run": "NeoCu_n4096_BASE_p1", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 4096, + "started": 1792868387.2107086, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "parameter_count": 1124910, + "first_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + }, + "steady_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + }, + "full_window_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + }, + "steady_wall_ms": { + "median": 80.13155683875084, + "p90": 80.2633062005043, + "min": 79.97071789577603, + "max": 80.49774402752519, + "samples": [ + 80.26471268385649, + 80.16620669513941, + 80.10355802252889, + 80.1069657318294, + 80.25672798976302, + 80.06555680185556, + 80.2206601947546, + 80.12183383107185, + 80.18077490851283, + 80.26314992457628, + 80.49774402752519, + 80.15242079272866, + 80.29691409319639, + 80.15353279188275, + 80.25000477209687, + 80.16290981322527, + 80.09402081370354, + 80.10904910042882, + 80.10840835049748, + 80.08335018530488, + 80.19167510792613, + 79.97071789577603, + 80.15888277441263, + 80.01469122245908, + 80.09883994236588, + 80.03430813550949, + 80.05854394286871, + 80.07052587345243, + 80.14127984642982, + 80.06669906899333 + ] + }, + "steady_event_ms": { + "median": 80.08596801757812, + "p90": 80.2109992980957, + "samples": [ + 80.20620727539062, + 80.11952209472656, + 80.05731201171875, + 80.0615005493164, + 80.21068572998047, + 80.02044677734375, + 80.17529296875, + 80.0761947631836, + 80.1358413696289, + 80.21382141113281, + 80.4505615234375, + 80.1061782836914, + 80.24992370605469, + 80.10771179199219, + 80.2031021118164, + 80.11711883544922, + 80.04790496826172, + 80.06390380859375, + 80.06124877929688, + 80.03638458251953, + 80.14630126953125, + 79.92473602294922, + 80.1118392944336, + 79.96934509277344, + 80.05331420898438, + 79.98844909667969, + 80.01270294189453, + 80.0251235961914, + 80.09574127197266, + 80.02156829833984 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 74194.41817095503, + 85.71029035374522, + 80.54011268541217, + 80.45409061014652, + 80.14401607215405, + 80.19817713648081, + 80.26808919385076, + 80.30013041570783, + 80.30385663732886 + ], + "event_ms_including_first": [ + 74194.1015625, + 85.67727661132812, + 80.50819396972656, + 80.41539001464844, + 80.11209869384766, + 80.16633605957031, + 80.2366714477539, + 80.26748657226562, + 80.27030181884766 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/xa/cxazbdrklj3m4rz4wghdrus6hkjdqhiw2qrmdr3uoyetgzcfdrvy.py" + ], + "routes": [ + { + "sha256": "0e26451d495a702bb2e2961a6c53a3a22faae697a63f047bb6d44732628a35c4", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + }, + "elapsed_s": 84.00558567047119 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_BASE_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[16, 16, 8]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" + } + } + }, + { + "run": "NeoCu_n4096_BASE_p2", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 4096, + "started": 1792868658.6328928, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "parameter_count": 1124910, + "first_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + }, + "steady_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + }, + "full_window_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + }, + "steady_wall_ms": { + "median": 80.10453544557095, + "p90": 80.18670538440347, + "min": 79.99687688425183, + "max": 80.27157606557012, + "samples": [ + 80.21746296435595, + 80.11257601901889, + 79.99687688425183, + 80.05871390923858, + 80.12527972459793, + 80.02063212916255, + 80.1929272711277, + 80.06287179887295, + 80.09153604507446, + 80.05692111328244, + 80.08695673197508, + 80.03879617899656, + 80.1004022359848, + 80.10866865515709, + 80.18601406365633, + 80.0600559450686, + 80.1188382320106, + 80.13951685279608, + 80.0603567622602, + 80.0573411397636, + 80.11785568669438, + 80.12346597388387, + 80.27157606557012, + 80.11620212346315, + 80.05480701103806, + 80.11000091210008, + 80.12684201821685, + 80.01950988546014, + 80.08425170555711, + 80.1209113560617 + ] + }, + "steady_event_ms": { + "median": 80.05836486816406, + "p90": 80.13001708984375, + "samples": [ + 80.16041564941406, + 80.06550598144531, + 79.95021057128906, + 80.01155090332031, + 80.07036590576172, + 79.97430419921875, + 80.14729309082031, + 80.01577758789062, + 80.04630279541016, + 80.00969696044922, + 80.04096221923828, + 79.9922866821289, + 80.0540771484375, + 80.06265258789062, + 80.12809753417969, + 80.01232147216797, + 80.07341003417969, + 80.09331512451172, + 80.01407623291016, + 80.01030731201172, + 80.07174682617188, + 80.0769271850586, + 80.22297668457031, + 80.07001495361328, + 80.00892639160156, + 80.06409454345703, + 80.08070373535156, + 79.97283172607422, + 80.03836822509766, + 80.07433319091797 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 72013.99471005425, + 85.6666979379952, + 80.83410793915391, + 80.74837690219283, + 80.27519285678864, + 80.28546208515763, + 80.32192103564739, + 80.40106110274792, + 80.34672820940614 + ], + "event_ms_including_first": [ + 72013.65625, + 85.62876892089844, + 80.80016326904297, + 80.71501159667969, + 80.24393463134766, + 80.25468444824219, + 80.2907485961914, + 80.36685180664062, + 80.31462097167969 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/xa/cxazbdrklj3m4rz4wghdrus6hkjdqhiw2qrmdr3uoyetgzcfdrvy.py" + ], + "routes": [ + { + "sha256": "0e26451d495a702bb2e2961a6c53a3a22faae697a63f047bb6d44732628a35c4", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + }, + "elapsed_s": 81.74831676483154 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_BASE_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[16, 16, 8]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" + } + } + }, + { + "run": "NeoCu_n4096_ECS_p0", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 4096, + "started": 1792868211.4409509, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "parameter_count": 1124910, + "first_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + }, + "steady_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + }, + "full_window_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + }, + "steady_wall_ms": { + "median": 80.31475683674216, + "p90": 80.4004886187613, + "min": 80.16964327543974, + "max": 80.55102312937379, + "samples": [ + 80.46550117433071, + 80.35080507397652, + 80.2654530853033, + 80.36064309999347, + 80.35749802365899, + 80.27941966429353, + 80.25653706863523, + 80.22375497967005, + 80.3905101493001, + 80.35435201600194, + 80.19355777651072, + 80.24772070348263, + 80.28530096635222, + 80.31836384907365, + 80.16964327543974, + 80.55102312937379, + 80.47046093270183, + 80.26095479726791, + 80.24900266900659, + 80.27832815423608, + 80.25126717984676, + 80.3197561763227, + 80.26688685640693, + 80.35259833559394, + 80.39221307262778, + 80.31114982441068, + 80.25471307337284, + 80.39314486086369, + 80.32819302752614, + 80.39326500147581 + ] + }, + "steady_event_ms": { + "median": 80.26953887939453, + "p90": 80.35458984375, + "samples": [ + 80.40758514404297, + 80.30384063720703, + 80.21794891357422, + 80.31501007080078, + 80.31132507324219, + 80.23343658447266, + 80.21056365966797, + 80.17910766601562, + 80.3449935913086, + 80.30889892578125, + 80.14911651611328, + 80.20118713378906, + 80.23977661132812, + 80.27334594726562, + 80.1231689453125, + 80.50476837158203, + 80.42546844482422, + 80.2154541015625, + 80.2037124633789, + 80.23324584960938, + 80.20582580566406, + 80.27436828613281, + 80.21897888183594, + 80.30652618408203, + 80.34505462646484, + 80.26573181152344, + 80.2081298828125, + 80.34537506103516, + 80.28262329101562, + 80.34870147705078 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 73632.82458903268, + 85.89509828016162, + 80.92920808121562, + 80.6803866289556, + 80.48214297741652, + 80.38720302283764, + 80.26101486757398, + 80.41962468996644, + 80.25125693529844 + ], + "event_ms_including_first": [ + 73632.515625, + 85.86176300048828, + 80.89746856689453, + 80.64070129394531, + 80.45053100585938, + 80.3551025390625, + 80.2291488647461, + 80.38813018798828, + 80.21949005126953 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/oa/coajcio4wzyccyqwku2yf2oqrympn2c6ndwut366wqwidcj2xkyw.py" + ], + "routes": [ + { + "sha256": "4301f667fc125b923f1c0ef2ab927074bc6e243295f83548a285bd10f738a627", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + }, + "elapsed_s": 83.44936060905457 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_ECS_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[16, 16, 8]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" + } + } + }, + { + "run": "NeoCu_n4096_ECS_p1", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 4096, + "started": 1792868299.1433072, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "parameter_count": 1124910, + "first_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + }, + "steady_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + }, + "full_window_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + }, + "steady_wall_ms": { + "median": 80.35085024312139, + "p90": 80.54153216071427, + "min": 80.17089543864131, + "max": 80.72082418948412, + "samples": [ + 80.29866591095924, + 80.54144494235516, + 80.27228573337197, + 80.31847421079874, + 80.32469591125846, + 80.26721701025963, + 80.34609630703926, + 80.38137201219797, + 80.35560417920351, + 80.59523720294237, + 80.41799208149314, + 80.38968872278929, + 80.52803995087743, + 80.52899222820997, + 80.3994769230485, + 80.54231712594628, + 80.5012988857925, + 80.48755303025246, + 80.39684174582362, + 80.72082418948412, + 80.25986282154918, + 80.22226206958294, + 80.24027617648244, + 80.29756415635347, + 80.21436678245664, + 80.45322820544243, + 80.29945800080895, + 80.25071630254388, + 80.21133067086339, + 80.17089543864131 + ] + }, + "steady_event_ms": { + "median": 80.30249404907227, + "p90": 80.48973159790039, + "samples": [ + 80.2375717163086, + 80.48912048339844, + 80.22509002685547, + 80.27235412597656, + 80.27731323242188, + 80.22051239013672, + 80.29859161376953, + 80.33475494384766, + 80.306396484375, + 80.54959869384766, + 80.3707504272461, + 80.34268951416016, + 80.47901153564453, + 80.48381042480469, + 80.3529281616211, + 80.49523162841797, + 80.4551010131836, + 80.44182586669922, + 80.35040283203125, + 80.67369842529297, + 80.212158203125, + 80.1756820678711, + 80.19139099121094, + 80.2496337890625, + 80.16742706298828, + 80.40643310546875, + 80.25183868408203, + 80.20416259765625, + 80.16563415527344, + 80.1242904663086 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 74031.63462225348, + 86.5353369154036, + 80.98067436367273, + 80.9595650061965, + 80.76253300532699, + 80.66258393228054, + 80.35736717283726, + 80.56525001302361, + 80.38541115820408 + ], + "event_ms_including_first": [ + 74031.3125, + 86.49795532226562, + 80.94611358642578, + 80.92521667480469, + 80.7311019897461, + 80.63046264648438, + 80.32450866699219, + 80.53202819824219, + 80.35298919677734 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/oa/coajcio4wzyccyqwku2yf2oqrympn2c6ndwut366wqwidcj2xkyw.py" + ], + "routes": [ + { + "sha256": "4301f667fc125b923f1c0ef2ab927074bc6e243295f83548a285bd10f738a627", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + }, + "elapsed_s": 83.818922996521 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_ECS_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[16, 16, 8]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" + } + } + }, + { + "run": "NeoCu_n4096_ECS_p2", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 4096, + "started": 1792868744.6540964, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "parameter_count": 1124910, + "first_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + }, + "steady_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + }, + "full_window_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + }, + "steady_wall_ms": { + "median": 80.27959172613919, + "p90": 80.39197344332933, + "min": 80.19969100132585, + "max": 80.48136159777641, + "samples": [ + 80.39377722889185, + 80.37029299885035, + 80.39177302271128, + 80.2627089433372, + 80.27601521462202, + 80.3109910339117, + 80.29384911060333, + 80.26909176260233, + 80.38436993956566, + 80.19969100132585, + 80.2145479246974, + 80.29627287760377, + 80.2085972391069, + 80.21266525611281, + 80.25211887434125, + 80.23451641201973, + 80.48136159777641, + 80.20429918542504, + 80.25817107409239, + 80.28316823765635, + 80.29188495129347, + 80.29470033943653, + 80.20883705466986, + 80.31666092574596, + 80.40320500731468, + 80.31427720561624, + 80.28463087975979, + 80.26765892282128, + 80.24453511461616, + 80.23188076913357 + ] + }, + "steady_event_ms": { + "median": 80.23303985595703, + "p90": 80.33891906738282, + "samples": [ + 80.33586883544922, + 80.32112121582031, + 80.34419250488281, + 80.21542358398438, + 80.2294692993164, + 80.26380920410156, + 80.24765014648438, + 80.22064208984375, + 80.33833312988281, + 80.15382385253906, + 80.16178894042969, + 80.2496337890625, + 80.16175842285156, + 80.16572570800781, + 80.20527648925781, + 80.18793487548828, + 80.43516540527344, + 80.15718078613281, + 80.20979309082031, + 80.23661041259766, + 80.24566650390625, + 80.24137878417969, + 80.16009521484375, + 80.26812744140625, + 80.35686492919922, + 80.26787567138672, + 80.23715209960938, + 80.22096252441406, + 80.19821166992188, + 80.18476867675781 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 72490.87165901437, + 85.59105498716235, + 80.91207593679428, + 80.69116901606321, + 80.37476101890206, + 80.22443670779467, + 80.4784270003438, + 80.509795807302, + 80.45174600556493 + ], + "event_ms_including_first": [ + 72490.546875, + 85.55744171142578, + 80.88015747070312, + 80.6588134765625, + 80.34310150146484, + 80.19004821777344, + 80.44703674316406, + 80.47808074951172, + 80.41897583007812 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/oa/coajcio4wzyccyqwku2yf2oqrympn2c6ndwut366wqwidcj2xkyw.py" + ], + "routes": [ + { + "sha256": "4301f667fc125b923f1c0ef2ab927074bc6e243295f83548a285bd10f738a627", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + }, + "elapsed_s": 82.31692743301392 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_ECS_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[16, 16, 8]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" + } + } + }, + { + "run": "NeoCu_n4096_TORCH_p0", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 4096, + "started": 1792868031.9178941, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "parameter_count": 1124910, + "first_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + }, + "steady_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + }, + "full_window_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + }, + "steady_wall_ms": { + "median": 160.91131581924856, + "p90": 161.08381124213338, + "min": 160.60722060501575, + "max": 161.2943490035832, + "samples": [ + 160.81728879362345, + 161.17499396204948, + 160.90001398697495, + 160.60722060501575, + 160.82137636840343, + 160.73932126164436, + 160.8777423389256, + 160.8921899460256, + 160.91111488640308, + 161.07771079987288, + 160.82579363137484, + 161.04969661682844, + 160.91383015736938, + 160.99795000627637, + 160.86778370663524, + 160.95472825691104, + 160.98694875836372, + 160.91151675209403, + 161.2943490035832, + 160.9101938083768, + 161.0428737476468, + 160.9364738687873, + 160.88197007775307, + 160.9621220268309, + 160.88549699634314, + 160.9831009991467, + 160.89995438233018, + 160.8574539422989, + 161.00375028327107, + 161.1387152224779 + ] + }, + "steady_event_ms": { + "median": 160.8641128540039, + "p90": 161.03654937744142, + "samples": [ + 160.7545928955078, + 161.1266632080078, + 160.85206604003906, + 160.55914306640625, + 160.77334594726562, + 160.69187927246094, + 160.8311004638672, + 160.84486389160156, + 160.8643798828125, + 161.03045654296875, + 160.77920532226562, + 161.000732421875, + 160.86611938476562, + 160.95126342773438, + 160.8211212158203, + 160.90687561035156, + 160.9403533935547, + 160.8638458251953, + 161.24700927734375, + 160.86172485351562, + 160.9967041015625, + 160.88890075683594, + 160.83482360839844, + 160.9132843017578, + 160.83868408203125, + 160.93603515625, + 160.85189819335938, + 160.81011962890625, + 160.9571533203125, + 161.0913848876953 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 70238.21411561221, + 167.09822276607156, + 160.32463777810335, + 160.11506086215377, + 159.97274406254292, + 160.14968696981668, + 160.4468380101025, + 160.16260208562016, + 159.8577261902392 + ], + "event_ms_including_first": [ + 70237.9375, + 167.060546875, + 160.29139709472656, + 160.08181762695312, + 159.94053649902344, + 160.11148071289062, + 160.4153289794922, + 160.1314239501953, + 159.81686401367188 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/zk/czk36ybaulyzucwgmurvf5gbzwy6ccce4gi4zzmn3omgrsfy7foy.py" + ], + "routes": [ + { + "sha256": "8a0380038aea6832f7f71fe5f3579c781cae06d887a391fcf883290ae5964e79", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + }, + "elapsed_s": 85.8185966014862 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_TORCH_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[16, 16, 8]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" + } + } + }, + { + "run": "NeoCu_n4096_TORCH_p1", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 4096, + "started": 1792868475.5015504, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "parameter_count": 1124910, + "first_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + }, + "steady_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + }, + "full_window_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + }, + "steady_wall_ms": { + "median": 160.88904533535242, + "p90": 161.02441484108567, + "min": 160.7751208357513, + "max": 161.34862322360277, + "samples": [ + 160.8860599808395, + 160.7762430794537, + 161.00823087617755, + 160.7751208357513, + 160.85768630728126, + 160.82187788560987, + 160.85485136136413, + 160.9487389214337, + 160.82853125408292, + 160.82196915522218, + 160.85551166906953, + 161.00536519661546, + 160.77981889247894, + 160.83080600947142, + 161.27979382872581, + 160.79549910500646, + 160.8835649676621, + 160.90901382267475, + 160.93950113281608, + 160.84088431671262, + 161.34862322360277, + 160.93081422150135, + 160.89203068986535, + 160.9358643181622, + 160.9947858378291, + 160.9586770646274, + 161.02185705676675, + 160.81545688211918, + 160.99191922694445, + 161.047434899956 + ] + }, + "steady_event_ms": { + "median": 160.8408660888672, + "p90": 160.97650909423828, + "samples": [ + 160.82310485839844, + 160.7271728515625, + 160.96109008789062, + 160.72720336914062, + 160.81097412109375, + 160.7729949951172, + 160.8059539794922, + 160.9017333984375, + 160.7815399169922, + 160.77503967285156, + 160.80618286132812, + 160.95741271972656, + 160.73126220703125, + 160.78233337402344, + 161.22982788085938, + 160.7473907470703, + 160.83734130859375, + 160.86224365234375, + 160.89219665527344, + 160.79017639160156, + 161.3026885986328, + 160.88499450683594, + 160.84439086914062, + 160.8880615234375, + 160.94837951660156, + 160.9074249267578, + 160.9738311767578, + 160.76666259765625, + 160.94403076171875, + 161.0006103515625 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 70823.27430415899, + 166.6825800202787, + 160.87923711165786, + 159.9146449007094, + 159.96182383969426, + 159.79080135002732, + 159.73006561398506, + 160.0230596959591, + 159.85825890675187 + ], + "event_ms_including_first": [ + 70822.9609375, + 166.63763427734375, + 160.8455352783203, + 159.88099670410156, + 159.9288330078125, + 159.75689697265625, + 159.69635009765625, + 159.98326110839844, + 159.8249969482422 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/zk/czk36ybaulyzucwgmurvf5gbzwy6ccce4gi4zzmn3omgrsfy7foy.py" + ], + "routes": [ + { + "sha256": "8a0380038aea6832f7f71fe5f3579c781cae06d887a391fcf883290ae5964e79", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + }, + "elapsed_s": 86.46810007095337 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_TORCH_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[16, 16, 8]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" + } + } + }, + { + "run": "NeoCu_n4096_TORCH_p2", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 4096, + "started": 1792868567.4155483, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", + "parameter_count": 1124910, + "first_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + }, + "steady_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + }, + "full_window_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + }, + "steady_wall_ms": { + "median": 160.94043804332614, + "p90": 161.10150669701397, + "min": 160.6604540720582, + "max": 161.24244267120957, + "samples": [ + 161.24244267120957, + 160.7575169764459, + 160.85377894341946, + 160.75772792100906, + 160.69468902423978, + 160.6604540720582, + 160.81038676202297, + 160.80951457843184, + 161.0308438539505, + 160.90691927820444, + 160.93159606680274, + 161.03385901078582, + 160.92677600681782, + 160.97676102072, + 160.93466198071837, + 161.1436060629785, + 160.88165109977126, + 161.03510092943907, + 161.0054662451148, + 160.9849170781672, + 161.09682898968458, + 160.93435091897845, + 160.9484381042421, + 160.88436590507627, + 160.9462141059339, + 160.92358017340302, + 160.95218481495976, + 161.0963880084455, + 161.04171378538013, + 161.20797814801335 + ] + }, + "steady_event_ms": { + "median": 160.8941650390625, + "p90": 161.05460205078126, + "samples": [ + 161.1735076904297, + 160.70822143554688, + 160.8065643310547, + 160.71055603027344, + 160.6451873779297, + 160.61392211914062, + 160.76336669921875, + 160.7606964111328, + 160.98377990722656, + 160.85955810546875, + 160.88327026367188, + 160.9854736328125, + 160.8796844482422, + 160.92994689941406, + 160.8882293701172, + 161.09613037109375, + 160.832763671875, + 160.98867797851562, + 160.95706176757812, + 160.93670654296875, + 161.04998779296875, + 160.88783264160156, + 160.90118408203125, + 160.8369598388672, + 160.9001007080078, + 160.8772735595703, + 160.90518188476562, + 161.04946899414062, + 160.994873046875, + 161.16085815429688 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 70224.4316469878, + 166.8362095952034, + 160.29304964467883, + 160.18545581027865, + 160.13020323589444, + 159.94378039613366, + 160.00680904835463, + 160.23520100861788, + 159.94847938418388 + ], + "event_ms_including_first": [ + 70224.1015625, + 166.79820251464844, + 160.2587890625, + 160.15245056152344, + 160.0979766845703, + 159.91087341308594, + 159.974365234375, + 160.20159912109375, + 159.9159698486328 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/zk/czk36ybaulyzucwgmurvf5gbzwy6ccce4gi4zzmn3omgrsfy7foy.py" + ], + "routes": [ + { + "sha256": "8a0380038aea6832f7f71fe5f3579c781cae06d887a391fcf883290ae5964e79", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + }, + "elapsed_s": 85.80604982376099 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_TORCH_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[16, 16, 8]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" + } + } + }, + { + "run": "NeoCu_n512_BASE_p0", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 512, + "started": 1792867375.5863557, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "parameter_count": 1124910, + "first_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + }, + "steady_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + }, + "full_window_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + }, + "steady_wall_ms": { + "median": 18.317985581234097, + "p90": 18.392029451206326, + "min": 18.12548702582717, + "max": 18.47759261727333, + "samples": [ + 18.33830028772354, + 18.334341701120138, + 18.409964628517628, + 18.2941360399127, + 18.27024109661579, + 18.30426510423422, + 18.287232611328363, + 18.313152249902487, + 18.331346102058887, + 18.30290211364627, + 18.251946195960045, + 18.315927125513554, + 18.28779373317957, + 18.291289918124676, + 18.32515373826027, + 18.298673909157515, + 18.390036653727293, + 18.355341162532568, + 18.32004403695464, + 18.322790041565895, + 18.329772632569075, + 18.352546263486147, + 18.47759261727333, + 18.328811042010784, + 18.12548702582717, + 18.16197670996189, + 18.23699800297618, + 18.3531166985631, + 18.452344927936792, + 18.28543981537223 + ] + }, + "steady_event_ms": { + "median": 18.27400016784668, + "p90": 18.347451972961426, + "samples": [ + 18.28441619873047, + 18.28892707824707, + 18.36614418029785, + 18.249919891357422, + 18.225984573364258, + 18.260095596313477, + 18.24412727355957, + 18.268415451049805, + 18.28553581237793, + 18.25814437866211, + 18.208799362182617, + 18.271936416625977, + 18.243839263916016, + 18.24742317199707, + 18.280704498291016, + 18.254623413085938, + 18.345375061035156, + 18.311359405517578, + 18.276063919067383, + 18.276992797851562, + 18.2860164642334, + 18.30886459350586, + 18.433504104614258, + 18.280799865722656, + 18.082496643066406, + 18.118656158447266, + 18.193599700927734, + 18.308927536010742, + 18.408639907836914, + 18.241567611694336 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 72861.11057503149, + 22.67401898279786, + 19.43998970091343, + 19.212170038372278, + 19.010248128324747, + 18.81168270483613, + 18.738504964858294, + 19.09976778551936, + 18.71504122391343 + ], + "event_ms_including_first": [ + 72860.84375, + 22.6396484375, + 19.406591415405273, + 19.179872512817383, + 18.957183837890625, + 18.780704498291016, + 18.707584381103516, + 19.068607330322266, + 18.683008193969727 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/6u/c6uio2mlwplg7clc7ibfabi56lxbruno5mhen4m4uzp6nwjklraw.py" + ], + "routes": [ + { + "sha256": "ad560398cb4675c19ec3c164990e43c33e15b273b8be04f5b766a58cf688ed1b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + }, + "elapsed_s": 77.7641134262085 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_BASE_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 4]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" + } + } + }, + { + "run": "NeoCu_n512_BASE_p1", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 512, + "started": 1792867623.6504543, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "parameter_count": 1124910, + "first_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + }, + "steady_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + }, + "full_window_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + }, + "steady_wall_ms": { + "median": 17.667372012510896, + "p90": 17.74062621407211, + "min": 17.600915860384703, + "max": 17.80840801075101, + "samples": [ + 17.690395936369896, + 17.80840801075101, + 17.75546930730343, + 17.620514146983624, + 17.65201287344098, + 17.67515717074275, + 17.60757900774479, + 17.655158881098032, + 17.645270098000765, + 17.618238925933838, + 17.66325393691659, + 17.645881976932287, + 17.649628221988678, + 17.627327237278223, + 17.691236920654774, + 17.687629908323288, + 17.72604277357459, + 17.600915860384703, + 17.66776293516159, + 17.66538806259632, + 17.716283909976482, + 17.73897698149085, + 17.71177537739277, + 17.728817649185658, + 17.65616098418832, + 17.709962092339993, + 17.6669810898602, + 17.778342124074697, + 17.716303933411837, + 17.655349802225828 + ] + }, + "steady_event_ms": { + "median": 17.622272491455078, + "p90": 17.696124267578124, + "samples": [ + 17.6362247467041, + 17.763967514038086, + 17.711360931396484, + 17.57695960998535, + 17.608543395996094, + 17.6312313079834, + 17.56438446044922, + 17.610944747924805, + 17.601055145263672, + 17.57491111755371, + 17.619136810302734, + 17.602272033691406, + 17.60518455505371, + 17.583295822143555, + 17.64678382873535, + 17.642911911010742, + 17.68230438232422, + 17.557952880859375, + 17.62281608581543, + 17.62063980102539, + 17.672256469726562, + 17.69443130493164, + 17.66819190979004, + 17.68499183654785, + 17.605440139770508, + 17.662208557128906, + 17.621728897094727, + 17.73459243774414, + 17.6724796295166, + 17.605056762695312 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 72186.29837920889, + 20.77224664390087, + 18.459497950971127, + 18.41534487903118, + 18.431926146149635, + 18.287282902747393, + 18.24901020154357, + 18.488393165171146, + 17.995100934058428 + ], + "event_ms_including_first": [ + 72186.03125, + 20.738815307617188, + 18.426143646240234, + 18.382688522338867, + 18.400320053100586, + 18.255712509155273, + 18.216320037841797, + 18.456832885742188, + 17.963520050048828 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/6u/c6uio2mlwplg7clc7ibfabi56lxbruno5mhen4m4uzp6nwjklraw.py" + ], + "routes": [ + { + "sha256": "ad560398cb4675c19ec3c164990e43c33e15b273b8be04f5b766a58cf688ed1b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + }, + "elapsed_s": 77.12511920928955 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_BASE_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 4]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" + } + } + }, + { + "run": "NeoCu_n512_BASE_p2", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 512, + "started": 1792867867.3844774, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "parameter_count": 1124910, + "first_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + }, + "steady_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + }, + "full_window_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + }, + "steady_wall_ms": { + "median": 18.38823826983571, + "p90": 18.475860822945833, + "min": 18.13986385241151, + "max": 18.52780720219016, + "samples": [ + 18.392801750451326, + 18.465058878064156, + 18.453445751219988, + 18.472231924533844, + 18.406438175588846, + 18.405485898256302, + 18.39431608095765, + 18.365620635449886, + 18.318861722946167, + 18.399835098534822, + 18.340272828936577, + 18.35091318935156, + 18.434370867908, + 18.379537388682365, + 18.383674789220095, + 18.52780720219016, + 18.46656110137701, + 18.45242502167821, + 18.41561496257782, + 18.520404119044542, + 18.359658773988485, + 18.344351090490818, + 18.21903418749571, + 18.13986385241151, + 18.178638070821762, + 18.244853243231773, + 18.316116649657488, + 18.246996216475964, + 18.353888764977455, + 18.508520908653736 + ] + }, + "steady_event_ms": { + "median": 18.338736534118652, + "p90": 18.429842948913574, + "samples": [ + 18.33785629272461, + 18.41926383972168, + 18.408512115478516, + 18.42585563659668, + 18.361791610717773, + 18.357759475708008, + 18.3505916595459, + 18.321792602539062, + 18.274911880493164, + 18.35580825805664, + 18.29622459411621, + 18.297183990478516, + 18.390239715576172, + 18.334272384643555, + 18.339616775512695, + 18.473920822143555, + 18.42144012451172, + 18.40732765197754, + 18.370624542236328, + 18.4768009185791, + 18.31603240966797, + 18.299840927124023, + 18.174047470092773, + 18.096607208251953, + 18.134719848632812, + 18.20185661315918, + 18.262048721313477, + 18.20207977294922, + 18.309568405151367, + 18.465728759765625 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 73110.57898681611, + 22.930022794753313, + 19.518358167260885, + 19.446943886578083, + 18.943523056805134, + 18.875043839216232, + 18.82791379466653, + 19.116188399493694, + 18.79234705120325 + ], + "event_ms_including_first": [ + 73110.2890625, + 22.893247604370117, + 19.48627281188965, + 19.414335250854492, + 18.912031173706055, + 18.8437442779541, + 18.796863555908203, + 19.084991455078125, + 18.759967803955078 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/6u/c6uio2mlwplg7clc7ibfabi56lxbruno5mhen4m4uzp6nwjklraw.py" + ], + "routes": [ + { + "sha256": "ad560398cb4675c19ec3c164990e43c33e15b273b8be04f5b766a58cf688ed1b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + }, + "elapsed_s": 78.02004361152649 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_BASE_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 4]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" + } + } + }, + { + "run": "NeoCu_n512_ECS_p0", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 512, + "started": 1792867457.7499602, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "parameter_count": 1124910, + "first_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + }, + "steady_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + }, + "full_window_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + }, + "steady_wall_ms": { + "median": 18.211815506219864, + "p90": 18.391289794817567, + "min": 17.997365444898605, + "max": 1106.9143749773502, + "samples": [ + 18.010188825428486, + 18.19373620674014, + 18.023645039647818, + 18.014458008110523, + 17.997365444898605, + 1106.9143749773502, + 20.081551745533943, + 18.344991840422153, + 18.207772634923458, + 18.228841945528984, + 18.251224886626005, + 18.217341043055058, + 18.523569218814373, + 18.210458103567362, + 18.181913997977972, + 18.207392189651728, + 18.349200021475554, + 18.245574086904526, + 18.13597697764635, + 18.213172908872366, + 18.17457005381584, + 18.1415481492877, + 18.214315176010132, + 18.164009787142277, + 18.192644231021404, + 18.376592081040144, + 18.2407945394516, + 18.249622080475092, + 18.188086338341236, + 18.226868007332087 + ] + }, + "steady_event_ms": { + "median": 18.16551971435547, + "p90": 18.343412017822267, + "samples": [ + 17.958208084106445, + 18.148576736450195, + 17.980512619018555, + 17.96998405456543, + 17.954879760742188, + 1106.85107421875, + 20.033599853515625, + 18.298463821411133, + 18.16214370727539, + 18.16694450378418, + 18.202592849731445, + 18.170368194580078, + 18.47577667236328, + 18.164287567138672, + 18.134944915771484, + 18.160703659057617, + 18.302688598632812, + 18.195423126220703, + 18.089887619018555, + 18.166751861572266, + 18.128799438476562, + 18.096416473388672, + 18.16828727722168, + 18.117311477661133, + 18.14556884765625, + 18.328704833984375, + 18.194751739501953, + 18.202880859375, + 18.142175674438477, + 18.1810245513916 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 72776.37767419219, + 21.621299907565117, + 18.861427903175354, + 18.898597918450832, + 18.638195004314184, + 18.610492814332247, + 18.669976387172937, + 19.048770889639854, + 19.144301768392324 + ], + "event_ms_including_first": [ + 72776.1171875, + 21.588960647583008, + 18.828960418701172, + 18.866527557373047, + 18.60688018798828, + 18.57916831970215, + 18.63849639892578, + 19.017120361328125, + 19.11315155029297 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/ud/cudr6ur5jvxqcfsncjcbz5djez5yz7fne7owy3ysag7ce454f5vc.py" + ], + "routes": [ + { + "sha256": "f837a965b99b1209b4b994c0c27f83a2b75ed59ceb52c5aa605c444e35ee8cfc", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + }, + "elapsed_s": 78.751633644104 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_ECS_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 4]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" + } + } + }, + { + "run": "NeoCu_n512_ECS_p1", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 512, + "started": 1792867540.0730972, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "parameter_count": 1124910, + "first_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + }, + "steady_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + }, + "full_window_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + }, + "steady_wall_ms": { + "median": 18.612637417390943, + "p90": 18.689959635958076, + "min": 18.53156415745616, + "max": 19.176472909748554, + "samples": [ + 18.708318937569857, + 18.92417622730136, + 18.536803778260946, + 19.176472909748554, + 18.66626925766468, + 18.599993083626032, + 18.61316803842783, + 18.667702097445726, + 18.61191587522626, + 18.682449124753475, + 18.62766593694687, + 18.58470495790243, + 18.648494966328144, + 18.612106796354055, + 18.67891289293766, + 18.607608042657375, + 18.687919713556767, + 18.599381670355797, + 18.66298308596015, + 18.607216887176037, + 18.53156415745616, + 18.571450375020504, + 18.600113224238157, + 18.559998366981745, + 18.642824608832598, + 18.640981055796146, + 18.53983011096716, + 18.586016725748777, + 18.643885850906372, + 18.568473868072033 + ] + }, + "steady_event_ms": { + "median": 18.567935943603516, + "p90": 18.642749404907228, + "samples": [ + 18.653663635253906, + 18.87833595275879, + 18.49190330505371, + 19.13100814819336, + 18.621728897094727, + 18.55619239807129, + 18.568607330322266, + 18.62166404724121, + 18.567264556884766, + 18.63759994506836, + 18.582719802856445, + 18.5382080078125, + 18.60259246826172, + 18.566879272460938, + 18.633983612060547, + 18.553119659423828, + 18.641536712646484, + 18.5546875, + 18.613056182861328, + 18.560863494873047, + 18.486656188964844, + 18.526336669921875, + 18.554271697998047, + 18.50713539123535, + 18.598400115966797, + 18.594911575317383, + 18.494720458984375, + 18.541471481323242, + 18.600000381469727, + 18.524415969848633 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 74094.92480102926, + 21.824765019118786, + 19.814377184957266, + 19.52620316296816, + 19.47222091257572, + 19.30387271568179, + 19.29151965305209, + 19.634957890957594, + 19.092875067144632 + ], + "event_ms_including_first": [ + 74094.6484375, + 21.786624908447266, + 19.780736923217773, + 19.492639541625977, + 19.440479278564453, + 19.27187156677246, + 19.258623123168945, + 19.60361671447754, + 19.061599731445312 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/ud/cudr6ur5jvxqcfsncjcbz5djez5yz7fne7owy3ysag7ce454f5vc.py" + ], + "routes": [ + { + "sha256": "f837a965b99b1209b4b994c0c27f83a2b75ed59ceb52c5aa605c444e35ee8cfc", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + }, + "elapsed_s": 79.02699065208435 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_ECS_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 4]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" + } + } + }, + { + "run": "NeoCu_n512_ECS_p2", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 512, + "started": 1792867949.9683478, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "parameter_count": 1124910, + "first_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + }, + "steady_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + }, + "full_window_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + }, + "steady_wall_ms": { + "median": 18.244627164676785, + "p90": 18.353943154215813, + "min": 18.16973090171814, + "max": 18.41383194550872, + "samples": [ + 18.27229466289282, + 18.41383194550872, + 18.274429254233837, + 18.24824931100011, + 18.172265961766243, + 18.241005018353462, + 18.21195101365447, + 18.392482306808233, + 18.26687389984727, + 18.238080199807882, + 18.22703890502453, + 18.349661026149988, + 18.240776378661394, + 18.27320596203208, + 18.27417779713869, + 18.240615259855986, + 18.342216964811087, + 18.234283197671175, + 18.224865198135376, + 18.204757943749428, + 18.217891920357943, + 18.407620023936033, + 18.16973090171814, + 18.25102372094989, + 18.185500986874104, + 18.253889866173267, + 18.189807888120413, + 18.201170954853296, + 18.302041105926037, + 18.269910011440516 + ] + }, + "steady_event_ms": { + "median": 18.201712608337402, + "p90": 18.3113431930542, + "samples": [ + 18.219263076782227, + 18.370080947875977, + 18.231103897094727, + 18.204864501953125, + 18.127519607543945, + 18.19856071472168, + 18.168895721435547, + 18.348928451538086, + 18.222911834716797, + 18.194528579711914, + 18.183616638183594, + 18.307167053222656, + 18.19603157043457, + 18.22991943359375, + 18.23174476623535, + 18.196800231933594, + 18.299072265625, + 18.191200256347656, + 18.18191909790039, + 18.16214370727539, + 18.175296783447266, + 18.357696533203125, + 18.124832153320312, + 18.20729637145996, + 18.142656326293945, + 18.21139144897461, + 18.146560668945312, + 18.158079147338867, + 18.258943557739258, + 18.227008819580078 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 72755.30387600884, + 21.8058992177248, + 18.94325204193592, + 18.9330717548728, + 18.879240844398737, + 18.704912159591913, + 18.703178968280554, + 19.054172094911337, + 18.60086526721716 + ], + "event_ms_including_first": [ + 72755.03125, + 21.772544860839844, + 18.91152000427246, + 18.90163230895996, + 18.84886360168457, + 18.67411231994629, + 18.672576904296875, + 19.024703979492188, + 18.570463180541992 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/ud/cudr6ur5jvxqcfsncjcbz5djez5yz7fne7owy3ysag7ce454f5vc.py" + ], + "routes": [ + { + "sha256": "f837a965b99b1209b4b994c0c27f83a2b75ed59ceb52c5aa605c444e35ee8cfc", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + }, + "elapsed_s": 77.62899470329285 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_ECS_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 4]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" + } + } + }, + { + "run": "NeoCu_n512_TORCH_p0", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 512, + "started": 1792867295.289518, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "parameter_count": 1124910, + "first_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + }, + "steady_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + }, + "full_window_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + }, + "steady_wall_ms": { + "median": 22.892822977155447, + "p90": 22.935968451201916, + "min": 22.840383928269148, + "max": 22.971282247453928, + "samples": [ + 22.88747299462557, + 22.92340062558651, + 22.849021013826132, + 22.85867929458618, + 22.84437185153365, + 22.88222312927246, + 22.948617581278086, + 22.900016978383064, + 22.907831706106663, + 22.924141958355904, + 22.907041013240814, + 22.898653987795115, + 22.8955983184278, + 22.84711692482233, + 22.894937079399824, + 22.888194303959608, + 22.934562992304564, + 22.861343808472157, + 22.95208489522338, + 22.894897032529116, + 22.971282247453928, + 22.90420513600111, + 22.880639880895615, + 22.848539985716343, + 22.876612842082977, + 22.840383928269148, + 22.87767454981804, + 22.89725188165903, + 22.889648098498583, + 22.89074892178178 + ] + }, + "steady_event_ms": { + "median": 22.84966468811035, + "p90": 22.893577003479002, + "samples": [ + 22.83795166015625, + 22.87993621826172, + 22.806047439575195, + 22.81599998474121, + 22.802080154418945, + 22.840192794799805, + 22.905759811401367, + 22.85651206970215, + 22.866592407226562, + 22.88159942626953, + 22.864479064941406, + 22.855487823486328, + 22.85353660583496, + 22.804895401000977, + 22.850976943969727, + 22.845600128173828, + 22.892223358154297, + 22.818143844604492, + 22.909536361694336, + 22.851999282836914, + 22.930688858032227, + 22.861888885498047, + 22.83776092529297, + 22.80588722229004, + 22.830623626708984, + 22.797760009765625, + 22.83577537536621, + 22.854400634765625, + 22.848064422607422, + 22.848352432250977 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 70117.18882713467, + 25.602501817047596, + 23.27850228175521, + 23.24585011228919, + 23.16527906805277, + 23.106747772544622, + 23.09809159487486, + 23.230682127177715, + 22.917850874364376 + ], + "event_ms_including_first": [ + 70116.9453125, + 25.57030487060547, + 23.24732780456543, + 23.214847564697266, + 23.135263442993164, + 23.066944122314453, + 23.06710433959961, + 23.199583053588867, + 22.887327194213867 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/xw/cxwzecc6qbdtcebhdoqewj7neutdlxe2a3yio2tkmh25jtqiyqop.py" + ], + "routes": [ + { + "sha256": "4af81d972bc58c4ae73a0ca23b4cc28878f6fd1e9da40d46de82b6e58a95ee51", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + }, + "elapsed_s": 74.98854279518127 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_TORCH_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 4]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" + } + } + }, + { + "run": "NeoCu_n512_TORCH_p1", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 512, + "started": 1792867705.2509341, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "parameter_count": 1124910, + "first_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + }, + "steady_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + }, + "full_window_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + }, + "steady_wall_ms": { + "median": 22.922137985005975, + "p90": 22.966267308220267, + "min": 22.85027178004384, + "max": 23.669429123401642, + "samples": [ + 22.935573011636734, + 23.019071202725172, + 23.061320651322603, + 23.669429123401642, + 22.960400208830833, + 22.939260117709637, + 22.95264508575201, + 22.95604208484292, + 22.959438152611256, + 22.95206394046545, + 22.907078731805086, + 22.927316837012768, + 22.924942895770073, + 22.919333074241877, + 22.948908153921366, + 22.850933019071817, + 22.902629803866148, + 22.87224307656288, + 22.930022794753313, + 22.862284909933805, + 22.853208240121603, + 22.892601788043976, + 22.867383901029825, + 22.885438054800034, + 22.878075018525124, + 22.866361774504185, + 22.899375297129154, + 22.906949277967215, + 22.937897127121687, + 22.85027178004384 + ] + }, + "steady_event_ms": { + "median": 22.87726402282715, + "p90": 22.921407890319824, + "samples": [ + 22.88003158569336, + 22.972959518432617, + 23.004575729370117, + 23.62505531311035, + 22.915264129638672, + 22.89574432373047, + 22.908479690551758, + 22.91116714477539, + 22.915679931640625, + 22.908096313476562, + 22.86288070678711, + 22.882848739624023, + 22.880159378051758, + 22.874496459960938, + 22.90540885925293, + 22.799488067626953, + 22.859071731567383, + 22.82921600341797, + 22.887487411499023, + 22.812959671020508, + 22.808671951293945, + 22.84899139404297, + 22.823808670043945, + 22.84169578552246, + 22.833984375, + 22.8155517578125, + 22.85590362548828, + 22.863712310791016, + 22.895008087158203, + 22.806655883789062 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 70294.02185184881, + 26.032893918454647, + 23.56678480282426, + 23.409748915582895, + 23.206885904073715, + 23.11225701123476, + 23.071950767189264, + 23.176168091595173, + 22.908932995051146 + ], + "event_ms_including_first": [ + 70293.765625, + 25.997760772705078, + 23.53376007080078, + 23.374719619750977, + 23.175615310668945, + 23.08073616027832, + 23.04115104675293, + 23.145343780517578, + 22.876863479614258 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/xw/cxwzecc6qbdtcebhdoqewj7neutdlxe2a3yio2tkmh25jtqiyqop.py" + ], + "routes": [ + { + "sha256": "4af81d972bc58c4ae73a0ca23b4cc28878f6fd1e9da40d46de82b6e58a95ee51", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + }, + "elapsed_s": 75.17518830299377 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_TORCH_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 4]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" + } + } + }, + { + "run": "NeoCu_n512_TORCH_p2", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 512, + "started": 1792867786.306482, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", + "parameter_count": 1124910, + "first_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + }, + "steady_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + }, + "full_window_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + }, + "steady_wall_ms": { + "median": 22.897385992109776, + "p90": 22.925185598433018, + "min": 22.827779408544302, + "max": 22.936835885047913, + "samples": [ + 22.843227721750736, + 22.920655086636543, + 22.827779408544302, + 22.88346504792571, + 22.889014799147844, + 22.886049933731556, + 22.90334226563573, + 22.901819087564945, + 22.927457932382822, + 22.936835885047913, + 22.870650980621576, + 22.898081690073013, + 22.910085041075945, + 22.92493311688304, + 22.903141099959612, + 22.91313000023365, + 22.89634896442294, + 22.929311264306307, + 22.92347000911832, + 22.890948224812746, + 22.87294389680028, + 22.890438325703144, + 22.891320288181305, + 22.91719801723957, + 22.92482228949666, + 22.896690294146538, + 22.895346861332655, + 22.86780485883355, + 22.89974596351385, + 22.86582114174962 + ] + }, + "steady_event_ms": { + "median": 22.85347270965576, + "p90": 22.880803108215332, + "samples": [ + 22.792095184326172, + 22.876319885253906, + 22.785343170166016, + 22.838592529296875, + 22.845216751098633, + 22.843456268310547, + 22.857759475708008, + 22.858240127563477, + 22.884096145629883, + 22.893375396728516, + 22.827007293701172, + 22.854272842407227, + 22.86720085144043, + 22.880767822265625, + 22.860288619995117, + 22.86947250366211, + 22.851423263549805, + 22.879167556762695, + 22.879552841186523, + 22.84726333618164, + 22.829599380493164, + 22.84716796875, + 22.84761619567871, + 22.873727798461914, + 22.881120681762695, + 22.852672576904297, + 22.85193634033203, + 22.824735641479492, + 22.856319427490234, + 22.82294464111328 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 70884.1023570858, + 25.712166912853718, + 23.492034059017897, + 23.398166988044977, + 23.375545162707567, + 23.12238607555628, + 23.079876322299242, + 23.163193371146917, + 22.92024390771985 + ], + "event_ms_including_first": [ + 70883.8359375, + 25.677120208740234, + 23.459199905395508, + 23.365983963012695, + 23.344127655029297, + 23.091007232666016, + 23.04924774169922, + 23.13279914855957, + 22.888927459716797 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/xw/cxwzecc6qbdtcebhdoqewj7neutdlxe2a3yio2tkmh25jtqiyqop.py" + ], + "routes": [ + { + "sha256": "4af81d972bc58c4ae73a0ca23b4cc28878f6fd1e9da40d46de82b6e58a95ee51", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + }, + "elapsed_s": 75.75378775596619 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_TORCH_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 4]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" + } + } + }, + { + "run": "NeoCu_n96_BASE_p0", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 96, + "started": 1792866539.1190507, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "parameter_count": 1124910, + "first_peak": { + "allocated": 353757184, + "reserved": 381681664 + }, + "steady_peak": { + "allocated": 253004288, + "reserved": 381681664 + }, + "full_window_peak": { + "allocated": 353757184, + "reserved": 381681664 + }, + "steady_wall_ms": { + "median": 18.2525881100446, + "p90": 18.366497196257114, + "min": 18.055355176329613, + "max": 18.594383727759123, + "samples": [ + 18.30186089500785, + 18.466823268681765, + 18.283566925674677, + 18.35784688591957, + 18.337229266762733, + 18.324885051697493, + 18.309385981410742, + 18.444349989295006, + 18.310056999325752, + 18.283015117049217, + 18.594383727759123, + 18.30817386507988, + 18.34722701460123, + 18.19064235314727, + 18.210749607533216, + 18.130717799067497, + 18.28828640282154, + 18.26323801651597, + 18.187676090747118, + 18.055355176329613, + 18.161035142838955, + 18.12184089794755, + 18.1535710580647, + 18.111411947757006, + 18.121459987014532, + 18.12647981569171, + 18.11189204454422, + 18.078660126775503, + 18.241938203573227, + 18.130517564713955 + ] + }, + "steady_event_ms": { + "median": 18.205856323242188, + "p90": 18.32359371185303, + "samples": [ + 18.248767852783203, + 18.420000076293945, + 18.238975524902344, + 18.31500816345215, + 18.292512893676758, + 18.281408309936523, + 18.265535354614258, + 18.400863647460938, + 18.26643180847168, + 18.235807418823242, + 18.550399780273438, + 18.264095306396484, + 18.303071975708008, + 18.147327423095703, + 18.16761589050293, + 18.08732795715332, + 18.244319915771484, + 18.220640182495117, + 18.1463680267334, + 18.012928009033203, + 18.11782455444336, + 18.077791213989258, + 18.110240936279297, + 18.068832397460938, + 18.078176498413086, + 18.083776473999023, + 18.06822395324707, + 18.0361270904541, + 18.191072463989258, + 18.086496353149414 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 125161.26786312088, + 22.437002044171095, + 19.20219138264656, + 18.76116869971156, + 18.53608386591077, + 18.55967892333865, + 18.471370916813612, + 18.91999877989292, + 18.615303095430136 + ], + "event_ms_including_first": [ + 125160.8203125, + 22.404319763183594, + 19.170656204223633, + 18.730592727661133, + 18.50422477722168, + 18.527360916137695, + 18.43961524963379, + 18.88719940185547, + 18.583744049072266 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/jw/cjwxo44m6olwba24ixs7djdmx2dwqskg6n5fbwt27h6toolcflz4.py" + ], + "routes": [ + { + "sha256": "a4f86caeb87b798c89669a0d408b80a7b4c3ef0f9d51db90a8e7482f7c0dc81e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 353757184, + "reserved": 381681664 + }, + "elapsed_s": 130.01547503471375 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_BASE_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 3]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" + } + } + }, + { + "run": "NeoCu_n96_BASE_p1", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 96, + "started": 1792866891.0817494, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "parameter_count": 1124910, + "first_peak": { + "allocated": 252135424, + "reserved": 276824064 + }, + "steady_peak": { + "allocated": 253004288, + "reserved": 276824064 + }, + "full_window_peak": { + "allocated": 253004288, + "reserved": 276824064 + }, + "steady_wall_ms": { + "median": 17.812266247346997, + "p90": 17.855205154046416, + "min": 17.73557160049677, + "max": 17.88619626313448, + "samples": [ + 17.874494194984436, + 17.88619626313448, + 17.802187241613865, + 17.81737618148327, + 17.82352803274989, + 17.783522605895996, + 17.839909065514803, + 17.755790147930384, + 17.873302102088928, + 17.8508791141212, + 17.787570133805275, + 17.803259193897247, + 17.833565827459097, + 17.812867648899555, + 17.76820281520486, + 17.83472904935479, + 17.853194382041693, + 17.80424127355218, + 17.797548789530993, + 17.76667032390833, + 17.73557160049677, + 17.806085292249918, + 17.81166484579444, + 17.84277381375432, + 17.759837675839663, + 17.815823201090097, + 17.837754916399717, + 17.761140130460262, + 17.7989206276834, + 17.81946001574397 + ] + }, + "steady_event_ms": { + "median": 17.768431663513184, + "p90": 17.810738563537598, + "samples": [ + 17.820703506469727, + 17.840896606445312, + 17.757823944091797, + 17.774080276489258, + 17.780256271362305, + 17.73263931274414, + 17.796768188476562, + 17.71161651611328, + 17.829856872558594, + 17.806079864501953, + 17.743616104125977, + 17.757984161376953, + 17.78985595703125, + 17.769472122192383, + 17.724607467651367, + 17.791200637817383, + 17.80963134765625, + 17.759807586669922, + 17.75391960144043, + 17.722240447998047, + 17.69161605834961, + 17.7620792388916, + 17.767391204833984, + 17.799135208129883, + 17.715904235839844, + 17.773056030273438, + 17.793119430541992, + 17.717504501342773, + 17.747264862060547, + 17.775455474853516 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 72694.05121123418, + 20.99112095311284, + 18.221679609268904, + 18.25246773660183, + 18.23822082951665, + 18.211540766060352, + 18.210018053650856, + 18.48170068114996, + 17.939186189323664 + ], + "event_ms_including_first": [ + 72693.78125, + 20.958463668823242, + 18.187744140625, + 18.219104766845703, + 18.20742416381836, + 18.18012809753418, + 18.17750358581543, + 18.44937515258789, + 17.906944274902344 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/jw/cjwxo44m6olwba24ixs7djdmx2dwqskg6n5fbwt27h6toolcflz4.py" + ], + "routes": [ + { + "sha256": "a4f86caeb87b798c89669a0d408b80a7b4c3ef0f9d51db90a8e7482f7c0dc81e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 253004288, + "reserved": 276824064 + }, + "elapsed_s": 77.50719714164734 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_BASE_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 3]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" + } + } + }, + { + "run": "NeoCu_n96_BASE_p2", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 96, + "started": 1792867129.864035, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "parameter_count": 1124910, + "first_peak": { + "allocated": 252135424, + "reserved": 276824064 + }, + "steady_peak": { + "allocated": 253004288, + "reserved": 276824064 + }, + "full_window_peak": { + "allocated": 253004288, + "reserved": 276824064 + }, + "steady_wall_ms": { + "median": 18.15490867011249, + "p90": 18.495408399030566, + "min": 18.03266303613782, + "max": 18.772350158542395, + "samples": [ + 18.12161086127162, + 18.183256965130568, + 18.081325106322765, + 18.226478714495897, + 18.31169007346034, + 18.492050003260374, + 18.064963165670633, + 18.094138707965612, + 18.199958838522434, + 18.165523651987314, + 18.525633960962296, + 18.15652707591653, + 18.153290264308453, + 18.086485099047422, + 18.16946128383279, + 18.425545189529657, + 18.282064236700535, + 18.460742197930813, + 18.772350158542395, + 18.09944910928607, + 18.098536878824234, + 18.082175869494677, + 18.129616044461727, + 18.152489326894283, + 18.485507927834988, + 18.067217897623777, + 18.09883676469326, + 18.03266303613782, + 18.053072039037943, + 18.637255299836397 + ] + }, + "steady_event_ms": { + "median": 18.11190414428711, + "p90": 18.452589225769042, + "samples": [ + 18.072223663330078, + 18.13907241821289, + 18.038400650024414, + 18.183488845825195, + 18.26927947998047, + 18.44918441772461, + 18.022367477416992, + 18.051647186279297, + 18.157791137695312, + 18.12259292602539, + 18.483232498168945, + 18.113759994506836, + 18.110048294067383, + 18.04422378540039, + 18.127487182617188, + 18.38332748413086, + 18.24051284790039, + 18.407424926757812, + 18.72969627380371, + 18.0567684173584, + 18.054527282714844, + 18.03945541381836, + 18.086271286010742, + 18.109567642211914, + 18.443456649780273, + 18.023584365844727, + 18.05683135986328, + 17.990623474121094, + 18.01148796081543, + 18.59401512145996 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 73287.22677007318, + 23.00599729642272, + 19.079610239714384, + 18.580937758088112, + 18.483945168554783, + 18.40545702725649, + 18.355883192270994, + 19.225466065108776, + 18.366402946412563 + ], + "event_ms_including_first": [ + 73286.984375, + 22.974016189575195, + 19.0479679107666, + 18.54924774169922, + 18.452640533447266, + 18.374528884887695, + 18.325536727905273, + 19.195392608642578, + 18.33568000793457 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/jw/cjwxo44m6olwba24ixs7djdmx2dwqskg6n5fbwt27h6toolcflz4.py" + ], + "routes": [ + { + "sha256": "a4f86caeb87b798c89669a0d408b80a7b4c3ef0f9d51db90a8e7482f7c0dc81e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 253004288, + "reserved": 276824064 + }, + "elapsed_s": 78.20176839828491 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_BASE_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 3]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" + } + } + }, + { + "run": "NeoCu_n96_ECS_p0", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 96, + "started": 1792866673.485356, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "parameter_count": 1124910, + "first_peak": { + "allocated": 355032576, + "reserved": 381681664 + }, + "steady_peak": { + "allocated": 254369280, + "reserved": 381681664 + }, + "full_window_peak": { + "allocated": 355032576, + "reserved": 381681664 + }, + "steady_wall_ms": { + "median": 18.05932796560228, + "p90": 18.229434173554182, + "min": 17.920701764523983, + "max": 18.29589018598199, + "samples": [ + 18.048191908746958, + 18.25997233390808, + 18.165544141083956, + 18.05718895047903, + 18.03028816357255, + 18.1043678894639, + 18.094750121235847, + 18.083578906953335, + 18.056116998195648, + 18.08545272797346, + 17.993859946727753, + 17.991455271840096, + 18.092957325279713, + 18.253870774060488, + 18.05947395041585, + 17.980793956667185, + 18.126330338418484, + 17.920701764523983, + 18.226718995720148, + 18.11420638114214, + 18.008367158472538, + 18.114868085831404, + 18.074401654303074, + 18.020930234342813, + 18.059181980788708, + 18.036500085145235, + 18.29589018598199, + 18.03492708131671, + 17.964713741093874, + 18.053201027214527 + ] + }, + "steady_event_ms": { + "median": 18.01699161529541, + "p90": 18.186553955078125, + "samples": [ + 17.993375778198242, + 18.21683120727539, + 18.11849594116211, + 18.01420783996582, + 17.987552642822266, + 18.051008224487305, + 18.05241584777832, + 18.04047966003418, + 18.013151168823242, + 18.042848587036133, + 17.952287673950195, + 17.948896408081055, + 18.05072021484375, + 18.21183967590332, + 18.01702308654785, + 17.926528930664062, + 18.075328826904297, + 17.87673568725586, + 18.183744430541992, + 18.072128295898438, + 17.965471267700195, + 18.072799682617188, + 18.032032012939453, + 17.978431701660156, + 18.01696014404297, + 17.994335174560547, + 18.25324821472168, + 17.992799758911133, + 17.92255973815918, + 18.010719299316406 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 124999.46137983352, + 21.61933807656169, + 19.06109508126974, + 18.63762503489852, + 18.410545773804188, + 18.411579076200724, + 18.297291826456785, + 18.916491884738207, + 18.264702055603266 + ], + "event_ms_including_first": [ + 124999.0234375, + 21.587392807006836, + 19.029855728149414, + 18.606176376342773, + 18.379743576049805, + 18.380191802978516, + 18.265087127685547, + 18.88559913635254, + 18.23366355895996 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/4h/c4hekpp7puvv4eisnclzly4a67wlmn6ifgs66uyfe3ajorbh2r37.py" + ], + "routes": [ + { + "sha256": "07137055143eed311a30e993d3f2e2a6b5a8231ea70eb201e6327dd4d1c577ca", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 355032576, + "reserved": 381681664 + }, + "elapsed_s": 129.9509253501892 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_ECS_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 3]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" + } + } + }, + { + "run": "NeoCu_n96_ECS_p1", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 96, + "started": 1792866807.8799531, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "parameter_count": 1124910, + "first_peak": { + "allocated": 254369280, + "reserved": 276824064 + }, + "steady_peak": { + "allocated": 254369280, + "reserved": 276824064 + }, + "full_window_peak": { + "allocated": 254369280, + "reserved": 276824064 + }, + "steady_wall_ms": { + "median": 18.42002896592021, + "p90": 18.69931654073298, + "min": 18.26696516945958, + "max": 25.458539836108685, + "samples": [ + 18.452816642820835, + 18.43767799437046, + 18.585195764899254, + 18.33638595417142, + 18.30923603847623, + 18.368718214333057, + 18.36670283228159, + 18.26696516945958, + 18.360801972448826, + 18.49938416853547, + 18.314866349101067, + 18.403141759335995, + 18.285260070115328, + 18.280199728906155, + 18.5927408747375, + 18.399816006422043, + 18.454558681696653, + 18.373806960880756, + 18.3509043417871, + 18.470620270818472, + 18.48650025203824, + 18.690996803343296, + 18.331187311559916, + 25.458539836108685, + 18.774194177240133, + 18.531133886426687, + 18.782919738441706, + 18.31288170069456, + 18.436916172504425, + 18.466702196747065 + ] + }, + "steady_event_ms": { + "median": 18.377055168151855, + "p90": 18.65590705871582, + "samples": [ + 18.401248931884766, + 18.39379119873047, + 18.542560577392578, + 18.29203224182129, + 18.26643180847168, + 18.326047897338867, + 18.324159622192383, + 18.22425651550293, + 18.317535400390625, + 18.457056045532227, + 18.27110481262207, + 18.360319137573242, + 18.24287986755371, + 18.237184524536133, + 18.550399780273438, + 18.357471466064453, + 18.412832260131836, + 18.330303192138672, + 18.308704376220703, + 18.42870330810547, + 18.4451847076416, + 18.648799896240234, + 18.288896560668945, + 25.41164779663086, + 18.719871520996094, + 18.488096237182617, + 18.74038314819336, + 18.27052879333496, + 18.394432067871094, + 18.42425537109375 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 73966.13098587841, + 21.150733344256878, + 18.985732924193144, + 18.898227717727423, + 18.637234810739756, + 18.83387565612793, + 18.76507606357336, + 19.242098089307547, + 18.691628240048885 + ], + "event_ms_including_first": [ + 73965.84375, + 21.1046085357666, + 18.942880630493164, + 18.864896774291992, + 18.6059513092041, + 18.802751541137695, + 18.734207153320312, + 19.211200714111328, + 18.660831451416016 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/4h/c4hekpp7puvv4eisnclzly4a67wlmn6ifgs66uyfe3ajorbh2r37.py" + ], + "routes": [ + { + "sha256": "07137055143eed311a30e993d3f2e2a6b5a8231ea70eb201e6327dd4d1c577ca", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 254369280, + "reserved": 276824064 + }, + "elapsed_s": 78.82752799987793 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_ECS_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 3]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" + } + } + }, + { + "run": "NeoCu_n96_ECS_p2", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 96, + "started": 1792867212.3552787, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "parameter_count": 1124910, + "first_peak": { + "allocated": 254369280, + "reserved": 276824064 + }, + "steady_peak": { + "allocated": 254369280, + "reserved": 276824064 + }, + "full_window_peak": { + "allocated": 254369280, + "reserved": 276824064 + }, + "steady_wall_ms": { + "median": 18.25942052528262, + "p90": 18.342752382159233, + "min": 18.14140798524022, + "max": 24.475242011249065, + "samples": [ + 18.27394776046276, + 18.253610003739595, + 18.222090788185596, + 18.152920063585043, + 18.14140798524022, + 18.317720852792263, + 18.33716779947281, + 18.29833397641778, + 18.31540698185563, + 18.275862094014883, + 18.233923241496086, + 18.31864332780242, + 18.26031180098653, + 18.207702785730362, + 18.258529249578714, + 18.22104910388589, + 18.332178238779306, + 18.275782000273466, + 24.475242011249065, + 19.1614949144423, + 18.39301362633705, + 18.254262395203114, + 18.25358998030424, + 18.280410207808018, + 18.272005021572113, + 18.222631886601448, + 18.235255032777786, + 18.250545021146536, + 18.222672399133444, + 18.256825860589743 + ] + }, + "steady_event_ms": { + "median": 18.215392112731934, + "p90": 18.29949779510498, + "samples": [ + 18.222400665283203, + 18.209823608398438, + 18.178272247314453, + 18.109600067138672, + 18.09756851196289, + 18.274303436279297, + 18.294048309326172, + 18.252735137939453, + 18.272735595703125, + 18.232511520385742, + 18.190048217773438, + 18.275360107421875, + 18.216575622558594, + 18.165023803710938, + 18.21174430847168, + 18.177536010742188, + 18.28803253173828, + 18.232736587524414, + 24.424287796020508, + 19.117536544799805, + 18.348543167114258, + 18.207775115966797, + 18.20844841003418, + 18.23686408996582, + 18.227584838867188, + 18.17945671081543, + 18.191936492919922, + 18.20742416381836, + 18.179424285888672, + 18.214208602905273 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 73524.60601786152, + 21.9517364166677, + 19.634417723864317, + 19.54106194898486, + 19.091202411800623, + 18.98801699280739, + 18.806023988872766, + 19.159290939569473, + 19.270610995590687 + ], + "event_ms_including_first": [ + 73524.359375, + 21.916608810424805, + 19.601215362548828, + 19.507583618164062, + 19.058975219726562, + 18.956159591674805, + 18.774816513061523, + 19.128032684326172, + 19.238431930541992 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/4h/c4hekpp7puvv4eisnclzly4a67wlmn6ifgs66uyfe3ajorbh2r37.py" + ], + "routes": [ + { + "sha256": "07137055143eed311a30e993d3f2e2a6b5a8231ea70eb201e6327dd4d1c577ca", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 254369280, + "reserved": 276824064 + }, + "elapsed_s": 78.3978099822998 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_ECS_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 3]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" + } + } + }, + { + "run": "NeoCu_n96_TORCH_p0", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 96, + "started": 1792866418.8775136, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "parameter_count": 1124910, + "first_peak": { + "allocated": 541384704, + "reserved": 612368384 + }, + "steady_peak": { + "allocated": 440721408, + "reserved": 612368384 + }, + "full_window_peak": { + "allocated": 541384704, + "reserved": 612368384 + }, + "steady_wall_ms": { + "median": 12.44979235343635, + "p90": 12.505908822640777, + "min": 12.361029163002968, + "max": 12.567630037665367, + "samples": [ + 12.482478749006987, + 12.567630037665367, + 12.470546178519726, + 12.463332153856754, + 12.435110285878181, + 12.445228174328804, + 12.361029163002968, + 12.43067067116499, + 12.450830079615116, + 12.485594023019075, + 12.50821677967906, + 12.412496842443943, + 12.489613145589828, + 12.444355990737677, + 12.461820151656866, + 12.444215826690197, + 12.505652382969856, + 12.454716954380274, + 12.421573046594858, + 12.41573179140687, + 12.388390954583883, + 12.431974057108164, + 12.43737293407321, + 12.496405746787786, + 12.395924888551235, + 12.464453931897879, + 12.537562754005194, + 12.488850858062506, + 12.448754627257586, + 12.437152676284313 + ] + }, + "steady_event_ms": { + "median": 12.407487869262695, + "p90": 12.459388732910156, + "samples": [ + 12.431584358215332, + 12.52451229095459, + 12.427712440490723, + 12.421183586120605, + 12.392640113830566, + 12.402912139892578, + 12.314496040344238, + 12.388511657714844, + 12.408512115478516, + 12.435839653015137, + 12.458911895751953, + 12.369152069091797, + 12.446528434753418, + 12.402144432067871, + 12.419232368469238, + 12.40287971496582, + 12.463680267333984, + 12.412511825561523, + 12.379167556762695, + 12.37388801574707, + 12.346688270568848, + 12.390463829040527, + 12.395487785339355, + 12.45315170288086, + 12.354175567626953, + 12.422335624694824, + 12.494784355163574, + 12.439040184020996, + 12.406463623046875, + 12.39516830444336 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 110542.740277946, + 16.50755200535059, + 13.443944975733757, + 13.195997104048729, + 13.04700504988432, + 12.964057736098766, + 12.840835843235254, + 13.223859015852213, + 12.783137150108814 + ], + "event_ms_including_first": [ + 110542.3046875, + 16.47532844543457, + 13.412991523742676, + 13.165311813354492, + 13.015040397644043, + 12.933343887329102, + 12.809760093688965, + 13.192864418029785, + 12.752448081970215 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/gq/cgqxdbomxuzvkjzgxsnxq6b3tjqj7zixfbwmuik2ygdsztydnhbm.py" + ], + "routes": [ + { + "sha256": "93ab40b3e0e376483a7774a65ce47bd9453708174e3b1c36984b719b02af962e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 541384704, + "reserved": 612368384 + }, + "elapsed_s": 114.66392302513123 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_TORCH_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 3]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" + } + } + }, + { + "run": "NeoCu_n96_TORCH_p1", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 96, + "started": 1792866973.129114, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "parameter_count": 1124910, + "first_peak": { + "allocated": 440721408, + "reserved": 507510784 + }, + "steady_peak": { + "allocated": 440721408, + "reserved": 507510784 + }, + "full_window_peak": { + "allocated": 440721408, + "reserved": 507510784 + }, + "steady_wall_ms": { + "median": 12.16584094800055, + "p90": 12.289544334635139, + "min": 12.087733019143343, + "max": 12.381397653371096, + "samples": [ + 12.31651520356536, + 12.350428849458694, + 12.22033379599452, + 12.251412030309439, + 12.163626961410046, + 12.194565031677485, + 12.22738716751337, + 12.190577108412981, + 12.168054934591055, + 12.160911224782467, + 12.213910929858685, + 12.117329053580761, + 12.150090653449297, + 12.12019519880414, + 12.160220183432102, + 12.28654757142067, + 12.1884741820395, + 12.381397653371096, + 12.136856094002724, + 12.211016844958067, + 12.150962837040424, + 12.154819909483194, + 12.087733019143343, + 12.141834944486618, + 12.170229107141495, + 12.144690845161676, + 12.157444842159748, + 12.175919953733683, + 12.116957921534777, + 12.132588308304548 + ] + }, + "steady_event_ms": { + "median": 12.123183727264404, + "p90": 12.24600601196289, + "samples": [ + 12.264639854431152, + 12.30684757232666, + 12.179136276245117, + 12.20473575592041, + 12.120927810668945, + 12.151935577392578, + 12.184320449829102, + 12.14748764038086, + 12.125439643859863, + 12.118047714233398, + 12.171520233154297, + 12.075231552124023, + 12.106623649597168, + 12.077183723449707, + 12.117823600769043, + 12.243935585021973, + 12.145695686340332, + 12.338591575622559, + 12.095232009887695, + 12.167296409606934, + 12.108960151672363, + 12.113056182861328, + 12.045696258544922, + 12.097855567932129, + 12.126655578613281, + 12.101280212402344, + 12.113568305969238, + 12.132927894592285, + 12.074560165405273, + 12.090304374694824 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 68841.95871185511, + 15.612421091645956, + 13.037518132477999, + 12.856676243245602, + 12.687265872955322, + 12.705649714916945, + 12.567258905619383, + 13.023070059716702, + 12.515850830823183 + ], + "event_ms_including_first": [ + 68841.7109375, + 15.57699203491211, + 13.00499153137207, + 12.824992179870605, + 12.654751777648926, + 12.67363166809082, + 12.535743713378906, + 12.991840362548828, + 12.485183715820312 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/gq/cgqxdbomxuzvkjzgxsnxq6b3tjqj7zixfbwmuik2ygdsztydnhbm.py" + ], + "routes": [ + { + "sha256": "93ab40b3e0e376483a7774a65ce47bd9453708174e3b1c36984b719b02af962e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 440721408, + "reserved": 507510784 + }, + "elapsed_s": 72.93481755256653 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_TORCH_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 3]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" + } + } + }, + { + "run": "NeoCu_n96_TORCH_p2", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 96, + "started": 1792867051.3587835, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "bcccu", + "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", + "parameter_count": 1124910, + "first_peak": { + "allocated": 440721408, + "reserved": 507510784 + }, + "steady_peak": { + "allocated": 440721408, + "reserved": 507510784 + }, + "full_window_peak": { + "allocated": 440721408, + "reserved": 507510784 + }, + "steady_wall_ms": { + "median": 12.232150649651885, + "p90": 12.29708082973957, + "min": 12.1318269520998, + "max": 12.32578232884407, + "samples": [ + 12.279636226594448, + 12.31942092999816, + 12.248367071151733, + 12.219010852277279, + 12.20756908878684, + 12.225052807480097, + 12.170310132205486, + 12.241343036293983, + 12.213040143251419, + 12.236303649842739, + 12.243818026036024, + 12.175559997558594, + 12.194184120744467, + 12.190376874059439, + 12.237896677106619, + 12.230933178216219, + 12.295586057007313, + 12.241143267601728, + 12.310533784329891, + 12.234270107001066, + 12.218751013278961, + 12.1318269520998, + 12.211757246404886, + 12.233368121087551, + 12.208571657538414, + 12.23401864990592, + 12.225062120705843, + 12.32578232884407, + 12.223558966070414, + 12.242996133863926 + ] + }, + "steady_event_ms": { + "median": 12.188799858093262, + "p90": 12.253894424438476, + "samples": [ + 12.230015754699707, + 12.273311614990234, + 12.2041597366333, + 12.175904273986816, + 12.164064407348633, + 12.182304382324219, + 12.126879692077637, + 12.197504043579102, + 12.167136192321777, + 12.193440437316895, + 12.192000389099121, + 12.131808280944824, + 12.151359558105469, + 12.147968292236328, + 12.194592475891113, + 12.187007904052734, + 12.252511978149414, + 12.19820785522461, + 12.266336441040039, + 12.1911039352417, + 12.175423622131348, + 12.088831901550293, + 12.168607711791992, + 12.190591812133789, + 12.16592025756836, + 12.190848350524902, + 12.182016372680664, + 12.282719612121582, + 12.179840087890625, + 12.201567649841309 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 68944.8289591819, + 15.6882144510746, + 13.182169757783413, + 12.85635493695736, + 12.577278073877096, + 12.540017254650593, + 12.452803086489439, + 12.77485117316246, + 12.338676955550909 + ], + "event_ms_including_first": [ + 68944.59375, + 15.652288436889648, + 13.1494722366333, + 12.82419204711914, + 12.545599937438965, + 12.508735656738281, + 12.421952247619629, + 12.743295669555664, + 12.307231903076172 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/gq/cgqxdbomxuzvkjzgxsnxq6b3tjqj7zixfbwmuik2ygdsztydnhbm.py" + ], + "routes": [ + { + "sha256": "93ab40b3e0e376483a7774a65ce47bd9453708174e3b1c36984b719b02af962e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 440721408, + "reserved": 507510784 + }, + "elapsed_s": 73.024080991745 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_TORCH_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 3]", + "system": "bcccu", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" + } + } + }, + { + "run": "Neo_n4096_BASE_p0", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 4096, + "started": 1792865702.8093216, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 1124910, + "first_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + }, + "steady_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + }, + "full_window_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + }, + "steady_wall_ms": { + "median": 156.48052119649947, + "p90": 156.68433769606054, + "min": 156.27337992191315, + "max": 180.99981034174562, + "samples": [ + 156.4929848536849, + 156.68412623926997, + 156.5261883661151, + 156.54564509168267, + 180.99981034174562, + 156.3616869971156, + 156.46844869479537, + 156.40755370259285, + 156.45742788910866, + 156.46160580217838, + 156.49324608966708, + 156.51069907471538, + 156.43191896378994, + 156.39943908900023, + 156.3932471908629, + 156.4072729088366, + 156.6428579390049, + 156.62103705108166, + 156.27337992191315, + 156.49058995768428, + 156.41227271407843, + 156.68624080717564, + 156.83523193001747, + 156.4358277246356, + 156.35444270446897, + 156.6509041003883, + 156.53416281566024, + 156.36695781722665, + 156.49088099598885, + 156.47045243531466 + ] + }, + "steady_event_ms": { + "median": 156.4232635498047, + "p90": 156.62041931152345, + "samples": [ + 156.4088592529297, + 156.63536071777344, + 156.4773406982422, + 156.49842834472656, + 180.95309448242188, + 156.3152618408203, + 156.4231719970703, + 156.3574981689453, + 156.41033935546875, + 156.4054412841797, + 156.4455108642578, + 156.46377563476562, + 156.38592529296875, + 156.3533172607422, + 156.3461456298828, + 156.3600311279297, + 156.59510803222656, + 156.57469177246094, + 156.22650146484375, + 156.44320678710938, + 156.365478515625, + 156.61875915527344, + 156.78822326660156, + 156.38771057128906, + 156.30796813964844, + 156.6031036376953, + 156.48345947265625, + 156.32025146484375, + 156.43820190429688, + 156.42335510253906 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 72919.18353596702, + 163.6372678913176, + 156.97519574314356, + 156.7812287248671, + 156.44078701734543, + 156.77533810958266, + 156.83727571740746, + 157.3728071525693, + 158.71155494824052 + ], + "event_ms_including_first": [ + 72918.9375, + 163.5992889404297, + 156.94029235839844, + 156.7470703125, + 156.4081573486328, + 156.74281311035156, + 156.8046112060547, + 157.32684326171875, + 158.67808532714844 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/r6/cr6523viczcwtkqd6oor5bw7nyliqlvjtwxnahabcibuwpe6z5tj.py" + ], + "routes": [ + { + "sha256": "b1e59a2969372a19fc391246c26d59c7425ec24133f0006f48af837acd05af1b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + }, + "elapsed_s": 88.49972105026245 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_BASE_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" + } + } + }, + { + "run": "Neo_n4096_BASE_p1", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 4096, + "started": 1792865980.8284543, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 1124910, + "first_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + }, + "steady_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + }, + "full_window_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + }, + "steady_wall_ms": { + "median": 156.51258709840477, + "p90": 156.65167407132685, + "min": 156.34719002991915, + "max": 157.37557178363204, + "samples": [ + 156.48639295250177, + 156.40126168727875, + 157.37557178363204, + 156.51047928258777, + 156.50014905259013, + 156.42337314784527, + 156.63987258449197, + 156.5129728987813, + 156.41803294420242, + 156.57644299790263, + 156.54038544744253, + 156.54217824339867, + 156.53499495238066, + 156.34719002991915, + 156.50896495208144, + 156.52673924341798, + 156.5152476541698, + 156.51220129802823, + 156.56592324376106, + 156.5523878671229, + 156.4616858959198, + 156.61648893728852, + 156.76603093743324, + 156.7462533712387, + 156.46365005522966, + 156.47027222439647, + 156.4549128524959, + 156.47445106878877, + 156.50980733335018, + 156.64116526022553 + ] + }, + "steady_event_ms": { + "median": 156.4656524658203, + "p90": 156.60491638183595, + "samples": [ + 156.42633056640625, + 156.35235595703125, + 157.32733154296875, + 156.46006774902344, + 156.4536895751953, + 156.37660217285156, + 156.58755493164062, + 156.46560668945312, + 156.3600311279297, + 156.5286407470703, + 156.49356079101562, + 156.4903106689453, + 156.4878387451172, + 156.3013458251953, + 156.46217346191406, + 156.48028564453125, + 156.468994140625, + 156.4656982421875, + 156.51670837402344, + 156.50588989257812, + 156.4041290283203, + 156.5674285888672, + 156.71839904785156, + 156.69923400878906, + 156.4186248779297, + 156.4247283935547, + 156.4083251953125, + 156.42930603027344, + 156.4633331298828, + 156.5944366455078 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 72625.17619831488, + 162.52721101045609, + 156.78396495059133, + 156.6762919537723, + 156.45836992189288, + 156.52647893875837, + 156.5912808291614, + 156.69818269088864, + 157.04721212387085 + ], + "event_ms_including_first": [ + 72624.8671875, + 162.4931182861328, + 156.750244140625, + 156.64230346679688, + 156.42697143554688, + 156.49395751953125, + 156.559814453125, + 156.6663055419922, + 157.01309204101562 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/r6/cr6523viczcwtkqd6oor5bw7nyliqlvjtwxnahabcibuwpe6z5tj.py" + ], + "routes": [ + { + "sha256": "b1e59a2969372a19fc391246c26d59c7425ec24133f0006f48af837acd05af1b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + }, + "elapsed_s": 88.19822382926941 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_BASE_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" + } + } + }, + { + "run": "Neo_n4096_BASE_p2", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 4096, + "started": 1792866230.3832273, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 1124910, + "first_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + }, + "steady_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + }, + "full_window_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + }, + "steady_wall_ms": { + "median": 156.61568753421307, + "p90": 157.58409621194005, + "min": 156.36457316577435, + "max": 1344.7500169277191, + "samples": [ + 1344.7500169277191, + 158.23369286954403, + 156.68727178126574, + 156.466334592551, + 156.56048292294145, + 156.51642996817827, + 156.59921569749713, + 156.45963186398149, + 156.66951797902584, + 156.6830649971962, + 156.72752866521478, + 156.44518472254276, + 157.2590721771121, + 158.8391768746078, + 156.85077104717493, + 156.49727312847972, + 156.5148658119142, + 156.53574606403708, + 156.44299099221826, + 156.68206196278334, + 156.36457316577435, + 156.44990280270576, + 156.5282312221825, + 156.46951086819172, + 156.43609780818224, + 156.632159370929, + 156.8234101869166, + 157.5119188055396, + 156.77065029740334, + 156.64127469062805 + ] + }, + "steady_event_ms": { + "median": 156.56343841552734, + "p90": 157.5366943359375, + "samples": [ + 1344.668701171875, + 158.18348693847656, + 156.63885498046875, + 156.418212890625, + 156.5122528076172, + 156.46937561035156, + 156.5511016845703, + 156.40982055664062, + 156.6222686767578, + 156.62506103515625, + 156.67913818359375, + 156.39779663085938, + 157.1939239501953, + 158.78909301757812, + 156.8037109375, + 156.44908142089844, + 156.46719360351562, + 156.4883270263672, + 156.39523315429688, + 156.62623596191406, + 156.31829833984375, + 156.4033966064453, + 156.47958374023438, + 156.42166137695312, + 156.3896942138672, + 156.57577514648438, + 156.77325439453125, + 157.46482849121094, + 156.72409057617188, + 156.59481811523438 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 73097.5666618906, + 163.44412276521325, + 156.77008870989084, + 156.45608631893992, + 156.49416809901595, + 156.8271261639893, + 156.59832395613194, + 156.83517092838883, + 156.5969018265605 + ], + "event_ms_including_first": [ + 73097.3125, + 163.4073944091797, + 156.73651123046875, + 156.42153930664062, + 156.4615936279297, + 156.791259765625, + 156.5655975341797, + 156.80108642578125, + 156.56285095214844 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/r6/cr6523viczcwtkqd6oor5bw7nyliqlvjtwxnahabcibuwpe6z5tj.py" + ], + "routes": [ + { + "sha256": "b1e59a2969372a19fc391246c26d59c7425ec24133f0006f48af837acd05af1b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + }, + "elapsed_s": 89.87030506134033 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_BASE_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" + } + } + }, + { + "run": "Neo_n4096_ECS_p0", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 4096, + "started": 1792865795.6343956, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 1124910, + "first_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "steady_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "full_window_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "steady_wall_ms": { + "median": 156.5818835515529, + "p90": 156.71164304949343, + "min": 156.37402143329382, + "max": 156.75293607637286, + "samples": [ + 156.66262479498982, + 156.39801556244493, + 156.44815005362034, + 156.42081899568439, + 156.53929160907865, + 156.4436717890203, + 156.4604239538312, + 156.41044033691287, + 156.72230813652277, + 156.52682911604643, + 156.55572386458516, + 156.53176791965961, + 156.6477078013122, + 156.43646894022822, + 156.60134004428983, + 156.66048182174563, + 156.64891991764307, + 156.63161734119058, + 156.70381393283606, + 156.37402143329382, + 156.6304750740528, + 156.67587099596858, + 156.51614917442203, + 156.71997424215078, + 156.7107173614204, + 156.50030924007297, + 156.75293607637286, + 156.5973130054772, + 156.5664540976286, + 156.7012188024819 + ] + }, + "steady_event_ms": { + "median": 156.5336456298828, + "p90": 156.66429748535157, + "samples": [ + 156.59085083007812, + 156.3494415283203, + 156.40159606933594, + 156.3741455078125, + 156.49375915527344, + 156.39718627929688, + 156.41481018066406, + 156.36338806152344, + 156.67372131347656, + 156.48089599609375, + 156.50067138671875, + 156.4839324951172, + 156.6015625, + 156.39065551757812, + 156.55506896972656, + 156.61404418945312, + 156.60269165039062, + 156.5839080810547, + 156.6575927734375, + 156.3271026611328, + 156.58367919921875, + 156.62921142578125, + 156.46563720703125, + 156.6727294921875, + 156.66336059570312, + 156.45298767089844, + 156.70594787597656, + 156.54806518554688, + 156.51922607421875, + 156.65481567382812 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 72474.02952983975, + 162.12231665849686, + 156.97010699659586, + 156.8793347105384, + 156.52658883482218, + 156.60702995955944, + 156.68534906581044, + 156.8877911195159, + 156.5409661270678 + ], + "event_ms_including_first": [ + 72473.734375, + 162.08595275878906, + 156.9364776611328, + 156.8465576171875, + 156.49481201171875, + 156.5738525390625, + 156.6517791748047, + 156.8561553955078, + 156.50665283203125 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/kf/ckf3pureuhkwfcery5lodm2gfxvh7xcqriovtuw2vtaeiqpi2svo.py" + ], + "routes": [ + { + "sha256": "141f28b0d52d57cb774d03932d92a61acb12636892cb98c78cc00bb0e8ed2c97", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "elapsed_s": 88.00500774383545 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_ECS_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" + } + } + }, + { + "run": "Neo_n4096_ECS_p1", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 4096, + "started": 1792865887.9604423, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 1124910, + "first_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "steady_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "full_window_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "steady_wall_ms": { + "median": 156.59486246295273, + "p90": 156.8413075990975, + "min": 156.38881782069802, + "max": 156.96907509118319, + "samples": [ + 156.64710570126772, + 156.53442312031984, + 156.96907509118319, + 156.69254213571548, + 156.5653719007969, + 156.55346028506756, + 156.76632104441524, + 156.38881782069802, + 156.564530916512, + 156.49400698021054, + 156.8362140096724, + 156.5952580422163, + 156.59446688368917, + 156.51406534016132, + 156.6105978563428, + 156.48541087284684, + 156.49956790730357, + 156.69695101678371, + 156.7459129728377, + 156.59557888284326, + 156.53866110369563, + 156.88714990392327, + 156.9039011374116, + 156.54865093529224, + 156.5403752028942, + 156.50627994909883, + 156.78639896214008, + 156.68566897511482, + 156.53224010020494, + 156.61657880991697 + ] + }, + "steady_event_ms": { + "median": 156.52971649169922, + "p90": 156.79306640625, + "samples": [ + 156.56207275390625, + 156.4817352294922, + 156.92051696777344, + 156.64463806152344, + 156.51766967773438, + 156.5070343017578, + 156.47705078125, + 156.33990478515625, + 156.51702880859375, + 156.4370574951172, + 156.78982543945312, + 156.54176330566406, + 156.54640197753906, + 156.4666290283203, + 156.55410766601562, + 156.43807983398438, + 156.45018005371094, + 156.64991760253906, + 156.69830322265625, + 156.54786682128906, + 156.4911651611328, + 156.82223510742188, + 156.85494995117188, + 156.50111389160156, + 156.4935302734375, + 156.4580535888672, + 156.72988891601562, + 156.6381072998047, + 156.48512268066406, + 156.56661987304688 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 73057.99957504496, + 162.91738906875253, + 157.27915009483695, + 156.7848757840693, + 156.6492598503828, + 156.94780414924026, + 156.67544025927782, + 156.73310915008187, + 156.59383591264486 + ], + "event_ms_including_first": [ + 73057.6953125, + 162.87954711914062, + 157.24525451660156, + 156.74937438964844, + 156.61753845214844, + 156.9153594970703, + 156.64332580566406, + 156.69725036621094, + 156.56063842773438 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/kf/ckf3pureuhkwfcery5lodm2gfxvh7xcqriovtuw2vtaeiqpi2svo.py" + ], + "routes": [ + { + "sha256": "141f28b0d52d57cb774d03932d92a61acb12636892cb98c78cc00bb0e8ed2c97", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "elapsed_s": 88.61730241775513 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_ECS_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" + } + } + }, + { + "run": "Neo_n4096_ECS_p2", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 4096, + "started": 1792866323.932033, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 1124910, + "first_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "steady_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "full_window_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "steady_wall_ms": { + "median": 156.6487962845713, + "p90": 156.7776191048324, + "min": 156.477278098464, + "max": 157.0051652379334, + "samples": [ + 156.77719423547387, + 156.51274472475052, + 156.66113514453173, + 156.74181701615453, + 156.59493021667004, + 156.72515612095594, + 156.64956299588084, + 156.477278098464, + 156.72873333096504, + 156.55704773962498, + 156.576634850353, + 156.7336223088205, + 156.6645009443164, + 156.69835498556495, + 156.64508426561952, + 156.61507798358798, + 157.0051652379334, + 156.6960709169507, + 156.64802957326174, + 156.5972939133644, + 156.66799806058407, + 156.63412399590015, + 156.63166902959347, + 156.65755793452263, + 156.86173411086202, + 156.63350280374289, + 156.78144292905927, + 156.5991980023682, + 156.63955500349402, + 156.63405368104577 + ] + }, + "steady_event_ms": { + "median": 156.60116577148438, + "p90": 156.7186264038086, + "samples": [ + 156.7169952392578, + 156.463623046875, + 156.61053466796875, + 156.6940155029297, + 156.54873657226562, + 156.67759704589844, + 156.60159301757812, + 156.43043518066406, + 156.68199157714844, + 156.5086669921875, + 156.53033447265625, + 156.6855926513672, + 156.61561584472656, + 156.65142822265625, + 156.59642028808594, + 156.56585693359375, + 156.9588165283203, + 156.64944458007812, + 156.60073852539062, + 156.5503387451172, + 156.6221466064453, + 156.58790588378906, + 156.58316040039062, + 156.6096954345703, + 156.81398010253906, + 156.58642578125, + 156.73330688476562, + 156.5517120361328, + 156.59228515625, + 156.58761596679688 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 75028.39578595012, + 162.30412386357784, + 157.16205164790154, + 157.01185772195458, + 156.62314370274544, + 156.98825288563967, + 156.85709472745657, + 156.8092447705567, + 156.71858424320817 + ], + "event_ms_including_first": [ + 75028.0703125, + 162.2689208984375, + 157.129150390625, + 156.9792022705078, + 156.59071350097656, + 156.9549102783203, + 156.8251495361328, + 156.7770233154297, + 156.68704223632812 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/kf/ckf3pureuhkwfcery5lodm2gfxvh7xcqriovtuw2vtaeiqpi2svo.py" + ], + "routes": [ + { + "sha256": "141f28b0d52d57cb774d03932d92a61acb12636892cb98c78cc00bb0e8ed2c97", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "elapsed_s": 90.64900159835815 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_ECS_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" + } + } + }, + { + "run": "Neo_n4096_TORCH_p0", + "result": { + "status": "oom", + "mode": "TORCH", + "n_atoms": 4096, + "started": 1792865623.9983976, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 1124910, + "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/7p/c7pndtfxe3mrtfgixzsmsf3r355pce3qwesz5k6bbekdcu6zibmr.py\", line 21401, in call\n buf200 = empty_strided_cuda((2, s29, 10, 32), (320*s29, 320, 32, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 1.54 GiB. GPU 0 has a total capacity of 31.36 GiB of which 441.06 MiB is free. Including non-PyTorch memory, this process has 30.89 GiB memory in use. Of the allocated memory 30.08 GiB is allocated by PyTorch, and 131.51 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", + "partial_arrays": 0, + "complete_peak": { + "allocated": 32302947328, + "reserved": 32440844288 + }, + "elapsed_s": 73.36892628669739 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_TORCH_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" + } + } + }, + { + "run": "Neo_n4096_TORCH_p1", + "result": { + "status": "oom", + "mode": "TORCH", + "n_atoms": 4096, + "started": 1792866073.2576334, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 1124910, + "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/7p/c7pndtfxe3mrtfgixzsmsf3r355pce3qwesz5k6bbekdcu6zibmr.py\", line 21401, in call\n buf200 = empty_strided_cuda((2, s29, 10, 32), (320*s29, 320, 32, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 1.54 GiB. GPU 0 has a total capacity of 31.36 GiB of which 441.06 MiB is free. Including non-PyTorch memory, this process has 30.89 GiB memory in use. Of the allocated memory 30.08 GiB is allocated by PyTorch, and 131.51 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", + "partial_arrays": 0, + "complete_peak": { + "allocated": 32302947328, + "reserved": 32440844288 + }, + "elapsed_s": 73.83922123908997 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_TORCH_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" + } + } + }, + { + "run": "Neo_n4096_TORCH_p2", + "result": { + "status": "oom", + "mode": "TORCH", + "n_atoms": 4096, + "started": 1792866152.7280385, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "parameter_count": 1124910, + "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/7p/c7pndtfxe3mrtfgixzsmsf3r355pce3qwesz5k6bbekdcu6zibmr.py\", line 21401, in call\n buf200 = empty_strided_cuda((2, s29, 10, 32), (320*s29, 320, 32, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 1.54 GiB. GPU 0 has a total capacity of 31.36 GiB of which 441.06 MiB is free. Including non-PyTorch memory, this process has 30.89 GiB memory in use. Of the allocated memory 30.08 GiB is allocated by PyTorch, and 131.51 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", + "partial_arrays": 0, + "complete_peak": { + "allocated": 32302947328, + "reserved": 32440844288 + }, + "elapsed_s": 71.68084454536438 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_TORCH_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" + } + } + }, + { + "run": "Neo_n512_BASE_p0", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 512, + "started": 1792864963.3391845, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 1124910, + "first_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + }, + "steady_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + }, + "full_window_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + }, + "steady_wall_ms": { + "median": 23.472956148907542, + "p90": 23.53168581612408, + "min": 23.415828123688698, + "max": 23.588123731315136, + "samples": [ + 23.44526443630457, + 23.490979801863432, + 23.45575299113989, + 23.56627117842436, + 23.50505581125617, + 23.473205976188183, + 23.472304921597242, + 23.487943690270185, + 23.465191014111042, + 23.47711380571127, + 23.45324819907546, + 23.428662214428186, + 23.464810103178024, + 23.43367226421833, + 23.47173308953643, + 23.509524762630463, + 23.530895356088877, + 23.538799956440926, + 23.48811412230134, + 23.491802159696817, + 23.415828123688698, + 23.46716495230794, + 23.431536741554737, + 23.483484983444214, + 23.466393817216158, + 23.4727063216269, + 23.44946190714836, + 23.474459070712328, + 23.483396042138338, + 23.588123731315136 + ] + }, + "steady_event_ms": { + "median": 23.42742347717285, + "p90": 23.485471534729005, + "samples": [ + 23.391136169433594, + 23.444608688354492, + 23.410879135131836, + 23.520832061767578, + 23.46009635925293, + 23.427104949951172, + 23.42767906188965, + 23.443296432495117, + 23.420576095581055, + 23.431968688964844, + 23.40892791748047, + 23.382368087768555, + 23.419776916503906, + 23.38934326171875, + 23.427040100097656, + 23.46460723876953, + 23.484447479248047, + 23.494688034057617, + 23.444448471069336, + 23.448192596435547, + 23.37107276916504, + 23.42233657836914, + 23.38684844970703, + 23.43846321105957, + 23.42051124572754, + 23.427167892456055, + 23.403488159179688, + 23.428863525390625, + 23.438688278198242, + 23.544544219970703 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 71574.58715187386, + 27.03565265983343, + 24.624940939247608, + 24.257296696305275, + 23.898229002952576, + 23.94630992785096, + 24.055976886302233, + 24.18797602877021, + 23.861099034547806 + ], + "event_ms_including_first": [ + 71574.34375, + 27.000703811645508, + 24.591487884521484, + 24.22377586364746, + 23.86684799194336, + 23.913984298706055, + 24.024608612060547, + 24.155616760253906, + 23.828832626342773 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/sx/csxsithsb5hcw7sqhfteh7w2yqxh3eqhd7dcadrbwxnksvqhwnot.py" + ], + "routes": [ + { + "sha256": "558e1a55ec953d53c9330d7b3d7a2343737d1dde28f8be25a60848d4af3f0a46", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + }, + "elapsed_s": 76.845778465271 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_BASE_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" + } + } + }, + { + "run": "Neo_n512_BASE_p1", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 512, + "started": 1792865211.682315, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 1124910, + "first_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + }, + "steady_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + }, + "full_window_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + }, + "steady_wall_ms": { + "median": 23.83947791531682, + "p90": 24.04231270775199, + "min": 23.7435270100832, + "max": 24.237079080194235, + "samples": [ + 24.195801001042128, + 23.84970709681511, + 23.74483970925212, + 23.76331388950348, + 23.92103197053075, + 23.79600564017892, + 23.776068352162838, + 23.7435270100832, + 23.783071897923946, + 23.79114693030715, + 24.237079080194235, + 24.103736970573664, + 23.811515420675278, + 23.782679811120033, + 23.963171988725662, + 23.809561040252447, + 23.903719149529934, + 23.752031847834587, + 23.762923199683428, + 23.855377919971943, + 23.85222213342786, + 23.837423883378506, + 23.9456077106297, + 23.823988158255816, + 23.841531947255135, + 23.795364890247583, + 23.87268142774701, + 24.035487789660692, + 23.968761786818504, + 23.927454371005297 + ] + }, + "steady_event_ms": { + "median": 23.795791625976562, + "p90": 23.997990608215332, + "samples": [ + 24.141759872436523, + 23.804672241210938, + 23.70025634765625, + 23.719392776489258, + 23.878080368041992, + 23.751935958862305, + 23.730592727661133, + 23.698240280151367, + 23.73923110961914, + 23.747615814208984, + 24.193248748779297, + 24.059968948364258, + 23.768415451049805, + 23.7391357421875, + 23.91904067993164, + 23.76531219482422, + 23.860511779785156, + 23.708480834960938, + 23.718847274780273, + 23.81158447265625, + 23.80847930908203, + 23.79417610168457, + 23.90131187438965, + 23.779743194580078, + 23.797407150268555, + 23.750656127929688, + 23.82841682434082, + 23.991104125976562, + 23.924320220947266, + 23.883359909057617 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 73439.61009802297, + 27.57379040122032, + 24.418822024017572, + 24.324122816324234, + 24.22081772238016, + 24.330175016075373, + 24.16901011019945, + 24.512238800525665, + 24.036178831011057 + ], + "event_ms_including_first": [ + 73439.3828125, + 27.539936065673828, + 24.386783599853516, + 24.291296005249023, + 24.188703536987305, + 24.299232482910156, + 24.137983322143555, + 24.47964859008789, + 24.003103256225586 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/sx/csxsithsb5hcw7sqhfteh7w2yqxh3eqhd7dcadrbwxnksvqhwnot.py" + ], + "routes": [ + { + "sha256": "558e1a55ec953d53c9330d7b3d7a2343737d1dde28f8be25a60848d4af3f0a46", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + }, + "elapsed_s": 78.7138307094574 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_BASE_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" + } + } + }, + { + "run": "Neo_n512_BASE_p2", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 512, + "started": 1792865459.376957, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 1124910, + "first_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + }, + "steady_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + }, + "full_window_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + }, + "steady_wall_ms": { + "median": 23.391558090224862, + "p90": 23.42084739357233, + "min": 23.34288600832224, + "max": 23.431914392858744, + "samples": [ + 23.39491480961442, + 23.404292296618223, + 23.358074948191643, + 23.36060907691717, + 23.431914392858744, + 23.365408182144165, + 23.420703131705523, + 23.39923195540905, + 23.422145750373602, + 23.38790101930499, + 23.35849590599537, + 23.42562237754464, + 23.37529743090272, + 23.374454583972692, + 23.393311072140932, + 23.37321313098073, + 23.396738339215517, + 23.380836937576532, + 23.393000941723585, + 23.36246194317937, + 23.34288600832224, + 23.398820776492357, + 23.387981113046408, + 23.35974806919694, + 23.39581586420536, + 23.39011523872614, + 23.40599475428462, + 23.40649627149105, + 23.40696705505252, + 23.36644008755684 + ] + }, + "steady_event_ms": { + "median": 23.345104217529297, + "p90": 23.370797157287598, + "samples": [ + 23.34102439880371, + 23.359264373779297, + 23.31443214416504, + 23.317184448242188, + 23.38764762878418, + 23.32156753540039, + 23.376384735107422, + 23.350847244262695, + 23.370176315307617, + 23.3437442779541, + 23.31609535217285, + 23.381824493408203, + 23.332191467285156, + 23.329856872558594, + 23.349695205688477, + 23.32931137084961, + 23.35296058654785, + 23.337631225585938, + 23.349023818969727, + 23.319488525390625, + 23.300416946411133, + 23.354719161987305, + 23.343616485595703, + 23.31065559387207, + 23.352224349975586, + 23.346464157104492, + 23.36288070678711, + 23.361984252929688, + 23.361600875854492, + 23.323583602905273 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 72196.17018988356, + 26.458889711648226, + 23.73197115957737, + 23.804357275366783, + 23.67665572091937, + 23.56088673695922, + 23.60380906611681, + 23.753772024065256, + 23.454366251826286 + ], + "event_ms_including_first": [ + 72195.9296875, + 26.426719665527344, + 23.699935913085938, + 23.771455764770508, + 23.645408630371094, + 23.523935317993164, + 23.573440551757812, + 23.7225284576416, + 23.42310333251953 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/sx/csxsithsb5hcw7sqhfteh7w2yqxh3eqhd7dcadrbwxnksvqhwnot.py" + ], + "routes": [ + { + "sha256": "558e1a55ec953d53c9330d7b3d7a2343737d1dde28f8be25a60848d4af3f0a46", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + }, + "elapsed_s": 77.46324419975281 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_BASE_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" + } + } + }, + { + "run": "Neo_n512_ECS_p0", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 512, + "started": 1792865044.7561097, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 1124910, + "first_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "steady_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "full_window_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "steady_wall_ms": { + "median": 23.730306420475245, + "p90": 23.828300880268216, + "min": 23.64894887432456, + "max": 24.083248805254698, + "samples": [ + 23.926242254674435, + 23.769135121256113, + 23.716966155916452, + 23.68405507877469, + 23.749207612127066, + 23.748505860567093, + 23.704172112047672, + 23.769275285303593, + 23.654748685657978, + 23.69773108512163, + 23.74044107273221, + 23.67904456332326, + 23.71512306854129, + 23.722195997834206, + 23.738416843116283, + 23.89515284448862, + 23.79456302151084, + 23.76632997766137, + 23.79430178552866, + 23.69840070605278, + 23.705284111201763, + 23.67494674399495, + 23.67599867284298, + 23.820872884243727, + 23.66591989994049, + 23.805614095181227, + 23.751401342451572, + 24.083248805254698, + 23.64894887432456, + 23.694223258644342 + ] + }, + "steady_event_ms": { + "median": 23.685407638549805, + "p90": 23.77716407775879, + "samples": [ + 23.873632431030273, + 23.724639892578125, + 23.67318344116211, + 23.64041519165039, + 23.705280303955078, + 23.704832077026367, + 23.660255432128906, + 23.724224090576172, + 23.61155128479004, + 23.65452766418457, + 23.697792053222656, + 23.63590431213379, + 23.670368194580078, + 23.679519653320312, + 23.691295623779297, + 23.85215950012207, + 23.75200080871582, + 23.723039627075195, + 23.750751495361328, + 23.654783248901367, + 23.66227149963379, + 23.632320404052734, + 23.63315200805664, + 23.768831253051758, + 23.622623443603516, + 23.76211166381836, + 23.70800018310547, + 24.039871215820312, + 23.606624603271484, + 23.65068817138672 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 74371.19716638699, + 26.240242179483175, + 24.193615652620792, + 24.158751126378775, + 24.06575484201312, + 24.18988011777401, + 24.044093675911427, + 24.32574611157179, + 23.887699004262686 + ], + "event_ms_including_first": [ + 74370.9609375, + 26.20854377746582, + 24.161760330200195, + 24.125919342041016, + 24.034879684448242, + 24.158815383911133, + 24.014272689819336, + 24.295391082763672, + 23.856447219848633 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/m2/cm2w6le275rcokfq5ek6qcfmj7nwxnjs7zsbx26lirbhof7x6oyk.py" + ], + "routes": [ + { + "sha256": "19c8da1d296e6ef073a8c0800d9b41638ef7f3a5b42cce1002a98687e067bb11", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "elapsed_s": 79.71142411231995 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_ECS_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" + } + } + }, + { + "run": "Neo_n512_ECS_p1", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 512, + "started": 1792865128.688177, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 1124910, + "first_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "steady_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "full_window_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "steady_wall_ms": { + "median": 23.494862718507648, + "p90": 23.648257786408067, + "min": 23.448830004781485, + "max": 23.97965220734477, + "samples": [ + 23.470160085707903, + 23.56250397861004, + 23.463848046958447, + 23.675858974456787, + 23.53673567995429, + 23.448830004781485, + 23.546825163066387, + 23.465432226657867, + 23.533360101282597, + 23.469279054552317, + 23.51085701957345, + 23.485729936510324, + 23.482013028115034, + 23.47933780401945, + 23.49845413118601, + 23.645190987735987, + 23.684334941208363, + 23.491591215133667, + 23.97965220734477, + 23.485048674046993, + 23.470299784094095, + 23.503654170781374, + 23.50792195647955, + 23.471523076295853, + 23.50022690370679, + 23.476953152567148, + 23.47791474312544, + 23.498134221881628, + 23.625674191862345, + 23.4786169603467 + ] + }, + "steady_event_ms": { + "median": 23.44976043701172, + "p90": 23.58700771331787, + "samples": [ + 23.41747283935547, + 23.51750373840332, + 23.42006492614746, + 23.630783081054688, + 23.49247932434082, + 23.405439376831055, + 23.503007888793945, + 23.42086410522461, + 23.49020767211914, + 23.425472259521484, + 23.467071533203125, + 23.44233512878418, + 23.438304901123047, + 23.435935974121094, + 23.4550724029541, + 23.581247329711914, + 23.64022445678711, + 23.4486083984375, + 23.936063766479492, + 23.441823959350586, + 23.426624298095703, + 23.459840774536133, + 23.46451187133789, + 23.42643165588379, + 23.456287384033203, + 23.432832717895508, + 23.43414306640625, + 23.450912475585938, + 23.582143783569336, + 23.435359954833984 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 73498.66676004604, + 26.35693224146962, + 24.461843073368073, + 24.213985074311495, + 24.02117196470499, + 23.84860534220934, + 24.056208319962025, + 24.16743664070964, + 23.675058037042618 + ], + "event_ms_including_first": [ + 73498.4296875, + 26.32156753540039, + 24.428415298461914, + 24.181472778320312, + 23.990367889404297, + 23.81839942932129, + 24.02627182006836, + 24.13711929321289, + 23.644287109375 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/m2/cm2w6le275rcokfq5ek6qcfmj7nwxnjs7zsbx26lirbhof7x6oyk.py" + ], + "routes": [ + { + "sha256": "19c8da1d296e6ef073a8c0800d9b41638ef7f3a5b42cce1002a98687e067bb11", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "elapsed_s": 78.74085116386414 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_ECS_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" + } + } + }, + { + "run": "Neo_n512_ECS_p2", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 512, + "started": 1792865541.0710413, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 1124910, + "first_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "steady_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "full_window_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "steady_wall_ms": { + "median": 23.41842302121222, + "p90": 23.45206644386053, + "min": 23.373063188046217, + "max": 23.484733887016773, + "samples": [ + 23.484733887016773, + 23.472319822758436, + 23.41406000778079, + 23.45868479460478, + 23.375628050416708, + 23.43052113428712, + 23.423087317496538, + 23.41622393578291, + 23.423587903380394, + 23.437004070729017, + 23.449568077921867, + 23.44484766945243, + 23.440550081431866, + 23.446430917829275, + 23.431092966347933, + 23.428286891430616, + 23.413569200783968, + 23.396065924316645, + 23.40101497247815, + 23.39276997372508, + 23.37877405807376, + 23.407887667417526, + 23.41432962566614, + 23.388091009110212, + 23.411063943058252, + 23.391246795654297, + 23.373063188046217, + 23.42062210664153, + 23.451331071555614, + 23.37874285876751 + ] + }, + "steady_event_ms": { + "median": 23.37395191192627, + "p90": 23.406226921081544, + "samples": [ + 23.431072235107422, + 23.4270076751709, + 23.369375228881836, + 23.414464950561523, + 23.331615447998047, + 23.38662338256836, + 23.378944396972656, + 23.37174415588379, + 23.379552841186523, + 23.392032623291016, + 23.405311584472656, + 23.4005126953125, + 23.395999908447266, + 23.40278434753418, + 23.387392044067383, + 23.380992889404297, + 23.369504928588867, + 23.35193634033203, + 23.35651206970215, + 23.349407196044922, + 23.334848403930664, + 23.35590362548828, + 23.369375228881836, + 23.343936920166016, + 23.367712020874023, + 23.34707260131836, + 23.328256607055664, + 23.37615966796875, + 23.398143768310547, + 23.333951950073242 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 72999.97337628156, + 26.498846244066954, + 24.363423231989145, + 23.985108826309443, + 23.85898120701313, + 23.77190627157688, + 23.70533999055624, + 23.93717924132943, + 23.90140015631914 + ], + "event_ms_including_first": [ + 72999.734375, + 26.444576263427734, + 24.330080032348633, + 23.95212745666504, + 23.827455520629883, + 23.74025535583496, + 23.674560546875, + 23.90563201904297, + 23.852672576904297 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/m2/cm2w6le275rcokfq5ek6qcfmj7nwxnjs7zsbx26lirbhof7x6oyk.py" + ], + "routes": [ + { + "sha256": "19c8da1d296e6ef073a8c0800d9b41638ef7f3a5b42cce1002a98687e067bb11", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "elapsed_s": 78.31566429138184 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_ECS_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" + } + } + }, + { + "run": "Neo_n512_TORCH_p0", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 512, + "started": 1792864881.7219424, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 1124910, + "first_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "steady_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "full_window_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "steady_wall_ms": { + "median": 46.99176293797791, + "p90": 47.01843303628266, + "min": 46.94853723049164, + "max": 47.07791982218623, + "samples": [ + 46.98795126751065, + 47.05140087753534, + 46.99028609320521, + 46.96715110912919, + 46.992830000817776, + 46.95226391777396, + 46.98702972382307, + 47.048235312104225, + 46.97624919936061, + 46.99230892583728, + 46.99810966849327, + 46.94853723049164, + 47.015121672302485, + 46.990484930574894, + 46.99121695011854, + 46.98532586917281, + 46.99280112981796, + 47.004792373627424, + 47.07791982218623, + 46.98894312605262, + 46.98598710820079, + 46.99425306171179, + 47.002068255096674, + 47.00023401528597, + 47.01202595606446, + 46.96967685595155, + 47.008850146085024, + 47.007167246192694, + 46.95721296593547, + 46.948886942118406 + ] + }, + "steady_event_ms": { + "median": 46.94783973693848, + "p90": 46.974121475219725, + "samples": [ + 46.92323303222656, + 47.005985260009766, + 46.94607925415039, + 46.923583984375, + 46.948577880859375, + 46.907936096191406, + 46.94294357299805, + 47.00502395629883, + 46.931968688964844, + 46.948577880859375, + 46.954593658447266, + 46.90447998046875, + 46.97068786621094, + 46.947776794433594, + 46.946815490722656, + 46.94144058227539, + 46.94790267944336, + 46.96352005004883, + 47.03385543823242, + 46.94569778442383, + 46.94233703613281, + 46.951168060302734, + 46.95827102661133, + 46.95606231689453, + 46.968929290771484, + 46.916255950927734, + 46.94963073730469, + 46.953025817871094, + 46.90342330932617, + 46.90576171875 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 69124.7489452362, + 49.76351233199239, + 47.44802042841911, + 47.42101766169071, + 47.4090869538486, + 47.29119408875704, + 47.17597598209977, + 47.244615852832794, + 47.02235572040081 + ], + "event_ms_including_first": [ + 69124.5390625, + 49.73148727416992, + 47.4152946472168, + 47.38115310668945, + 47.378143310546875, + 47.259647369384766, + 47.1446418762207, + 47.21401596069336, + 46.989952087402344 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/cq/ccqe5u272jrtq4fpm2o7gwk27d5aykenxhb57wg6x7b7t4xve3iw.py" + ], + "routes": [ + { + "sha256": "87608c81891309b6957cf18a940bf19b63f6fdd161f5cf06568ead5eeae6b151", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "elapsed_s": 75.79353308677673 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_TORCH_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" + } + } + }, + { + "run": "Neo_n512_TORCH_p1", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 512, + "started": 1792865294.88639, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 1124910, + "first_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "steady_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "full_window_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "steady_wall_ms": { + "median": 46.9794615637511, + "p90": 47.0337123144418, + "min": 46.920374035835266, + "max": 51.351903937757015, + "samples": [ + 46.963196247816086, + 46.987731009721756, + 46.958726830780506, + 46.920374035835266, + 46.938057988882065, + 47.131123021245, + 46.950400806963444, + 46.95668304339051, + 46.98754195123911, + 47.02288890257478, + 46.98225203901529, + 46.957083977758884, + 46.96551011875272, + 46.99385305866599, + 46.95576103404164, + 46.96193290874362, + 47.007408924400806, + 47.009702771902084, + 47.01380105689168, + 46.98675964027643, + 46.99499486014247, + 46.97667108848691, + 46.955701895058155, + 46.92967189475894, + 46.994884964078665, + 51.351903937757015, + 47.240179032087326, + 47.0206537283957, + 46.94470018148422, + 46.964036766439676 + ] + }, + "steady_event_ms": { + "median": 46.936767578125, + "p90": 46.99078598022461, + "samples": [ + 46.907745361328125, + 46.944000244140625, + 46.91609573364258, + 46.877342224121094, + 46.89555358886719, + 47.08844757080078, + 46.90681457519531, + 46.91328048706055, + 46.945438385009766, + 46.97993469238281, + 46.939456939697266, + 46.914207458496094, + 46.922367095947266, + 46.95158386230469, + 46.913631439208984, + 46.91932678222656, + 46.96428680419922, + 46.96662521362305, + 46.97187042236328, + 46.94367980957031, + 46.952640533447266, + 46.934078216552734, + 46.91328048706055, + 46.88713455200195, + 46.95110321044922, + 51.294273376464844, + 47.19420623779297, + 46.97769546508789, + 46.90288162231445, + 46.92166519165039 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 70829.90197278559, + 49.956288654357195, + 47.52054763957858, + 47.364172991365194, + 47.50605998560786, + 47.2664381377399, + 47.348171938210726, + 47.40398796275258, + 47.02786775305867 + ], + "event_ms_including_first": [ + 70829.6796875, + 49.92428970336914, + 47.48835372924805, + 47.33126449584961, + 47.47468948364258, + 47.22787094116211, + 47.317344665527344, + 47.37247848510742, + 46.99635314941406 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/cq/ccqe5u272jrtq4fpm2o7gwk27d5aykenxhb57wg6x7b7t4xve3iw.py" + ], + "routes": [ + { + "sha256": "87608c81891309b6957cf18a940bf19b63f6fdd161f5cf06568ead5eeae6b151", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "elapsed_s": 77.531822681427 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_TORCH_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" + } + } + }, + { + "run": "Neo_n512_TORCH_p2", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 512, + "started": 1792865377.763738, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "parameter_count": 1124910, + "first_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "steady_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "full_window_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "steady_wall_ms": { + "median": 46.97064450010657, + "p90": 47.008851915597916, + "min": 46.88762314617634, + "max": 47.14811500161886, + "samples": [ + 47.14811500161886, + 47.008040361106396, + 46.971460804343224, + 46.914041973650455, + 46.97266314178705, + 46.88762314617634, + 46.935493126511574, + 46.92897107452154, + 46.965590212494135, + 46.92520387470722, + 46.95008089765906, + 46.94693489000201, + 46.94128409028053, + 46.92210769280791, + 46.97094019502401, + 46.9018891453743, + 46.97034880518913, + 46.90614715218544, + 46.973415184766054, + 46.97811417281628, + 46.91897192969918, + 46.95130279287696, + 47.00277093797922, + 47.02956089749932, + 46.983292791992426, + 46.98978504166007, + 47.0044338144362, + 47.016155906021595, + 47.00421309098601, + 46.984465792775154 + ] + }, + "steady_event_ms": { + "median": 46.923871994018555, + "p90": 46.960967254638675, + "samples": [ + 47.09574508666992, + 46.96332931518555, + 46.92700958251953, + 46.87014389038086, + 46.927486419677734, + 46.8441276550293, + 46.89209747314453, + 46.88700866699219, + 46.922367095947266, + 46.881343841552734, + 46.90719985961914, + 46.90371322631836, + 46.895999908447266, + 46.87923049926758, + 46.92758560180664, + 46.858497619628906, + 46.92588806152344, + 46.86000061035156, + 46.928321838378906, + 46.925376892089844, + 46.87516784667969, + 46.89891052246094, + 46.95840072631836, + 46.95916748046875, + 46.919742584228516, + 46.93190383911133, + 46.95897674560547, + 46.973758697509766, + 46.9607048034668, + 46.940608978271484 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 69550.52131414413, + 49.84914604574442, + 47.558550257235765, + 47.48950991779566, + 47.296203672885895, + 47.319046687334776, + 47.19853959977627, + 47.3137772642076, + 47.01655590906739 + ], + "event_ms_including_first": [ + 69550.296875, + 49.81644821166992, + 47.52560043334961, + 47.45683288574219, + 47.263553619384766, + 47.28758239746094, + 47.167327880859375, + 47.28217697143555, + 46.98505783081055 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/cq/ccqe5u272jrtq4fpm2o7gwk27d5aykenxhb57wg6x7b7t4xve3iw.py" + ], + "routes": [ + { + "sha256": "87608c81891309b6957cf18a940bf19b63f6fdd161f5cf06568ead5eeae6b151", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "elapsed_s": 76.26847910881042 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_TORCH_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" + } + } + }, + { + "run": "Neo_n96_BASE_p0", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 96, + "started": 1792864122.3377771, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 1124910, + "first_peak": { + "allocated": 646372352, + "reserved": 694157312 + }, + "steady_peak": { + "allocated": 545709056, + "reserved": 694157312 + }, + "full_window_peak": { + "allocated": 646372352, + "reserved": 694157312 + }, + "steady_wall_ms": { + "median": 18.34854017943144, + "p90": 18.44224533997476, + "min": 18.211465794593096, + "max": 18.523053731769323, + "samples": [ + 18.34557019174099, + 18.330059945583344, + 18.313559237867594, + 18.40580301359296, + 18.401585053652525, + 18.339348025619984, + 18.215122632682323, + 18.523053731769323, + 18.32438912242651, + 18.35385477170348, + 18.369364086538553, + 18.288061022758484, + 18.301996868103743, + 18.453453201800585, + 18.32623267546296, + 18.211465794593096, + 18.47081631422043, + 18.360116984695196, + 18.441000021994114, + 18.31671502441168, + 18.43303395435214, + 18.335961271077394, + 18.29556468874216, + 18.363844137638807, + 18.36036704480648, + 18.36447510868311, + 18.325109966099262, + 18.351510167121887, + 18.312708009034395, + 18.368983175605536 + ] + }, + "steady_event_ms": { + "median": 18.29911994934082, + "p90": 18.39932174682617, + "samples": [ + 18.293888092041016, + 18.28563117980957, + 18.26927947998047, + 18.36275291442871, + 18.35919952392578, + 18.29587173461914, + 18.171903610229492, + 18.47964859008789, + 18.281024932861328, + 18.3023681640625, + 18.325088500976562, + 18.245344161987305, + 18.2488956451416, + 18.409631729125977, + 18.282880783081055, + 18.16806411743164, + 18.428255081176758, + 18.316448211669922, + 18.398176193237305, + 18.273056030273438, + 18.391071319580078, + 18.29372787475586, + 18.253087997436523, + 18.320735931396484, + 18.31737518310547, + 18.31337547302246, + 18.28121566772461, + 18.309280395507812, + 18.26915168762207, + 18.326112747192383 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 125353.61708281562, + 22.169218864291906, + 19.218076951801777, + 18.82081711664796, + 18.608505837619305, + 18.754039891064167, + 18.57342990115285, + 19.039528910070658, + 18.63673934713006 + ], + "event_ms_including_first": [ + 125353.203125, + 22.137760162353516, + 19.186880111694336, + 18.789695739746094, + 18.57766342163086, + 18.722623825073242, + 18.542335510253906, + 19.00761604309082, + 18.60550308227539 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/eq/ceqxwyk62sk4v57fkibgzv45dm7esitmn4felslkntpsep2t2qqe.py" + ], + "routes": [ + { + "sha256": "88a7f76f0c36e917c6c366a7ed05087145a36b37ea5c7765401714f632fae2d3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 646372352, + "reserved": 694157312 + }, + "elapsed_s": 130.1617293357849 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_BASE_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" + } + } + }, + { + "run": "Neo_n96_BASE_p1", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 96, + "started": 1792864474.3981674, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 1124910, + "first_peak": { + "allocated": 545709056, + "reserved": 589299712 + }, + "steady_peak": { + "allocated": 545709056, + "reserved": 589299712 + }, + "full_window_peak": { + "allocated": 545709056, + "reserved": 589299712 + }, + "steady_wall_ms": { + "median": 17.487884033471346, + "p90": 17.701540840789676, + "min": 17.387925181537867, + "max": 18.233501818031073, + "samples": [ + 18.233501818031073, + 17.77975494042039, + 17.726374324411154, + 17.698781564831734, + 17.582592088729143, + 17.447256948798895, + 17.523962073028088, + 17.49640004709363, + 17.608411144465208, + 17.54587283357978, + 17.487644217908382, + 17.495489213615656, + 17.437659204006195, + 17.45732594281435, + 17.56714330986142, + 17.45338784530759, + 17.51914294436574, + 17.447396647185087, + 17.55694393068552, + 17.46559189632535, + 17.434963025152683, + 17.61460304260254, + 17.485979944467545, + 17.467675730586052, + 17.47677195817232, + 17.48607074841857, + 17.387925181537867, + 17.479608301073313, + 17.48812384903431, + 17.463937867432833 + ] + }, + "steady_event_ms": { + "median": 17.44444751739502, + "p90": 17.655973625183105, + "samples": [ + 18.160064697265625, + 17.734304428100586, + 17.682239532470703, + 17.65305519104004, + 17.538272857666016, + 17.403263092041016, + 17.47964859008789, + 17.451711654663086, + 17.565439224243164, + 17.50102424621582, + 17.444799423217773, + 17.45123291015625, + 17.394527435302734, + 17.414079666137695, + 17.523712158203125, + 17.410240173339844, + 17.475391387939453, + 17.404415130615234, + 17.513248443603516, + 17.422592163085938, + 17.390655517578125, + 17.569791793823242, + 17.440767288208008, + 17.423839569091797, + 17.423999786376953, + 17.442272186279297, + 17.344383239746094, + 17.43619155883789, + 17.444095611572266, + 17.42051124572754 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 72164.22679368407, + 20.515702199190855, + 18.38913606479764, + 18.253599759191275, + 18.10473809018731, + 18.01825501024723, + 17.98604428768158, + 18.382824026048183, + 17.85301323980093 + ], + "event_ms_including_first": [ + 72163.984375, + 20.48303985595703, + 18.356416702270508, + 18.220800399780273, + 18.072864532470703, + 17.986560821533203, + 17.951007843017578, + 18.35055923461914, + 17.822080612182617 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/eq/ceqxwyk62sk4v57fkibgzv45dm7esitmn4felslkntpsep2t2qqe.py" + ], + "routes": [ + { + "sha256": "88a7f76f0c36e917c6c366a7ed05087145a36b37ea5c7765401714f632fae2d3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 545709056, + "reserved": 589299712 + }, + "elapsed_s": 76.95597267150879 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_BASE_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" + } + } + }, + { + "run": "Neo_n96_BASE_p2", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 96, + "started": 1792864715.980704, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 1124910, + "first_peak": { + "allocated": 545709056, + "reserved": 589299712 + }, + "steady_peak": { + "allocated": 545709056, + "reserved": 589299712 + }, + "full_window_peak": { + "allocated": 545709056, + "reserved": 589299712 + }, + "steady_wall_ms": { + "median": 17.992521403357387, + "p90": 18.385345488786697, + "min": 17.875676043331623, + "max": 18.757541198283434, + "samples": [ + 17.960526049137115, + 18.098798114806414, + 17.946539912372828, + 17.99245597794652, + 17.976255621761084, + 18.38134089484811, + 17.931971698999405, + 17.916403245180845, + 18.048221245408058, + 18.003006000071764, + 17.977689392864704, + 18.655868712812662, + 17.992586828768253, + 17.875676043331623, + 18.02075980231166, + 18.029966857284307, + 18.185812048614025, + 18.757541198283434, + 18.421386834234, + 18.327059224247932, + 17.92235393077135, + 18.006933853030205, + 17.952200956642628, + 17.903558909893036, + 17.95659912750125, + 17.94258179143071, + 18.31250125542283, + 17.96230999752879, + 17.90474122390151, + 18.001793883740902 + ] + }, + "steady_event_ms": { + "median": 17.950175285339355, + "p90": 18.343474769592284, + "samples": [ + 17.90991973876953, + 18.05615997314453, + 17.904096603393555, + 17.950687408447266, + 17.93302345275879, + 18.339519500732422, + 17.87286376953125, + 17.873119354248047, + 17.99295997619629, + 17.958656311035156, + 17.93391990661621, + 18.613759994506836, + 17.949663162231445, + 17.833824157714844, + 17.97862434387207, + 17.98851203918457, + 18.144128799438477, + 18.714975357055664, + 18.379072189331055, + 18.28563117980957, + 17.88003158569336, + 17.964223861694336, + 17.910655975341797, + 17.86115264892578, + 17.91449546813965, + 17.9003849029541, + 18.269376754760742, + 17.91993522644043, + 17.86332893371582, + 17.959999084472656 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 72728.42452162877, + 23.266646079719067, + 18.83880514651537, + 18.6008564196527, + 18.455361016094685, + 18.35196604952216, + 18.378385808318853, + 19.150422886013985, + 18.26495211571455 + ], + "event_ms_including_first": [ + 72728.1875, + 23.23311996459961, + 18.805824279785156, + 18.56550407409668, + 18.42406463623047, + 18.320480346679688, + 18.34739112854004, + 19.120384216308594, + 18.23308753967285 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/eq/ceqxwyk62sk4v57fkibgzv45dm7esitmn4felslkntpsep2t2qqe.py" + ], + "routes": [ + { + "sha256": "88a7f76f0c36e917c6c366a7ed05087145a36b37ea5c7765401714f632fae2d3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 545709056, + "reserved": 589299712 + }, + "elapsed_s": 77.61204385757446 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_BASE_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" + } + } + }, + { + "run": "Neo_n96_ECS_p0", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 96, + "started": 1792864257.0279186, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 1124910, + "first_peak": { + "allocated": 658144768, + "reserved": 694157312 + }, + "steady_peak": { + "allocated": 557481472, + "reserved": 694157312 + }, + "full_window_peak": { + "allocated": 658144768, + "reserved": 694157312 + }, + "steady_wall_ms": { + "median": 18.035011831671, + "p90": 18.22465849108994, + "min": 17.904140055179596, + "max": 18.341226037591696, + "samples": [ + 17.937833908945322, + 18.20538891479373, + 18.21850286796689, + 17.9204810410738, + 17.917845863848925, + 17.904140055179596, + 17.981195356696844, + 18.060754984617233, + 18.177185207605362, + 18.090982921421528, + 18.014919012784958, + 18.07272806763649, + 17.91988918557763, + 17.979811877012253, + 18.31022696569562, + 17.99589302390814, + 17.988800071179867, + 17.956138122826815, + 18.03193101659417, + 17.963101156055927, + 18.280059099197388, + 18.04152922704816, + 17.997967079281807, + 18.038092646747828, + 17.95486593618989, + 18.341226037591696, + 18.183366861194372, + 18.109166994690895, + 18.059513065963984, + 18.189799040555954 + ] + }, + "steady_event_ms": { + "median": 17.99169635772705, + "p90": 18.180928230285645, + "samples": [ + 17.886943817138672, + 18.160415649414062, + 18.1746883392334, + 17.87775993347168, + 17.87494468688965, + 17.860992431640625, + 17.938175201416016, + 18.01696014404297, + 18.13417625427246, + 18.045408248901367, + 17.9716796875, + 18.0295352935791, + 17.875551223754883, + 17.936864852905273, + 18.267295837402344, + 17.95292854309082, + 17.9418888092041, + 17.912639617919922, + 17.988576889038086, + 17.919391632080078, + 18.23708724975586, + 17.999135971069336, + 17.954784393310547, + 17.994815826416016, + 17.91152000427246, + 18.297216415405273, + 18.14009666442871, + 18.06643295288086, + 18.015296936035156, + 18.146879196166992 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 124468.64810399711, + 22.579277865588665, + 18.915169406682253, + 18.615694250911474, + 18.492110073566437, + 18.440451938658953, + 18.41519493609667, + 18.724188208580017, + 18.258098047226667 + ], + "event_ms_including_first": [ + 124468.2421875, + 22.548255920410156, + 18.88489532470703, + 18.58470344543457, + 18.46086311340332, + 18.40947151184082, + 18.383968353271484, + 18.692991256713867, + 18.22707176208496 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/t3/ct3jv332q663pb7fau5sahydsikcnpltdy2wnxiqaxujbrwe2xrh.py" + ], + "routes": [ + { + "sha256": "65e175bca1f23233ff9f33a17000de61cb7f6359e00f23d5d6a5a18cde6d2ca7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 658144768, + "reserved": 694157312 + }, + "elapsed_s": 129.26316785812378 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_ECS_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" + } + } + }, + { + "run": "Neo_n96_ECS_p1", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 96, + "started": 1792864391.0106223, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 1124910, + "first_peak": { + "allocated": 557481472, + "reserved": 589299712 + }, + "steady_peak": { + "allocated": 557481472, + "reserved": 589299712 + }, + "full_window_peak": { + "allocated": 557481472, + "reserved": 589299712 + }, + "steady_wall_ms": { + "median": 17.637936864048243, + "p90": 17.804267024621367, + "min": 17.560991924256086, + "max": 18.174109049141407, + "samples": [ + 17.606807872653008, + 17.704101745039225, + 17.684996128082275, + 17.968380823731422, + 17.73078180849552, + 17.622938845306635, + 17.63023203238845, + 17.627628054469824, + 17.613191157579422, + 17.631405033171177, + 17.64040207490325, + 17.624891828745604, + 17.619351856410503, + 17.61622680351138, + 17.7063369192183, + 17.656301613897085, + 17.73932809010148, + 17.638477962464094, + 17.791116144508123, + 17.72382901981473, + 17.635933123528957, + 17.670036759227514, + 17.560991924256086, + 17.63739576563239, + 17.922624945640564, + 18.174109049141407, + 17.56738405674696, + 17.588343005627394, + 17.643488012254238, + 17.56748417392373 + ] + }, + "steady_event_ms": { + "median": 17.59388828277588, + "p90": 17.76079387664795, + "samples": [ + 17.55523109436035, + 17.65990447998047, + 17.640703201293945, + 17.925472259521484, + 17.687519073486328, + 17.579456329345703, + 17.587263107299805, + 17.583839416503906, + 17.570783615112305, + 17.58844757080078, + 17.597759246826172, + 17.58185577392578, + 17.57699203491211, + 17.5633602142334, + 17.662752151489258, + 17.61337661743164, + 17.69443130493164, + 17.595712661743164, + 17.747648239135742, + 17.679616928100586, + 17.592063903808594, + 17.627103805541992, + 17.517728805541992, + 17.591455459594727, + 17.879104614257812, + 18.13167953491211, + 17.523775100708008, + 17.546079635620117, + 17.600255966186523, + 17.52230453491211 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 74426.08160804957, + 20.52371622994542, + 18.375800922513008, + 18.395096994936466, + 18.332318402826786, + 18.256634939461946, + 18.229243345558643, + 18.573713954538107, + 17.946319188922644 + ], + "event_ms_including_first": [ + 74425.8203125, + 20.490623474121094, + 18.34239959716797, + 18.36240005493164, + 18.301023483276367, + 18.22515106201172, + 18.19817543029785, + 18.54204750061035, + 17.914047241210938 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/t3/ct3jv332q663pb7fau5sahydsikcnpltdy2wnxiqaxujbrwe2xrh.py" + ], + "routes": [ + { + "sha256": "65e175bca1f23233ff9f33a17000de61cb7f6359e00f23d5d6a5a18cde6d2ca7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 557481472, + "reserved": 589299712 + }, + "elapsed_s": 79.25965547561646 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_ECS_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" + } + } + }, + { + "run": "Neo_n96_ECS_p2", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 96, + "started": 1792864798.1407197, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 1124910, + "first_peak": { + "allocated": 557481472, + "reserved": 589299712 + }, + "steady_peak": { + "allocated": 557481472, + "reserved": 589299712 + }, + "full_window_peak": { + "allocated": 557481472, + "reserved": 589299712 + }, + "steady_wall_ms": { + "median": 18.551687942817807, + "p90": 18.689992604777217, + "min": 18.41905200853944, + "max": 18.871405627578497, + "samples": [ + 18.624631222337484, + 18.642303999513388, + 18.549398984760046, + 18.580377101898193, + 18.60001403838396, + 18.572482280433178, + 18.513971008360386, + 18.666228745132685, + 18.505425192415714, + 18.48539710044861, + 18.49484583362937, + 18.520643934607506, + 18.477371893823147, + 18.55397690087557, + 18.693410325795412, + 18.628276884555817, + 18.600824754685163, + 18.492220900952816, + 18.871405627578497, + 18.453136086463928, + 18.41905200853944, + 18.556742928922176, + 18.45473889261484, + 18.682740163058043, + 18.689612857997417, + 18.474657088518143, + 18.442136235535145, + 18.49882211536169, + 18.517276737838984, + 18.841078970581293 + ] + }, + "steady_event_ms": { + "median": 18.5099515914917, + "p90": 18.648479461669922, + "samples": [ + 18.571327209472656, + 18.597440719604492, + 18.50704002380371, + 18.535551071166992, + 18.557920455932617, + 18.531583786010742, + 18.472639083862305, + 18.623647689819336, + 18.46384048461914, + 18.443071365356445, + 18.4498233795166, + 18.4781436920166, + 18.436256408691406, + 18.512863159179688, + 18.651071548461914, + 18.586559295654297, + 18.559295654296875, + 18.45078468322754, + 18.83011245727539, + 18.411264419555664, + 18.377567291259766, + 18.515775680541992, + 18.413055419921875, + 18.640928268432617, + 18.648191452026367, + 18.416704177856445, + 18.4005126953125, + 18.44553565979004, + 18.476608276367188, + 18.800575256347656 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 74339.57385784015, + 21.287428215146065, + 19.20474600046873, + 19.224323332309723, + 19.032159820199013, + 19.056987017393112, + 19.0767552703619, + 19.40412214025855, + 18.80797604098916 + ], + "event_ms_including_first": [ + 74339.3359375, + 21.254240036010742, + 19.172544479370117, + 19.1911678314209, + 19.000160217285156, + 19.024799346923828, + 19.044416427612305, + 19.373151779174805, + 18.776479721069336 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/t3/ct3jv332q663pb7fau5sahydsikcnpltdy2wnxiqaxujbrwe2xrh.py" + ], + "routes": [ + { + "sha256": "65e175bca1f23233ff9f33a17000de61cb7f6359e00f23d5d6a5a18cde6d2ca7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 557481472, + "reserved": 589299712 + }, + "elapsed_s": 79.26460266113281 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_ECS_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" + } + } + }, + { + "run": "Neo_n96_TORCH_p0", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 96, + "started": 1792863999.7472875, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 1124910, + "first_peak": { + "allocated": 1118501888, + "reserved": 1260388352 + }, + "steady_peak": { + "allocated": 1017838592, + "reserved": 1260388352 + }, + "full_window_peak": { + "allocated": 1118501888, + "reserved": 1260388352 + }, + "steady_wall_ms": { + "median": 13.191187288612127, + "p90": 13.266367325559258, + "min": 13.116164598613977, + "max": 13.67404917255044, + "samples": [ + 13.230211101472378, + 13.441429939121008, + 13.143737334758043, + 13.183953706175089, + 13.18994490429759, + 13.15711298957467, + 13.130131643265486, + 13.231983873993158, + 13.227926101535559, + 13.219410087913275, + 13.192429672926664, + 13.187179807573557, + 13.220151886343956, + 13.207106851041317, + 13.415589928627014, + 13.166159857064486, + 13.67404917255044, + 13.16109113395214, + 13.152734842151403, + 13.166520278900862, + 13.159476686269045, + 13.116164598613977, + 13.150930870324373, + 13.249787036329508, + 13.240319676697254, + 13.244677800685167, + 13.176239095628262, + 13.166690245270729, + 13.219892047345638, + 13.207448180764914 + ] + }, + "steady_event_ms": { + "median": 13.149136066436768, + "p90": 13.224441432952881, + "samples": [ + 13.17420768737793, + 13.398880004882812, + 13.1014404296875, + 13.140800476074219, + 13.148192405700684, + 13.114944458007812, + 13.088224411010742, + 13.189567565917969, + 13.18505573272705, + 13.177472114562988, + 13.150079727172852, + 13.144767761230469, + 13.17795181274414, + 13.164447784423828, + 13.373279571533203, + 13.120896339416504, + 13.632384300231934, + 13.118975639343262, + 13.110112190246582, + 13.12275218963623, + 13.1178560256958, + 13.074015617370605, + 13.109151840209961, + 13.207903861999512, + 13.197919845581055, + 13.202752113342285, + 13.133888244628906, + 13.124159812927246, + 13.177472114562988, + 13.16528034210205 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 112561.75757618621, + 17.38168904557824, + 14.077791012823582, + 13.860479928553104, + 13.582095969468355, + 13.578298036009073, + 13.517653103917837, + 13.712211046367884, + 13.44104902818799 + ], + "event_ms_including_first": [ + 112561.359375, + 17.349119186401367, + 14.046943664550781, + 13.820704460144043, + 13.551487922668457, + 13.54751968383789, + 13.487456321716309, + 13.680864334106445, + 13.410719871520996 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/mj/cmjses2umzitkv4gp2qeaqon3k36jmk67u5xy5qr6mm3lmrgz5hv.py" + ], + "routes": [ + { + "sha256": "ba841b0194a6a580056989d65781eaef17c64480ecff0e1022b08073bc21da08", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 1118501888, + "reserved": 1260388352 + }, + "elapsed_s": 116.72742581367493 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_TORCH_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" + } + } + }, + { + "run": "Neo_n96_TORCH_p1", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 96, + "started": 1792864555.8685224, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 1124910, + "first_peak": { + "allocated": 1017838592, + "reserved": 1176502272 + }, + "steady_peak": { + "allocated": 1017838592, + "reserved": 1176502272 + }, + "full_window_peak": { + "allocated": 1017838592, + "reserved": 1176502272 + }, + "steady_wall_ms": { + "median": 12.997369514778256, + "p90": 13.076308788731694, + "min": 12.915208004415035, + "max": 13.153307605534792, + "samples": [ + 13.094537891447544, + 13.153307605534792, + 12.998817022889853, + 12.996032368391752, + 13.018154073506594, + 12.998295947909355, + 13.07483995333314, + 13.061275240033865, + 13.020055834203959, + 12.996552977710962, + 12.979800347238779, + 12.970894109457731, + 12.956187129020691, + 13.022351078689098, + 13.001963030546904, + 12.99999887123704, + 13.034723699092865, + 13.089528307318687, + 13.025447260588408, + 12.996381614357233, + 12.959722895175219, + 12.993295677006245, + 12.986803892999887, + 12.990591116249561, + 12.99818605184555, + 12.99469918012619, + 12.954342179000378, + 12.938241939991713, + 12.961255852133036, + 12.915208004415035 + ] + }, + "steady_event_ms": { + "median": 12.954319953918457, + "p90": 13.03336935043335, + "samples": [ + 13.041088104248047, + 13.109087944030762, + 12.956031799316406, + 12.95366382598877, + 12.97488021850586, + 12.955488204956055, + 13.032511711120605, + 13.018303871154785, + 12.978240013122559, + 12.954048156738281, + 12.936991691589355, + 12.927712440490723, + 12.913472175598145, + 12.978560447692871, + 12.958975791931152, + 12.956607818603516, + 12.976287841796875, + 13.045920372009277, + 12.982943534851074, + 12.953280448913574, + 12.9170560836792, + 12.950271606445312, + 12.942975997924805, + 12.946623802185059, + 12.954591751098633, + 12.951199531555176, + 12.911040306091309, + 12.895584106445312, + 12.919168472290039, + 12.873248100280762 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 70202.27432902902, + 16.132073011249304, + 13.621311634778976, + 13.425824232399464, + 13.358545955270529, + 13.341875281184912, + 13.28651001676917, + 13.427074998617172, + 13.090569991618395 + ], + "event_ms_including_first": [ + 70202.046875, + 16.079999923706055, + 13.58886432647705, + 13.393535614013672, + 13.327967643737793, + 13.310815811157227, + 13.25715160369873, + 13.397343635559082, + 13.060511589050293 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/mj/cmjses2umzitkv4gp2qeaqon3k36jmk67u5xy5qr6mm3lmrgz5hv.py" + ], + "routes": [ + { + "sha256": "ba841b0194a6a580056989d65781eaef17c64480ecff0e1022b08073bc21da08", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 1017838592, + "reserved": 1176502272 + }, + "elapsed_s": 74.35690426826477 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_TORCH_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" + } + } + }, + { + "run": "Neo_n96_TORCH_p2", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 96, + "started": 1792864635.5300088, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 1124910, + "first_peak": { + "allocated": 1017838592, + "reserved": 1176502272 + }, + "steady_peak": { + "allocated": 1017838592, + "reserved": 1176502272 + }, + "full_window_peak": { + "allocated": 1017838592, + "reserved": 1176502272 + }, + "steady_wall_ms": { + "median": 13.07558105327189, + "p90": 13.151851389557123, + "min": 13.010018039494753, + "max": 13.157967943698168, + "samples": [ + 13.08149192482233, + 13.151634950190783, + 13.04154796525836, + 13.010018039494753, + 13.069670181721449, + 13.049160595983267, + 13.095879927277565, + 13.107031118124723, + 13.06358864530921, + 13.134893029928207, + 13.129923958331347, + 13.058799784630537, + 13.142588082700968, + 13.157967943698168, + 13.124643824994564, + 13.153799343854189, + 13.155612163245678, + 13.065793085843325, + 13.087945058941841, + 13.012583367526531, + 13.043661136180162, + 13.023353181779385, + 13.049812987446785, + 13.026298955082893, + 13.012262061238289, + 13.06681614369154, + 13.046926818788052, + 13.118302915245295, + 13.099116273224354, + 13.127198908478022 + ] + }, + "steady_event_ms": { + "median": 13.030096054077148, + "p90": 13.10913314819336, + "samples": [ + 13.032480239868164, + 13.108832359313965, + 12.998623847961426, + 12.967679977416992, + 13.027711868286133, + 13.005087852478027, + 13.05299186706543, + 13.063072204589844, + 13.021344184875488, + 13.092415809631348, + 13.087455749511719, + 13.006719589233398, + 13.099583625793457, + 13.115296363830566, + 13.081600189208984, + 13.11184024810791, + 13.113632202148438, + 13.023776054382324, + 13.041952133178711, + 12.969696044921875, + 13.00160026550293, + 12.98083209991455, + 13.007904052734375, + 12.984512329101562, + 12.969856262207031, + 13.024255752563477, + 13.004351615905762, + 13.075967788696289, + 13.057408332824707, + 13.085023880004883 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 70566.1840569228, + 16.813669819384813, + 13.45542911440134, + 13.347906060516834, + 13.275329023599625, + 13.421786017715931, + 13.354627881199121, + 13.572800904512405, + 13.207079842686653 + ], + "event_ms_including_first": [ + 70565.9140625, + 16.78201675415039, + 13.424384117126465, + 13.316415786743164, + 13.244704246520996, + 13.391807556152344, + 13.324735641479492, + 13.542495727539062, + 13.176511764526367 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/mj/cmjses2umzitkv4gp2qeaqon3k36jmk67u5xy5qr6mm3lmrgz5hv.py" + ], + "routes": [ + { + "sha256": "ba841b0194a6a580056989d65781eaef17c64480ecff0e1022b08073bc21da08", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 1017838592, + "reserved": 1176502272 + }, + "elapsed_s": 74.65931630134583 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_TORCH_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" + } + } + }, + { + "run": "Pro_n4096_BASE_p0", + "result": { + "status": "oom", + "mode": "BASE", + "n_atoms": 4096, + "started": 1792872634.9226987, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/am/camspdo6kx5gnjlafl7iexnzw6e5snfddhd3trsr3e3n2cztlycx.py\", line 20919, in call\n buf64 = empty_strided_cuda((s46, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 871.06 MiB is free. Including non-PyTorch memory, this process has 30.47 GiB memory in use. Of the allocated memory 29.74 GiB is allocated by PyTorch, and 57.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", + "partial_arrays": 0, + "complete_peak": { + "allocated": 31929301504, + "reserved": 31989956608 + }, + "elapsed_s": 188.92400097846985 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_BASE_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" + } + } + }, + { + "run": "Pro_n4096_BASE_p1", + "result": { + "status": "oom", + "mode": "BASE", + "n_atoms": 4096, + "started": 1792873213.2061002, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/am/camspdo6kx5gnjlafl7iexnzw6e5snfddhd3trsr3e3n2cztlycx.py\", line 20919, in call\n buf64 = empty_strided_cuda((s46, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 871.06 MiB is free. Including non-PyTorch memory, this process has 30.47 GiB memory in use. Of the allocated memory 29.74 GiB is allocated by PyTorch, and 57.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", + "partial_arrays": 0, + "complete_peak": { + "allocated": 31929301504, + "reserved": 31989956608 + }, + "elapsed_s": 186.5676712989807 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_BASE_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" + } + } + }, + { + "run": "Pro_n4096_BASE_p2", + "result": { + "status": "oom", + "mode": "BASE", + "n_atoms": 4096, + "started": 1792873698.0892181, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/am/camspdo6kx5gnjlafl7iexnzw6e5snfddhd3trsr3e3n2cztlycx.py\", line 20919, in call\n buf64 = empty_strided_cuda((s46, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 871.06 MiB is free. Including non-PyTorch memory, this process has 30.47 GiB memory in use. Of the allocated memory 29.74 GiB is allocated by PyTorch, and 57.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", + "partial_arrays": 0, + "complete_peak": { + "allocated": 31929301504, + "reserved": 31989956608 + }, + "elapsed_s": 188.6032009124756 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_BASE_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" + } + } + }, + { + "run": "Pro_n4096_ECS_p0", + "result": { + "status": "oom", + "mode": "ECS", + "n_atoms": 4096, + "started": 1792872829.7394366, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/wu/cwu5rkg3ws24k2ch22id4pkjawrgdklubhesfbxm3qaciqae7gpf.py\", line 20939, in call\n buf64 = empty_strided_cuda((s46, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 871.06 MiB is free. Including non-PyTorch memory, this process has 30.47 GiB memory in use. Of the allocated memory 29.74 GiB is allocated by PyTorch, and 57.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", + "partial_arrays": 0, + "complete_peak": { + "allocated": 31929301504, + "reserved": 31989956608 + }, + "elapsed_s": 186.17430138587952 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_ECS_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" + } + } + }, + { + "run": "Pro_n4096_ECS_p1", + "result": { + "status": "oom", + "mode": "ECS", + "n_atoms": 4096, + "started": 1792873021.7048163, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/wu/cwu5rkg3ws24k2ch22id4pkjawrgdklubhesfbxm3qaciqae7gpf.py\", line 20939, in call\n buf64 = empty_strided_cuda((s46, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 871.06 MiB is free. Including non-PyTorch memory, this process has 30.47 GiB memory in use. Of the allocated memory 29.74 GiB is allocated by PyTorch, and 57.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", + "partial_arrays": 0, + "complete_peak": { + "allocated": 31929301504, + "reserved": 31989956608 + }, + "elapsed_s": 185.50847601890564 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_ECS_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" + } + } + }, + { + "run": "Pro_n4096_ECS_p2", + "result": { + "status": "oom", + "mode": "ECS", + "n_atoms": 4096, + "started": 1792873892.4796147, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/wu/cwu5rkg3ws24k2ch22id4pkjawrgdklubhesfbxm3qaciqae7gpf.py\", line 20939, in call\n buf64 = empty_strided_cuda((s46, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 871.06 MiB is free. Including non-PyTorch memory, this process has 30.47 GiB memory in use. Of the allocated memory 29.74 GiB is allocated by PyTorch, and 57.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", + "partial_arrays": 0, + "complete_peak": { + "allocated": 31929301504, + "reserved": 31989956608 + }, + "elapsed_s": 187.12241053581238 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_ECS_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" + } + } + }, + { + "run": "Pro_n4096_TORCH_p0", + "result": { + "status": "oom", + "mode": "TORCH", + "n_atoms": 4096, + "started": 1792872488.735287, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/db/cdbxhl4ag2mms4oooq2iu5tx2nwa73j2ckthin7jon7hvaejblzz.py\", line 21624, in call\n buf83 = empty_strided_cuda((s29, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 631.06 MiB is free. Including non-PyTorch memory, this process has 30.70 GiB memory in use. Of the allocated memory 29.98 GiB is allocated by PyTorch, and 49.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", + "partial_arrays": 0, + "complete_peak": { + "allocated": 32189347328, + "reserved": 32598130688 + }, + "elapsed_s": 137.5577781200409 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_TORCH_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" + } + } + }, + { + "run": "Pro_n4096_TORCH_p1", + "result": { + "status": "oom", + "mode": "TORCH", + "n_atoms": 4096, + "started": 1792873405.5164213, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/db/cdbxhl4ag2mms4oooq2iu5tx2nwa73j2ckthin7jon7hvaejblzz.py\", line 21624, in call\n buf83 = empty_strided_cuda((s29, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 631.06 MiB is free. Including non-PyTorch memory, this process has 30.70 GiB memory in use. Of the allocated memory 29.98 GiB is allocated by PyTorch, and 49.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", + "partial_arrays": 0, + "complete_peak": { + "allocated": 32189347328, + "reserved": 32598130688 + }, + "elapsed_s": 138.13616728782654 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_TORCH_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" + } + } + }, + { + "run": "Pro_n4096_TORCH_p2", + "result": { + "status": "oom", + "mode": "TORCH", + "n_atoms": 4096, + "started": 1792873552.185923, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/db/cdbxhl4ag2mms4oooq2iu5tx2nwa73j2ckthin7jon7hvaejblzz.py\", line 21624, in call\n buf83 = empty_strided_cuda((s29, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 631.06 MiB is free. Including non-PyTorch memory, this process has 30.70 GiB memory in use. Of the allocated memory 29.98 GiB is allocated by PyTorch, and 49.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", + "partial_arrays": 0, + "complete_peak": { + "allocated": 32189347328, + "reserved": 32598130688 + }, + "elapsed_s": 137.1274483203888 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_TORCH_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[8, 8, 8]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" + } + } + }, + { + "run": "Pro_n512_BASE_p0", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 512, + "started": 1792870883.844925, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "first_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "steady_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "full_window_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "steady_wall_ms": { + "median": 330.3883490152657, + "p90": 331.13448335789144, + "min": 328.93246272578835, + "max": 331.44852705299854, + "samples": [ + 329.4674949720502, + 328.93246272578835, + 329.7875691205263, + 329.31924518197775, + 329.7445778734982, + 329.9583219923079, + 329.66874493286014, + 330.1202282309532, + 330.2524872124195, + 330.1836671307683, + 330.19671216607094, + 330.47837391495705, + 330.1179129630327, + 330.32981399446726, + 329.57038888707757, + 330.29819279909134, + 331.1246959492564, + 330.44688403606415, + 330.8909232728183, + 331.2225700356066, + 330.55757405236363, + 330.8467101305723, + 331.0362780466676, + 330.8506770990789, + 331.0791999101639, + 331.0015620663762, + 330.94645803794265, + 330.99447889253497, + 331.403321120888, + 331.44852705299854 + ] + }, + "steady_event_ms": { + "median": 330.3404541015625, + "p90": 331.08546142578126, + "samples": [ + 329.3716735839844, + 328.87646484375, + 329.7410888671875, + 329.2705993652344, + 329.6970520019531, + 329.9093322753906, + 329.6210632324219, + 330.0731506347656, + 330.20574951171875, + 330.1376037597656, + 330.1489562988281, + 330.43072509765625, + 330.0705261230469, + 330.28118896484375, + 329.52252197265625, + 330.249267578125, + 331.0762939453125, + 330.39971923828125, + 330.843505859375, + 331.16796875, + 330.5086975097656, + 330.7977600097656, + 330.9892578125, + 330.802490234375, + 331.03155517578125, + 330.9538269042969, + 330.8992919921875, + 330.9463806152344, + 331.35516357421875, + 331.39990234375 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 182464.88129207864, + 318.95527616143227, + 323.0022299103439, + 327.4008696898818, + 327.5795769877732, + 327.2301680408418, + 327.4980140849948, + 327.5095862336457, + 326.35235926136374 + ], + "event_ms_including_first": [ + 182464.328125, + 318.91668701171875, + 322.9582214355469, + 327.36541748046875, + 327.5439147949219, + 327.197021484375, + 327.4646911621094, + 327.4757995605469, + 326.3194274902344 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/yn/cynkatpdxuy6z4ecamjpj3aairqgtl3gmx2y4lna7oxrc25dxqy4.py" + ], + "routes": [ + { + "sha256": "731fde8285e01447b81f62b29a0ff978da2ea857a317a68d380e40ec5b5e266c", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "elapsed_s": 211.9595959186554 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_BASE_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" + } + } + }, + { + "run": "Pro_n512_BASE_p1", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 512, + "started": 1792871541.3749335, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "first_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "steady_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "full_window_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "steady_wall_ms": { + "median": 330.69150149822235, + "p90": 331.7792649846524, + "min": 329.13242699578404, + "max": 332.46510196477175, + "samples": [ + 329.3067258782685, + 329.13242699578404, + 329.64295987039804, + 329.9283003434539, + 329.84806783497334, + 330.0530849955976, + 330.3496348671615, + 330.2415511570871, + 330.1067571155727, + 330.68741392344236, + 330.18637727946043, + 330.6649113073945, + 330.68543998524547, + 331.04781387373805, + 330.95708303153515, + 330.6866022758186, + 331.0111057944596, + 331.1797631904483, + 330.90561581775546, + 330.80060686916113, + 330.9154137969017, + 330.5283831432462, + 330.74300922453403, + 330.69558907300234, + 330.9106254018843, + 331.7518341355026, + 332.0534946396947, + 332.0261426270008, + 331.5701009705663, + 332.46510196477175 + ] + }, + "steady_event_ms": { + "median": 330.6449279785156, + "p90": 331.7240692138672, + "samples": [ + 329.24169921875, + 329.0748596191406, + 329.59442138671875, + 329.88189697265625, + 329.8006591796875, + 330.0054016113281, + 330.30328369140625, + 330.1935119628906, + 330.0587463378906, + 330.6302795410156, + 330.1388244628906, + 330.6171569824219, + 330.63763427734375, + 331.0013122558594, + 330.9094543457031, + 330.6412353515625, + 330.963623046875, + 331.1310119628906, + 330.84979248046875, + 330.75274658203125, + 330.87030029296875, + 330.48065185546875, + 330.6937255859375, + 330.64862060546875, + 330.8638916015625, + 331.69561767578125, + 332.00341796875, + 331.9801330566406, + 331.5238037109375, + 332.41796875 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 183793.70096791536, + 318.47902201116085, + 326.0141359642148, + 327.77670538052917, + 327.5198210030794, + 327.0154669880867, + 327.25338730961084, + 326.9509761594236, + 326.35963801294565 + ], + "event_ms_including_first": [ + 183792.984375, + 318.4337463378906, + 325.9812927246094, + 327.74224853515625, + 327.48779296875, + 326.9814453125, + 327.2186584472656, + 326.91754150390625, + 326.32672119140625 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/yn/cynkatpdxuy6z4ecamjpj3aairqgtl3gmx2y4lna7oxrc25dxqy4.py" + ], + "routes": [ + { + "sha256": "731fde8285e01447b81f62b29a0ff978da2ea857a317a68d380e40ec5b5e266c", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "elapsed_s": 213.32395911216736 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_BASE_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" + } + } + }, + { + "run": "Pro_n512_BASE_p2", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 512, + "started": 1792872051.5004563, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "first_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "steady_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "full_window_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "steady_wall_ms": { + "median": 330.46476845629513, + "p90": 331.37708539143205, + "min": 328.76895973458886, + "max": 332.1241680532694, + "samples": [ + 329.0109569206834, + 329.5029061846435, + 329.4539740309119, + 329.99500585719943, + 328.76895973458886, + 329.2420729994774, + 330.147793982178, + 329.27935384213924, + 330.0963370129466, + 329.35326313599944, + 329.9838840030134, + 330.4836289025843, + 330.67820593714714, + 329.76858830079436, + 330.44590801000595, + 329.52689100056887, + 330.58026107028127, + 330.3062040358782, + 331.06003841385245, + 330.5022241547704, + 330.79116884619, + 331.33672131225467, + 331.2470610253513, + 331.15721121430397, + 331.2898017466068, + 330.70824295282364, + 331.74036210402846, + 331.31009992212057, + 331.86169201508164, + 332.1241680532694 + ] + }, + "steady_event_ms": { + "median": 330.4180145263672, + "p90": 331.33119201660156, + "samples": [ + 328.9467468261719, + 329.453369140625, + 329.405029296875, + 329.9477233886719, + 328.7219543457031, + 329.19415283203125, + 330.09954833984375, + 329.2327880859375, + 330.0483093261719, + 329.304443359375, + 329.93621826171875, + 330.4363098144531, + 330.6293640136719, + 329.72076416015625, + 330.39971923828125, + 329.47674560546875, + 330.5314636230469, + 330.2574462890625, + 331.0125427246094, + 330.4523620605469, + 330.74334716796875, + 331.2908935546875, + 331.2001037597656, + 331.1078186035156, + 331.24072265625, + 330.6622619628906, + 331.6938781738281, + 331.2624816894531, + 331.8150939941406, + 332.0722351074219 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 181805.2286328748, + 320.1611186377704, + 326.8331731669605, + 327.4820279330015, + 326.60858798772097, + 326.7710851505399, + 325.9980846196413, + 326.16626331582665, + 326.31915202364326 + ], + "event_ms_including_first": [ + 181804.640625, + 320.12591552734375, + 326.79913330078125, + 327.44677734375, + 326.57177734375, + 326.737548828125, + 325.96441650390625, + 326.1313171386719, + 326.28466796875 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/yn/cynkatpdxuy6z4ecamjpj3aairqgtl3gmx2y4lna7oxrc25dxqy4.py" + ], + "routes": [ + { + "sha256": "731fde8285e01447b81f62b29a0ff978da2ea857a317a68d380e40ec5b5e266c", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "elapsed_s": 211.2205445766449 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_BASE_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" + } + } + }, + { + "run": "Pro_n512_ECS_p0", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 512, + "started": 1792871101.5944726, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "first_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "steady_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "full_window_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "steady_wall_ms": { + "median": 330.5037620011717, + "p90": 331.35263016447425, + "min": 329.32684756815434, + "max": 331.78385021165013, + "samples": [ + 329.7449089586735, + 329.69251926988363, + 330.4862887598574, + 329.7612089663744, + 330.10780438780785, + 329.32684756815434, + 329.95398435741663, + 330.32842073589563, + 329.82192421332, + 329.82171420007944, + 330.521235242486, + 330.18398797139525, + 330.2294840104878, + 330.76681895181537, + 330.43211698532104, + 330.27464896440506, + 330.76017582789063, + 330.0974238663912, + 331.0215608216822, + 330.9924150817096, + 330.99697437137365, + 330.7306612841785, + 331.6651061177254, + 331.1467571184039, + 330.6635841727257, + 331.30740001797676, + 331.029515247792, + 331.31823129951954, + 331.66221994906664, + 331.78385021165013 + ] + }, + "steady_event_ms": { + "median": 330.45086669921875, + "p90": 331.30701599121096, + "samples": [ + 329.6829528808594, + 329.6447448730469, + 330.4280700683594, + 329.71484375, + 330.0538024902344, + 329.278564453125, + 329.9086608886719, + 330.2828063964844, + 329.7767333984375, + 329.7744445800781, + 330.4736633300781, + 330.13739013671875, + 330.1847229003906, + 330.7193908691406, + 330.38629150390625, + 330.22625732421875, + 330.71435546875, + 330.0115966796875, + 330.97491455078125, + 330.9398498535156, + 330.944580078125, + 330.6825866699219, + 331.6192321777344, + 331.0988464355469, + 330.61761474609375, + 331.2622985839844, + 330.98382568359375, + 331.2727355957031, + 331.61553955078125, + 331.73858642578125 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 183996.37485994026, + 319.7685116901994, + 326.9005552865565, + 327.58106011897326, + 327.18660589307547, + 326.04781398549676, + 326.3996592722833, + 326.7992539331317, + 325.7418661378324 + ], + "event_ms_including_first": [ + 183995.671875, + 319.73443603515625, + 326.86676025390625, + 327.54705810546875, + 327.1512756347656, + 326.0149230957031, + 326.3677062988281, + 326.7646484375, + 325.7083435058594 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/wk/cwke62t4jonhwstpp2av3vhx2ebs2wn33ourpfxruiy6da3or2ek.py" + ], + "routes": [ + { + "sha256": "89c0788df7356f657c542a03021870e433d7a073ee758b2e248ae5f4fa5a0900", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "elapsed_s": 213.37857484817505 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_ECS_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" + } + } + }, + { + "run": "Pro_n512_ECS_p1", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 512, + "started": 1792871320.8004878, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "first_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "steady_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "full_window_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "steady_wall_ms": { + "median": 330.61256748624146, + "p90": 331.29749530926347, + "min": 329.4907230883837, + "max": 332.0848438888788, + "samples": [ + 329.67159524559975, + 329.5118729583919, + 329.4907230883837, + 330.1178882829845, + 329.93765687569976, + 330.0144630484283, + 329.84278770163655, + 330.29214665293694, + 330.06658079102635, + 330.8244519867003, + 330.42435673996806, + 330.6037560105324, + 330.53464628756046, + 331.40893606469035, + 330.37154702469707, + 330.32550010830164, + 330.755271948874, + 330.76332695782185, + 330.55624598637223, + 330.62137896195054, + 331.2561782076955, + 330.9639757499099, + 331.67033130303025, + 330.84688521921635, + 330.9861780144274, + 330.7790872640908, + 331.1229660175741, + 330.9287400916219, + 331.2851130031049, + 332.0848438888788 + ] + }, + "steady_event_ms": { + "median": 330.56158447265625, + "p90": 331.24732360839846, + "samples": [ + 329.607177734375, + 329.45989990234375, + 329.4375915527344, + 330.0711975097656, + 329.8907775878906, + 329.96527099609375, + 329.7957763671875, + 330.2444763183594, + 330.0198059082031, + 330.7760314941406, + 330.3763732910156, + 330.55694580078125, + 330.4873046875, + 331.36083984375, + 330.3224182128906, + 330.2769775390625, + 330.69793701171875, + 330.7138671875, + 330.5093688964844, + 330.56622314453125, + 331.2070007324219, + 330.9139099121094, + 331.6217346191406, + 330.7980651855469, + 330.938232421875, + 330.7315979003906, + 331.0748291015625, + 330.88128662109375, + 331.2347106933594, + 332.0374450683594 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 185188.80185578018, + 320.1083689928055, + 326.4369643293321, + 328.1156956218183, + 327.50654499977827, + 327.2781642153859, + 327.561778947711, + 326.5346591360867, + 326.62020111456513 + ], + "event_ms_including_first": [ + 185188.0625, + 320.0699768066406, + 326.4026794433594, + 328.080322265625, + 327.4736633300781, + 327.2415771484375, + 327.52777099609375, + 326.5010681152344, + 326.5869140625 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/wk/cwke62t4jonhwstpp2av3vhx2ebs2wn33ourpfxruiy6da3or2ek.py" + ], + "routes": [ + { + "sha256": "89c0788df7356f657c542a03021870e433d7a073ee758b2e248ae5f4fa5a0900", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "elapsed_s": 214.69410967826843 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_ECS_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" + } + } + }, + { + "run": "Pro_n512_ECS_p2", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 512, + "started": 1792872268.599881, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "first_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "steady_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "full_window_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "steady_wall_ms": { + "median": 330.82179236225784, + "p90": 332.13382181711495, + "min": 329.94279684498906, + "max": 332.74902775883675, + "samples": [ + 330.3526919335127, + 330.4998888634145, + 330.3616177290678, + 330.0859471783042, + 330.1260028965771, + 330.5208389647305, + 330.19236801192164, + 330.5561658926308, + 330.31374774873257, + 330.38712572306395, + 329.94279684498906, + 330.43100917711854, + 330.25210117921233, + 330.2591652609408, + 330.7500518858433, + 330.9173076413572, + 330.8935328386724, + 331.4599241130054, + 331.1420623213053, + 331.90977293998003, + 331.4678478054702, + 331.64697559550405, + 331.6222191788256, + 332.1308200247586, + 331.95623103529215, + 331.9876501336694, + 332.19810808077455, + 332.1608379483223, + 331.8406930193305, + 332.74902775883675 + ] + }, + "steady_event_ms": { + "median": 330.77415466308594, + "p90": 332.0862609863281, + "samples": [ + 330.2875671386719, + 330.4476623535156, + 330.3128967285156, + 330.02642822265625, + 330.0760498046875, + 330.4735412597656, + 330.14453125, + 330.5077819824219, + 330.26678466796875, + 330.3401184082031, + 329.8956604003906, + 330.38226318359375, + 330.2050476074219, + 330.2127685546875, + 330.70166015625, + 330.868896484375, + 330.8466491699219, + 331.4126281738281, + 331.09356689453125, + 331.86346435546875, + 331.41925048828125, + 331.59820556640625, + 331.57354736328125, + 332.083251953125, + 331.9096984863281, + 331.93780517578125, + 332.1499938964844, + 332.11334228515625, + 331.79534912109375, + 332.7011413574219 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 184863.41063678265, + 318.69301572442055, + 325.90644201263785, + 326.4760780148208, + 326.85983274132013, + 327.71198311820626, + 326.58566534519196, + 326.67806977406144, + 326.1484792456031 + ], + "event_ms_including_first": [ + 184862.703125, + 318.6546630859375, + 325.8702697753906, + 326.44232177734375, + 326.8256530761719, + 327.6793212890625, + 326.5516357421875, + 326.6380310058594, + 326.11578369140625 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/wk/cwke62t4jonhwstpp2av3vhx2ebs2wn33ourpfxruiy6da3or2ek.py" + ], + "routes": [ + { + "sha256": "89c0788df7356f657c542a03021870e433d7a073ee758b2e248ae5f4fa5a0900", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "elapsed_s": 214.28966283798218 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_ECS_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" + } + } + }, + { + "run": "Pro_n512_TORCH_p0", + "result": { + "status": "oom", + "mode": "TORCH", + "n_atoms": 512, + "started": 1792870737.0522878, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/b6/cb6y74z5wjdb23bsj7sgwz7n4l6tpvrsmehqafsc5rp6ytf6afxd.py\", line 23148, in call\n buf476 = empty_strided_cuda((1, 16*s29, 128), (2048*s29, 128, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 634.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 153.06 MiB is free. Including non-PyTorch memory, this process has 31.17 GiB memory in use. Of the allocated memory 30.43 GiB is allocated by PyTorch, and 62.92 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", + "partial_arrays": 0, + "complete_peak": { + "allocated": 32676858368, + "reserved": 32847691776 + }, + "elapsed_s": 138.26069927215576 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_TORCH_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" + } + } + }, + { + "run": "Pro_n512_TORCH_p1", + "result": { + "status": "oom", + "mode": "TORCH", + "n_atoms": 512, + "started": 1792871760.549256, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/b6/cb6y74z5wjdb23bsj7sgwz7n4l6tpvrsmehqafsc5rp6ytf6afxd.py\", line 23148, in call\n buf476 = empty_strided_cuda((1, 16*s29, 128), (2048*s29, 128, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 634.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 153.06 MiB is free. Including non-PyTorch memory, this process has 31.17 GiB memory in use. Of the allocated memory 30.43 GiB is allocated by PyTorch, and 62.92 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", + "partial_arrays": 0, + "complete_peak": { + "allocated": 32676858368, + "reserved": 32847691776 + }, + "elapsed_s": 136.69677186012268 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_TORCH_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" + } + } + }, + { + "run": "Pro_n512_TORCH_p2", + "result": { + "status": "oom", + "mode": "TORCH", + "n_atoms": 512, + "started": 1792871905.773682, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/b6/cb6y74z5wjdb23bsj7sgwz7n4l6tpvrsmehqafsc5rp6ytf6afxd.py\", line 23148, in call\n buf476 = empty_strided_cuda((1, 16*s29, 128), (2048*s29, 128, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 634.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 153.06 MiB is free. Including non-PyTorch memory, this process has 31.17 GiB memory in use. Of the allocated memory 30.43 GiB is allocated by PyTorch, and 62.92 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", + "partial_arrays": 0, + "complete_peak": { + "allocated": 32676858368, + "reserved": 32847691776 + }, + "elapsed_s": 137.19549584388733 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_TORCH_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[4, 4, 4]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" + } + } + }, + { + "run": "Pro_n96_BASE_p0", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 96, + "started": 1792869022.2745385, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "first_peak": { + "allocated": 5139665408, + "reserved": 5251268608 + }, + "steady_peak": { + "allocated": 5039002112, + "reserved": 5251268608 + }, + "full_window_peak": { + "allocated": 5139665408, + "reserved": 5251268608 + }, + "steady_wall_ms": { + "median": 66.9921007938683, + "p90": 67.23123360425234, + "min": 66.28315104171634, + "max": 67.34666088595986, + "samples": [ + 66.28315104171634, + 67.12422985583544, + 66.84515345841646, + 66.78998889401555, + 67.34666088595986, + 66.86208536848426, + 66.88198167830706, + 67.22717499360442, + 66.84165634214878, + 66.9632563367486, + 67.13177403435111, + 66.8840566650033, + 67.04936875030398, + 67.04905908554792, + 66.87885709106922, + 67.1760980039835, + 67.02237809076905, + 66.92571518942714, + 67.22007179632783, + 67.05026002600789, + 66.84327917173505, + 67.29254871606827, + 66.93498278036714, + 66.92715780809522, + 67.26776110008359, + 66.93365098908544, + 67.020945250988, + 67.21300771459937, + 66.91920291632414, + 67.03331880271435 + ] + }, + "steady_event_ms": { + "median": 66.94852828979492, + "p90": 67.18829727172852, + "samples": [ + 66.22537231445312, + 67.07968139648438, + 66.8028793334961, + 66.7457275390625, + 67.30355072021484, + 66.81958770751953, + 66.83843231201172, + 67.1842269897461, + 66.79840087890625, + 66.91964721679688, + 67.08422088623047, + 66.84175872802734, + 67.00752258300781, + 67.0057601928711, + 66.83625793457031, + 67.1335678100586, + 66.97993469238281, + 66.88294219970703, + 67.1759033203125, + 67.00790405273438, + 66.79996490478516, + 67.2498550415039, + 66.89282989501953, + 66.8832015991211, + 67.22492980957031, + 66.890625, + 66.97740936279297, + 67.17062377929688, + 66.87721252441406, + 66.99037170410156 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 290820.4663717188, + 68.3974651619792, + 66.40419038012624, + 66.60013971850276, + 66.67718617245555, + 66.1907372996211, + 66.48434139788151, + 66.53663888573647, + 65.66989235579967 + ], + "event_ms_including_first": [ + 290819.59375, + 68.36598205566406, + 66.37340545654297, + 66.56896209716797, + 66.64553833007812, + 66.15894317626953, + 66.45263671875, + 66.48770904541016, + 65.63798522949219 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/dj/cdjnztrtmgoelm4hiuot7ap2blpjqzombzdzqd4mi57jgti5ydmm.py" + ], + "routes": [ + { + "sha256": "c238802cdf7c9f5fb658a32738a5d1e8f3088559235129f9a4d5392f20778c78", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 5139665408, + "reserved": 5251268608 + }, + "elapsed_s": 300.18249249458313 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_BASE_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" + } + } + }, + { + "run": "Pro_n96_BASE_p1", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 96, + "started": 1792869834.6958387, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "first_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "steady_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "full_window_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "steady_wall_ms": { + "median": 66.9666463509202, + "p90": 67.17907297424972, + "min": 66.65548961609602, + "max": 67.19923578202724, + "samples": [ + 67.09735374897718, + 66.85644900426269, + 67.02389474958181, + 66.90442888066173, + 66.76300195977092, + 67.05790990963578, + 66.91758474335074, + 66.74527889117599, + 67.03388411551714, + 66.83632079511881, + 66.65548961609602, + 67.19923578202724, + 67.04385299235582, + 66.72722427174449, + 67.18344707041979, + 66.81560212746263, + 66.86142925173044, + 67.19181220978498, + 66.75575906410813, + 66.98124390095472, + 67.11360486224294, + 66.8010339140892, + 66.9531007297337, + 67.13511468842626, + 66.88117608428001, + 67.06976192072034, + 67.05749873071909, + 66.85143895447254, + 67.17858696356416, + 66.9801919721067 + ] + }, + "steady_event_ms": { + "median": 66.92388916015625, + "p90": 67.13683776855468, + "samples": [ + 67.04617309570312, + 66.81209564208984, + 66.98070526123047, + 66.86041259765625, + 66.72003173828125, + 67.01366424560547, + 66.87353515625, + 66.70198059082031, + 66.9900131225586, + 66.79350280761719, + 66.60931396484375, + 67.15654754638672, + 67.00153350830078, + 66.6843490600586, + 67.14093017578125, + 66.77212524414062, + 66.81948852539062, + 67.14969635009766, + 66.71331024169922, + 66.93743896484375, + 67.07209777832031, + 66.75718688964844, + 66.91033935546875, + 67.0907211303711, + 66.8384017944336, + 67.02732849121094, + 67.01427459716797, + 66.8090591430664, + 67.13638305664062, + 66.93801879882812 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 180828.61531199887, + 68.23502294719219, + 66.08367897570133, + 66.57559890300035, + 66.71374896541238, + 65.842863637954, + 66.19602208957076, + 65.9395968541503, + 65.80487173050642 + ], + "event_ms_including_first": [ + 180828.0, + 68.19926452636719, + 66.05010986328125, + 66.54345703125, + 66.68013000488281, + 65.8121566772461, + 66.16537475585938, + 65.90876770019531, + 65.77356719970703 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/dj/cdjnztrtmgoelm4hiuot7ap2blpjqzombzdzqd4mi57jgti5ydmm.py" + ], + "routes": [ + { + "sha256": "c238802cdf7c9f5fb658a32738a5d1e8f3088559235129f9a4d5392f20778c78", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "elapsed_s": 190.16987586021423 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_BASE_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" + } + } + }, + { + "run": "Pro_n96_BASE_p2", + "result": { + "status": "completed", + "mode": "BASE", + "n_atoms": 96, + "started": 1792870340.1622548, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "first_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "steady_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "full_window_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "steady_wall_ms": { + "median": 67.01431004330516, + "p90": 67.31113758869469, + "min": 66.80838065221906, + "max": 67.39511014893651, + "samples": [ + 67.35904095694423, + 66.84043211862445, + 66.92866887897253, + 67.27537326514721, + 66.95743184536695, + 67.06407386809587, + 67.16816080734134, + 66.98231864720583, + 67.16398289427161, + 67.13506812229753, + 66.92204577848315, + 67.35691661015153, + 67.23001832142472, + 66.87548803165555, + 67.39511014893651, + 66.93094177171588, + 66.93521002307534, + 67.30605103075504, + 66.83585280552506, + 66.91436236724257, + 67.16019613668323, + 66.8587856926024, + 67.01783696189523, + 67.15368386358023, + 66.88862200826406, + 67.10488209500909, + 67.01078312471509, + 66.80838065221906, + 67.21334671601653, + 66.99808035045862 + ] + }, + "steady_event_ms": { + "median": 66.97126388549805, + "p90": 67.268212890625, + "samples": [ + 67.30729675292969, + 66.79714965820312, + 66.88246154785156, + 67.23286437988281, + 66.91449737548828, + 67.02153778076172, + 67.12614440917969, + 66.93958282470703, + 67.12236785888672, + 67.09222412109375, + 66.87852478027344, + 67.31478118896484, + 67.18828582763672, + 66.83360290527344, + 67.35305786132812, + 66.88861083984375, + 66.8924789428711, + 67.26387023925781, + 66.79369354248047, + 66.87030029296875, + 67.11756896972656, + 66.81654357910156, + 66.9747543334961, + 67.11065673828125, + 66.84652709960938, + 67.06278228759766, + 66.9677734375, + 66.76608276367188, + 67.17113494873047, + 66.95597076416016 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 182492.360310629, + 67.84132309257984, + 66.12822599709034, + 66.52928376570344, + 66.25986518338323, + 66.06994708999991, + 66.00199826061726, + 65.97366509959102, + 65.9448797814548 + ], + "event_ms_including_first": [ + 182491.71875, + 67.80614471435547, + 66.09638214111328, + 66.49724578857422, + 66.22819519042969, + 66.03945922851562, + 65.97164916992188, + 65.94265747070312, + 65.9131851196289 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/dj/cdjnztrtmgoelm4hiuot7ap2blpjqzombzdzqd4mi57jgti5ydmm.py" + ], + "routes": [ + { + "sha256": "c238802cdf7c9f5fb658a32738a5d1e8f3088559235129f9a4d5392f20778c78", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "elapsed_s": 191.84539198875427 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_BASE_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", + "gpu": "0", + "mode": "BASE", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" + } + } + }, + { + "run": "Pro_n96_ECS_p0", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 96, + "started": 1792869328.7287183, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "first_peak": { + "allocated": 5139665408, + "reserved": 5251268608 + }, + "steady_peak": { + "allocated": 5039002112, + "reserved": 5251268608 + }, + "full_window_peak": { + "allocated": 5139665408, + "reserved": 5251268608 + }, + "steady_wall_ms": { + "median": 67.0216060243547, + "p90": 67.31665539555252, + "min": 66.84218207374215, + "max": 67.36074108630419, + "samples": [ + 67.04443413764238, + 66.88155559822917, + 67.2841570340097, + 66.93984707817435, + 66.87465310096741, + 67.33817886561155, + 66.85928395017982, + 66.96289032697678, + 67.28431675583124, + 66.84218207374215, + 67.03447457402945, + 67.11677135899663, + 66.97461288422346, + 67.14822025969625, + 67.14022532105446, + 66.90157484263182, + 67.21434509381652, + 66.99353829026222, + 66.87621586024761, + 67.35753500834107, + 67.03237118199468, + 66.8921172618866, + 67.36074108630419, + 66.9412687420845, + 66.96525495499372, + 67.31426389887929, + 67.01084086671472, + 67.08697509020567, + 67.19759292900562, + 66.9855629093945 + ] + }, + "steady_event_ms": { + "median": 66.97763061523438, + "p90": 67.27334365844726, + "samples": [ + 66.98722839355469, + 66.8381118774414, + 67.24121856689453, + 66.89667510986328, + 66.83184051513672, + 67.2957763671875, + 66.81683349609375, + 66.91996765136719, + 67.2402572631836, + 66.79837036132812, + 66.99222564697266, + 67.07270050048828, + 66.93065643310547, + 67.1055679321289, + 67.09667205810547, + 66.8584976196289, + 67.17145538330078, + 66.95120239257812, + 66.83334350585938, + 67.3135986328125, + 66.98886108398438, + 66.85072326660156, + 67.31817626953125, + 66.89647674560547, + 66.9227523803711, + 67.2708511352539, + 66.96803283691406, + 67.04447937011719, + 67.15510559082031, + 66.94380950927734 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 292018.3426467702, + 68.90785414725542, + 66.36788602918386, + 66.84580910950899, + 66.47879583761096, + 66.48411601781845, + 66.36158423498273, + 66.22671987861395, + 66.35075295343995 + ], + "event_ms_including_first": [ + 292017.4375, + 68.87596893310547, + 66.33660888671875, + 66.81407928466797, + 66.44767761230469, + 66.45145416259766, + 66.33036804199219, + 66.19602966308594, + 66.31257629394531 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/a7/ca7hx62lfkd5fk4zaw7yeonirduf42pqxlyj7rcwnn34b5zn3jqb.py" + ], + "routes": [ + { + "sha256": "23a20a629f51e3bdf3ef2e8b8ea229c0208d7f9ff07b2a044274aef87842edd7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 5139665408, + "reserved": 5251268608 + }, + "elapsed_s": 301.32571268081665 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_ECS_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" + } + } + }, + { + "run": "Pro_n96_ECS_p1", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 96, + "started": 1792869635.8521204, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "first_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "steady_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "full_window_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "steady_wall_ms": { + "median": 67.11468147113919, + "p90": 67.31268442235887, + "min": 66.87322119250894, + "max": 67.37907603383064, + "samples": [ + 67.04297196120024, + 67.1861506998539, + 66.9601340778172, + 66.8991100974381, + 67.15326895937324, + 66.94382429122925, + 67.14076502248645, + 67.11777299642563, + 66.87322119250894, + 67.2179120592773, + 67.08178389817476, + 66.8921759352088, + 67.35825724899769, + 67.05887196585536, + 67.04058730974793, + 67.37907603383064, + 67.06242775544524, + 67.14575504884124, + 67.30762077495456, + 67.07955989986658, + 67.29214219376445, + 67.24090501666069, + 67.13323201984167, + 67.27273482829332, + 67.11158994585276, + 66.90174527466297, + 67.37580988556147, + 66.90309708938003, + 66.98023341596127, + 67.29437597095966 + ] + }, + "steady_event_ms": { + "median": 67.06660842895508, + "p90": 67.27064743041993, + "samples": [ + 66.98841857910156, + 67.14173126220703, + 66.91680145263672, + 66.85689544677734, + 67.11084747314453, + 66.901123046875, + 67.09756469726562, + 67.072509765625, + 66.82240295410156, + 67.1747817993164, + 67.036865234375, + 66.84928131103516, + 67.31433868408203, + 67.01599884033203, + 66.99696350097656, + 67.33580780029297, + 67.01974487304688, + 67.10169219970703, + 67.26579284667969, + 67.03472137451172, + 67.24921417236328, + 67.19805145263672, + 67.08975982666016, + 67.22908782958984, + 67.06070709228516, + 66.85791778564453, + 67.3326416015625, + 66.85929870605469, + 66.9366683959961, + 67.25062561035156 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 183761.8959029205, + 67.84828193485737, + 66.65026023983955, + 65.93646109104156, + 66.42981339246035, + 65.97097683697939, + 65.93281403183937, + 66.21829373762012, + 65.6415238045156 + ], + "event_ms_including_first": [ + 183761.265625, + 67.81183624267578, + 66.61763000488281, + 65.90380859375, + 66.39810943603516, + 65.9393310546875, + 65.901123046875, + 66.1863021850586, + 65.60991668701172 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/a7/ca7hx62lfkd5fk4zaw7yeonirduf42pqxlyj7rcwnn34b5zn3jqb.py" + ], + "routes": [ + { + "sha256": "23a20a629f51e3bdf3ef2e8b8ea229c0208d7f9ff07b2a044274aef87842edd7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "elapsed_s": 193.15142440795898 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_ECS_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" + } + } + }, + { + "run": "Pro_n96_ECS_p2", + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 96, + "started": 1792870537.64094, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "first_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "steady_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "full_window_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "steady_wall_ms": { + "median": 66.98174891062081, + "p90": 67.2758670989424, + "min": 66.77238270640373, + "max": 67.43228994309902, + "samples": [ + 66.94752397015691, + 66.77578995004296, + 67.32959486544132, + 66.90660677850246, + 66.86823396012187, + 67.19583412632346, + 66.79475493729115, + 66.85337563976645, + 67.14838277548552, + 66.85752421617508, + 67.04799365252256, + 67.13537918403745, + 66.85121217742562, + 67.09966203197837, + 66.98632799088955, + 66.817298065871, + 67.30141304433346, + 66.97716983035207, + 66.77238270640373, + 67.27302866056561, + 67.00771814212203, + 66.91488297656178, + 67.43228994309902, + 66.88201986253262, + 67.02843680977821, + 67.25848186761141, + 66.86967704445124, + 67.02101277187467, + 67.11075315251946, + 66.91189715638757 + ] + }, + "steady_event_ms": { + "median": 66.93849563598633, + "p90": 67.23265533447265, + "samples": [ + 66.88652801513672, + 66.7306900024414, + 67.28495788574219, + 66.86268615722656, + 66.81660461425781, + 67.15094757080078, + 66.75001525878906, + 66.80841827392578, + 67.10460662841797, + 66.81462097167969, + 66.99456024169922, + 67.0917739868164, + 66.8071060180664, + 67.05648040771484, + 66.94316864013672, + 66.76636505126953, + 67.25782775878906, + 66.93382263183594, + 66.72953796386719, + 67.2298583984375, + 66.96358489990234, + 66.87193298339844, + 67.38960266113281, + 66.83846282958984, + 66.98358154296875, + 67.21469116210938, + 66.82704162597656, + 66.97885131835938, + 67.06658935546875, + 66.86761474609375 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 184380.23095112294, + 68.26476287096739, + 66.21601292863488, + 66.39702431857586, + 66.55461201444268, + 66.40376709401608, + 65.654291305691, + 66.04437809437513, + 65.7839858904481 + ], + "event_ms_including_first": [ + 184379.578125, + 68.22889709472656, + 66.1842269897461, + 66.36393737792969, + 66.52339172363281, + 66.37254333496094, + 65.62326049804688, + 66.01360321044922, + 65.75244903564453 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/a7/ca7hx62lfkd5fk4zaw7yeonirduf42pqxlyj7rcwnn34b5zn3jqb.py" + ], + "routes": [ + { + "sha256": "23a20a629f51e3bdf3ef2e8b8ea229c0208d7f9ff07b2a044274aef87842edd7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "elapsed_s": 193.7130732536316 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_ECS_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", + "gpu": "0", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" + } + } + }, + { + "run": "Pro_n96_TORCH_p0", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 96, + "started": 1792868831.5370078, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "first_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + }, + "steady_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + }, + "full_window_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + }, + "steady_wall_ms": { + "median": 126.12425838597119, + "p90": 126.22972396202385, + "min": 125.93523692339659, + "max": 127.33352789655328, + "samples": [ + 127.33352789655328, + 126.02909374982119, + 126.01870484650135, + 125.93523692339659, + 126.07020186260343, + 126.01751182228327, + 126.08600221574306, + 125.96554262563586, + 126.1599506251514, + 125.96464203670621, + 126.08599103987217, + 126.22099695727229, + 126.14881992340088, + 126.17510883137584, + 126.16785615682602, + 126.10947573557496, + 126.08098099008203, + 126.06555176898837, + 126.16321677342057, + 126.08383689075708, + 126.13904103636742, + 126.18489796295762, + 126.10062910243869, + 126.0622157715261, + 126.19968596845865, + 126.31856091320515, + 126.21974386274815, + 126.27851543948054, + 126.22430268675089, + 126.17224408313632 + ] + }, + "steady_event_ms": { + "median": 126.08028793334961, + "p90": 126.18499526977538, + "samples": [ + 127.25997161865234, + 125.98393249511719, + 125.97433471679688, + 125.8921890258789, + 126.0271987915039, + 125.97440338134766, + 126.04268646240234, + 125.92176055908203, + 126.1157455444336, + 125.9221420288086, + 126.0428466796875, + 126.17497253417969, + 126.104736328125, + 126.13142395019531, + 126.12451171875, + 126.06524658203125, + 126.02790069580078, + 126.0218276977539, + 126.1197738647461, + 126.04080200195312, + 126.09532928466797, + 126.14214324951172, + 126.05760192871094, + 126.01878356933594, + 126.15574645996094, + 126.27458953857422, + 126.1767349243164, + 126.23372650146484, + 126.17958068847656, + 126.12850952148438 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 168638.27945897356, + 126.11362291499972, + 125.14735804870725, + 125.85180904716253, + 125.92562800273299, + 125.77640684321523, + 125.67296111956239, + 125.66367397084832, + 125.44110277667642 + ], + "event_ms_including_first": [ + 168637.703125, + 126.0818862915039, + 125.1154556274414, + 125.82006072998047, + 125.89485168457031, + 125.7452163696289, + 125.64067077636719, + 125.63203430175781, + 125.40940856933594 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/ls/clsqzgxpa7uxtqveodta7jnvp73vakead2wqtkfxqx6nqdulfmql.py" + ], + "routes": [ + { + "sha256": "44c10ecad917239b1dfefbafa55b7001b2ff70b1cc1aef4263c520d4280ed57f", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + }, + "elapsed_s": 182.03163504600525 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_TORCH_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" + } + } + }, + { + "run": "Pro_n96_TORCH_p1", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 96, + "started": 1792870030.5519133, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "first_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + }, + "steady_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + }, + "full_window_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + }, + "steady_wall_ms": { + "median": 125.95205777324736, + "p90": 126.08474032022059, + "min": 125.7853233255446, + "max": 126.19026796892285, + "samples": [ + 125.94222882762551, + 125.82059996202588, + 125.86232926696539, + 125.91405585408211, + 125.9614359587431, + 125.88831689208746, + 125.7853233255446, + 125.91033894568682, + 125.90756407007575, + 125.91240322217345, + 125.95973210409284, + 125.9463569149375, + 125.98589202389121, + 125.97653362900019, + 125.91842422261834, + 125.8744508959353, + 126.11088808625937, + 125.9872349910438, + 125.88769709691405, + 126.0822038166225, + 126.08303502202034, + 125.92679960653186, + 126.07453903183341, + 126.19026796892285, + 125.99878618493676, + 126.01390387862921, + 126.10008800402284, + 125.95775863155723, + 126.01868389174342, + 125.91062998399138 + ] + }, + "steady_event_ms": { + "median": 125.90811157226562, + "p90": 126.0417236328125, + "samples": [ + 125.8855972290039, + 125.77497863769531, + 125.81827545166016, + 125.87020874023438, + 125.9176025390625, + 125.84374237060547, + 125.74127960205078, + 125.8664321899414, + 125.8623046875, + 125.86934661865234, + 125.91654205322266, + 125.9023666381836, + 125.9422378540039, + 125.93312072753906, + 125.87459564208984, + 125.8315200805664, + 126.06835174560547, + 125.94278717041016, + 125.84425354003906, + 126.03862762451172, + 126.04013061523438, + 125.88188934326172, + 126.0285415649414, + 126.1473617553711, + 125.95471954345703, + 125.97017669677734, + 126.05606079101562, + 125.91385650634766, + 125.9749755859375, + 125.86764526367188 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 133242.50044487417, + 125.43623289093375, + 124.98298799619079, + 124.87648567184806, + 125.56840293109417, + 125.55616023018956, + 125.52998028695583, + 125.54452801123261, + 125.45398715883493 + ], + "event_ms_including_first": [ + 133242.03125, + 125.39292907714844, + 124.94915008544922, + 124.84307098388672, + 125.53596496582031, + 125.52400207519531, + 125.49779510498047, + 125.5126724243164, + 125.42153930664062 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/ls/clsqzgxpa7uxtqveodta7jnvp73vakead2wqtkfxqx6nqdulfmql.py" + ], + "routes": [ + { + "sha256": "44c10ecad917239b1dfefbafa55b7001b2ff70b1cc1aef4263c520d4280ed57f", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + }, + "elapsed_s": 146.7197926044464 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_TORCH_p1", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "1", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" + } + } + }, + { + "run": "Pro_n96_TORCH_p2", + "result": { + "status": "completed", + "mode": "TORCH", + "n_atoms": 96, + "started": 1792870185.7829502, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", + "parameter_count": 22678990, + "first_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + }, + "steady_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + }, + "full_window_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + }, + "steady_wall_ms": { + "median": 125.90320548042655, + "p90": 126.1494092643261, + "min": 125.78464113175869, + "max": 126.4430652372539, + "samples": [ + 125.8596838451922, + 126.10630039125681, + 125.84153981879354, + 125.81542879343033, + 125.82497810944915, + 125.88134361431003, + 125.80645270645618, + 125.89597189798951, + 125.92693092301488, + 125.83133019506931, + 125.82906521856785, + 125.89777493849397, + 125.86722709238529, + 125.78464113175869, + 125.82456693053246, + 125.92035811394453, + 126.20186991989613, + 126.1226199567318, + 126.03617692366242, + 125.90714264661074, + 125.88046304881573, + 126.2553408741951, + 125.99412770941854, + 125.89926831424236, + 125.92155067250133, + 125.97376899793744, + 125.93774124979973, + 126.14358030259609, + 126.4430652372539, + 126.00078992545605 + ] + }, + "steady_event_ms": { + "median": 125.8595199584961, + "p90": 126.10106964111328, + "samples": [ + 125.80339050292969, + 126.06192016601562, + 125.79894256591797, + 125.7726058959961, + 125.7820816040039, + 125.83932495117188, + 125.76566314697266, + 125.85318756103516, + 125.88495635986328, + 125.78768157958984, + 125.78816223144531, + 125.85465240478516, + 125.8253402709961, + 125.74114990234375, + 125.78307342529297, + 125.87798309326172, + 126.15939331054688, + 126.08035278320312, + 125.99327850341797, + 125.86438751220703, + 125.83843231201172, + 126.21247863769531, + 125.9521255493164, + 125.84825897216797, + 125.87932586669922, + 125.92384338378906, + 125.89539337158203, + 126.09458923339844, + 126.39952087402344, + 125.95929718017578 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 132589.87243799493, + 125.22077606990933, + 124.63919771835208, + 124.7644149698317, + 125.42540300637484, + 125.46983687207103, + 125.51649520173669, + 125.53387694060802, + 125.27692317962646 + ], + "event_ms_including_first": [ + 132589.390625, + 125.18560028076172, + 124.60675048828125, + 124.7297592163086, + 125.39385223388672, + 125.43782043457031, + 125.48582458496094, + 125.50342559814453, + 125.2452163696289 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/ls/clsqzgxpa7uxtqveodta7jnvp73vakead2wqtkfxqx6nqdulfmql.py" + ], + "routes": [ + { + "sha256": "44c10ecad917239b1dfefbafa55b7001b2ff70b1cc1aef4263c520d4280ed57f", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "complete_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + }, + "elapsed_s": 145.89792156219482 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", + "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_TORCH_p2", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", + "gpu": "0", + "mode": "TORCH", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "30", + "warmup": "8" + }, + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" + }, + "flags": { + "PYTHONHASHSEED": "0", + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "0", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "0", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" + } + } + } + ] +} diff --git a/doc/development/ecs-validation-20261025/summary.json b/doc/development/ecs-validation-20261025/summary.json new file mode 100644 index 0000000000..6689b38866 --- /dev/null +++ b/doc/development/ecs-validation-20261025/summary.json @@ -0,0 +1,11584 @@ +{ + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_floor": 1e-08 + }, + "range_definition": "min/max of max_abs over same-frame comparisons; NOT a confidence interval", + "statuses": [ + { + "run": "Mini_n4096_BASE_p0", + "model": "Mini", + "n": 4096, + "mode": "BASE", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "6ed547ece6f59134ef706206c56fd7594f455b73d9fd0d524d07fcecf71c83a7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 7452141568, + "reserved": 8095006720 + }, + "complete_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + } + }, + { + "run": "Mini_n4096_BASE_p1", + "model": "Mini", + "n": 4096, + "mode": "BASE", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "6ed547ece6f59134ef706206c56fd7594f455b73d9fd0d524d07fcecf71c83a7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 7452141568, + "reserved": 8095006720 + }, + "complete_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + } + }, + { + "run": "Mini_n4096_BASE_p2", + "model": "Mini", + "n": 4096, + "mode": "BASE", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "6ed547ece6f59134ef706206c56fd7594f455b73d9fd0d524d07fcecf71c83a7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 7452141568, + "reserved": 8095006720 + }, + "complete_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + } + }, + { + "run": "Mini_n4096_ECS_p0", + "model": "Mini", + "n": 4096, + "mode": "ECS", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "ba83281ec08f12427203faf70f2514e44c06c842c6326c3510b69dd7375504c3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 7452141568, + "reserved": 8095006720 + }, + "complete_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + } + }, + { + "run": "Mini_n4096_ECS_p1", + "model": "Mini", + "n": 4096, + "mode": "ECS", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "ba83281ec08f12427203faf70f2514e44c06c842c6326c3510b69dd7375504c3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 7452141568, + "reserved": 8095006720 + }, + "complete_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + } + }, + { + "run": "Mini_n4096_ECS_p2", + "model": "Mini", + "n": 4096, + "mode": "ECS", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "ba83281ec08f12427203faf70f2514e44c06c842c6326c3510b69dd7375504c3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 7452141568, + "reserved": 8095006720 + }, + "complete_peak": { + "allocated": 7453190144, + "reserved": 8095006720 + } + }, + { + "run": "Mini_n4096_TORCH_p0", + "model": "Mini", + "n": 4096, + "mode": "TORCH", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "d9cbf3a17f5f5b687bee6d5793efbaf9c1726545fed7d540125793f31fe24a8f", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "complete_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + } + }, + { + "run": "Mini_n4096_TORCH_p1", + "model": "Mini", + "n": 4096, + "mode": "TORCH", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "d9cbf3a17f5f5b687bee6d5793efbaf9c1726545fed7d540125793f31fe24a8f", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "complete_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + } + }, + { + "run": "Mini_n4096_TORCH_p2", + "model": "Mini", + "n": 4096, + "mode": "TORCH", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "d9cbf3a17f5f5b687bee6d5793efbaf9c1726545fed7d540125793f31fe24a8f", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + }, + "complete_peak": { + "allocated": 12115697152, + "reserved": 13461618688 + } + }, + { + "run": "Mini_n512_BASE_p0", + "model": "Mini", + "n": 512, + "mode": "BASE", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "65b87bf8215249eac2e03cbb20cb741c8a61edf1f8f0997b9a65e5c6ebaab228", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 944773120, + "reserved": 1052770304 + }, + "complete_peak": { + "allocated": 945821696, + "reserved": 1052770304 + } + }, + { + "run": "Mini_n512_BASE_p1", + "model": "Mini", + "n": 512, + "mode": "BASE", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "65b87bf8215249eac2e03cbb20cb741c8a61edf1f8f0997b9a65e5c6ebaab228", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 944773120, + "reserved": 1052770304 + }, + "complete_peak": { + "allocated": 945821696, + "reserved": 1052770304 + } + }, + { + "run": "Mini_n512_BASE_p2", + "model": "Mini", + "n": 512, + "mode": "BASE", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "65b87bf8215249eac2e03cbb20cb741c8a61edf1f8f0997b9a65e5c6ebaab228", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 944773120, + "reserved": 1052770304 + }, + "complete_peak": { + "allocated": 945821696, + "reserved": 1052770304 + } + }, + { + "run": "Mini_n512_ECS_p0", + "model": "Mini", + "n": 512, + "mode": "ECS", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "ad7d03de10bff6b7698af0e611860f8f311a974be4adb3cc315196bcc2372ef1", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 944773120, + "reserved": 1052770304 + }, + "complete_peak": { + "allocated": 945821696, + "reserved": 1052770304 + } + }, + { + "run": "Mini_n512_ECS_p1", + "model": "Mini", + "n": 512, + "mode": "ECS", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "ad7d03de10bff6b7698af0e611860f8f311a974be4adb3cc315196bcc2372ef1", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 944773120, + "reserved": 1052770304 + }, + "complete_peak": { + "allocated": 945821696, + "reserved": 1052770304 + } + }, + { + "run": "Mini_n512_ECS_p2", + "model": "Mini", + "n": 512, + "mode": "ECS", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "ad7d03de10bff6b7698af0e611860f8f311a974be4adb3cc315196bcc2372ef1", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 944773120, + "reserved": 1052770304 + }, + "complete_peak": { + "allocated": 945821696, + "reserved": 1052770304 + } + }, + { + "run": "Mini_n512_TORCH_p0", + "model": "Mini", + "n": 512, + "mode": "TORCH", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "819c53568da57b620534fc63446dfce6693c9eb0a90cea4e25979860d1a8cb51", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "complete_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + } + }, + { + "run": "Mini_n512_TORCH_p1", + "model": "Mini", + "n": 512, + "mode": "TORCH", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "819c53568da57b620534fc63446dfce6693c9eb0a90cea4e25979860d1a8cb51", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "complete_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + } + }, + { + "run": "Mini_n512_TORCH_p2", + "model": "Mini", + "n": 512, + "mode": "TORCH", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "819c53568da57b620534fc63446dfce6693c9eb0a90cea4e25979860d1a8cb51", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + }, + "complete_peak": { + "allocated": 1528661504, + "reserved": 1723858944 + } + }, + { + "run": "Mini_n96_BASE_p0", + "model": "Mini", + "n": 96, + "mode": "BASE", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "26c1c078b36a0cfd8615a408c5f057d0e14f11a5191d4416efc8cf6d357e96a4", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 286303232, + "reserved": 335544320 + }, + "complete_peak": { + "allocated": 286303232, + "reserved": 335544320 + } + }, + { + "run": "Mini_n96_BASE_p1", + "model": "Mini", + "n": 96, + "mode": "BASE", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "26c1c078b36a0cfd8615a408c5f057d0e14f11a5191d4416efc8cf6d357e96a4", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 189451264, + "reserved": 230686720 + }, + "complete_peak": { + "allocated": 190499840, + "reserved": 230686720 + } + }, + { + "run": "Mini_n96_BASE_p2", + "model": "Mini", + "n": 96, + "mode": "BASE", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "26c1c078b36a0cfd8615a408c5f057d0e14f11a5191d4416efc8cf6d357e96a4", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 189451264, + "reserved": 230686720 + }, + "complete_peak": { + "allocated": 190499840, + "reserved": 230686720 + } + }, + { + "run": "Mini_n96_ECS_p0", + "model": "Mini", + "n": 96, + "mode": "ECS", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "27be9e332efbed712736875b79ff26763add57a318f7542effdfa27c92cd6148", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 286303232, + "reserved": 335544320 + }, + "complete_peak": { + "allocated": 286303232, + "reserved": 335544320 + } + }, + { + "run": "Mini_n96_ECS_p1", + "model": "Mini", + "n": 96, + "mode": "ECS", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "27be9e332efbed712736875b79ff26763add57a318f7542effdfa27c92cd6148", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 189451264, + "reserved": 230686720 + }, + "complete_peak": { + "allocated": 190499840, + "reserved": 230686720 + } + }, + { + "run": "Mini_n96_ECS_p2", + "model": "Mini", + "n": 96, + "mode": "ECS", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "27be9e332efbed712736875b79ff26763add57a318f7542effdfa27c92cd6148", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 189451264, + "reserved": 230686720 + }, + "complete_peak": { + "allocated": 190499840, + "reserved": 230686720 + } + }, + { + "run": "Mini_n96_TORCH_p0", + "model": "Mini", + "n": 96, + "mode": "TORCH", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "4b43a1b1ab027b3a94c3379d411c299005cbbb14e4174a6c3185a78004ed888d", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 400473088, + "reserved": 438304768 + }, + "complete_peak": { + "allocated": 400473088, + "reserved": 438304768 + } + }, + { + "run": "Mini_n96_TORCH_p1", + "model": "Mini", + "n": 96, + "mode": "TORCH", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "4b43a1b1ab027b3a94c3379d411c299005cbbb14e4174a6c3185a78004ed888d", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 299809792, + "reserved": 354418688 + }, + "complete_peak": { + "allocated": 299809792, + "reserved": 354418688 + } + }, + { + "run": "Mini_n96_TORCH_p2", + "model": "Mini", + "n": 96, + "mode": "TORCH", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", + "routes": [ + { + "sha256": "4b43a1b1ab027b3a94c3379d411c299005cbbb14e4174a6c3185a78004ed888d", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 654988, + "first_peak": { + "allocated": 299809792, + "reserved": 354418688 + }, + "complete_peak": { + "allocated": 299809792, + "reserved": 354418688 + } + }, + { + "run": "Nano_n4096_BASE_p0", + "model": "Nano", + "n": 4096, + "mode": "BASE", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "bbfadf5ea5775e0a16623cb8c6854fad704fc72a15d24e3c3e999da74eaee59e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "complete_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + } + }, + { + "run": "Nano_n4096_BASE_p1", + "model": "Nano", + "n": 4096, + "mode": "BASE", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "bbfadf5ea5775e0a16623cb8c6854fad704fc72a15d24e3c3e999da74eaee59e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "complete_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + } + }, + { + "run": "Nano_n4096_BASE_p2", + "model": "Nano", + "n": 4096, + "mode": "BASE", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "bbfadf5ea5775e0a16623cb8c6854fad704fc72a15d24e3c3e999da74eaee59e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "complete_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + } + }, + { + "run": "Nano_n4096_ECS_p0", + "model": "Nano", + "n": 4096, + "mode": "ECS", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "fe71d505febf0c32eb4c837d76ffa98baf33e57d9d0ae4628705a385edebf3ef", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "complete_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + } + }, + { + "run": "Nano_n4096_ECS_p1", + "model": "Nano", + "n": 4096, + "mode": "ECS", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "fe71d505febf0c32eb4c837d76ffa98baf33e57d9d0ae4628705a385edebf3ef", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "complete_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + } + }, + { + "run": "Nano_n4096_ECS_p2", + "model": "Nano", + "n": 4096, + "mode": "ECS", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "fe71d505febf0c32eb4c837d76ffa98baf33e57d9d0ae4628705a385edebf3ef", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + }, + "complete_peak": { + "allocated": 3910504960, + "reserved": 4169138176 + } + }, + { + "run": "Nano_n4096_TORCH_p0", + "model": "Nano", + "n": 4096, + "mode": "TORCH", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "671320d7fc3f17ba6859418708b63017691791082ef155bff72d047363fd3d2b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "complete_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + } + }, + { + "run": "Nano_n4096_TORCH_p1", + "model": "Nano", + "n": 4096, + "mode": "TORCH", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "671320d7fc3f17ba6859418708b63017691791082ef155bff72d047363fd3d2b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "complete_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + } + }, + { + "run": "Nano_n4096_TORCH_p2", + "model": "Nano", + "n": 4096, + "mode": "TORCH", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "671320d7fc3f17ba6859418708b63017691791082ef155bff72d047363fd3d2b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + }, + "complete_peak": { + "allocated": 6678115328, + "reserved": 6937378816 + } + }, + { + "run": "Nano_n512_BASE_p0", + "model": "Nano", + "n": 512, + "mode": "BASE", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "c11e155658bce0552509e209cbbe6d3cdd3ff19e64909cbc53b5d18edd099a89", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "complete_peak": { + "allocated": 500027904, + "reserved": 566231040 + } + }, + { + "run": "Nano_n512_BASE_p1", + "model": "Nano", + "n": 512, + "mode": "BASE", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "c11e155658bce0552509e209cbbe6d3cdd3ff19e64909cbc53b5d18edd099a89", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "complete_peak": { + "allocated": 500027904, + "reserved": 566231040 + } + }, + { + "run": "Nano_n512_BASE_p2", + "model": "Nano", + "n": 512, + "mode": "BASE", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "c11e155658bce0552509e209cbbe6d3cdd3ff19e64909cbc53b5d18edd099a89", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "complete_peak": { + "allocated": 500027904, + "reserved": 566231040 + } + }, + { + "run": "Nano_n512_ECS_p0", + "model": "Nano", + "n": 512, + "mode": "ECS", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "6542c402bf0c74df1f71266111b5ad040463d8e513f6e2fabb83dbe368c8571c", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "complete_peak": { + "allocated": 500027904, + "reserved": 566231040 + } + }, + { + "run": "Nano_n512_ECS_p1", + "model": "Nano", + "n": 512, + "mode": "ECS", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "6542c402bf0c74df1f71266111b5ad040463d8e513f6e2fabb83dbe368c8571c", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "complete_peak": { + "allocated": 500027904, + "reserved": 566231040 + } + }, + { + "run": "Nano_n512_ECS_p2", + "model": "Nano", + "n": 512, + "mode": "ECS", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "6542c402bf0c74df1f71266111b5ad040463d8e513f6e2fabb83dbe368c8571c", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 500027904, + "reserved": 566231040 + }, + "complete_peak": { + "allocated": 500027904, + "reserved": 566231040 + } + }, + { + "run": "Nano_n512_TORCH_p0", + "model": "Nano", + "n": 512, + "mode": "TORCH", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "752d0803e3c03a8e34aa80861e1dea19b373e140d04e0e08bdbf5ab50de13d29", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "complete_peak": { + "allocated": 845872128, + "reserved": 901775360 + } + }, + { + "run": "Nano_n512_TORCH_p1", + "model": "Nano", + "n": 512, + "mode": "TORCH", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "752d0803e3c03a8e34aa80861e1dea19b373e140d04e0e08bdbf5ab50de13d29", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "complete_peak": { + "allocated": 845872128, + "reserved": 901775360 + } + }, + { + "run": "Nano_n512_TORCH_p2", + "model": "Nano", + "n": 512, + "mode": "TORCH", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "752d0803e3c03a8e34aa80861e1dea19b373e140d04e0e08bdbf5ab50de13d29", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 845872128, + "reserved": 901775360 + }, + "complete_peak": { + "allocated": 845872128, + "reserved": 901775360 + } + }, + { + "run": "Nano_n96_BASE_p0", + "model": "Nano", + "n": 96, + "mode": "BASE", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "cba1a62b4389df004c8aa90085d868da326250d562233dca490331b71c3efd88", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 204831232, + "reserved": 232783872 + }, + "complete_peak": { + "allocated": 204831232, + "reserved": 232783872 + } + }, + { + "run": "Nano_n96_BASE_p1", + "model": "Nano", + "n": 96, + "mode": "BASE", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "cba1a62b4389df004c8aa90085d868da326250d562233dca490331b71c3efd88", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "complete_peak": { + "allocated": 104167936, + "reserved": 127926272 + } + }, + { + "run": "Nano_n96_BASE_p2", + "model": "Nano", + "n": 96, + "mode": "BASE", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "cba1a62b4389df004c8aa90085d868da326250d562233dca490331b71c3efd88", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "complete_peak": { + "allocated": 104167936, + "reserved": 127926272 + } + }, + { + "run": "Nano_n96_ECS_p0", + "model": "Nano", + "n": 96, + "mode": "ECS", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "2bd826f473a672ac42b626c10de39c75d10102ecd71410c6dd4cdebb9320c92a", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 204831232, + "reserved": 232783872 + }, + "complete_peak": { + "allocated": 204831232, + "reserved": 232783872 + } + }, + { + "run": "Nano_n96_ECS_p1", + "model": "Nano", + "n": 96, + "mode": "ECS", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "2bd826f473a672ac42b626c10de39c75d10102ecd71410c6dd4cdebb9320c92a", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "complete_peak": { + "allocated": 104167936, + "reserved": 127926272 + } + }, + { + "run": "Nano_n96_ECS_p2", + "model": "Nano", + "n": 96, + "mode": "ECS", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "2bd826f473a672ac42b626c10de39c75d10102ecd71410c6dd4cdebb9320c92a", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 15, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 104167936, + "reserved": 127926272 + }, + "complete_peak": { + "allocated": 104167936, + "reserved": 127926272 + } + }, + { + "run": "Nano_n96_TORCH_p0", + "model": "Nano", + "n": 96, + "mode": "TORCH", + "gpu": "1", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "b535aa30720bdd4a7b4d7f7f266eeaa7d6205b2217f5ad2c4c7f660b2bd656fc", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 267504640, + "reserved": 295698432 + }, + "complete_peak": { + "allocated": 267504640, + "reserved": 295698432 + } + }, + { + "run": "Nano_n96_TORCH_p1", + "model": "Nano", + "n": 96, + "mode": "TORCH", + "gpu": "1", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "b535aa30720bdd4a7b4d7f7f266eeaa7d6205b2217f5ad2c4c7f660b2bd656fc", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 168914432, + "reserved": 190840832 + }, + "complete_peak": { + "allocated": 168914432, + "reserved": 190840832 + } + }, + { + "run": "Nano_n96_TORCH_p2", + "model": "Nano", + "n": 96, + "mode": "TORCH", + "gpu": "1", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", + "routes": [ + { + "sha256": "b535aa30720bdd4a7b4d7f7f266eeaa7d6205b2217f5ad2c4c7f660b2bd656fc", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 480268, + "first_peak": { + "allocated": 168914432, + "reserved": 190840832 + }, + "complete_peak": { + "allocated": 168914432, + "reserved": 190840832 + } + }, + { + "run": "NeoCu_n4096_BASE_p0", + "model": "NeoCu", + "n": 4096, + "mode": "BASE", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "0e26451d495a702bb2e2961a6c53a3a22faae697a63f047bb6d44732628a35c4", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + }, + "complete_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + } + }, + { + "run": "NeoCu_n4096_BASE_p1", + "model": "NeoCu", + "n": 4096, + "mode": "BASE", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "0e26451d495a702bb2e2961a6c53a3a22faae697a63f047bb6d44732628a35c4", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + }, + "complete_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + } + }, + { + "run": "NeoCu_n4096_BASE_p2", + "model": "NeoCu", + "n": 4096, + "mode": "BASE", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "0e26451d495a702bb2e2961a6c53a3a22faae697a63f047bb6d44732628a35c4", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + }, + "complete_peak": { + "allocated": 9842754560, + "reserved": 10424942592 + } + }, + { + "run": "NeoCu_n4096_ECS_p0", + "model": "NeoCu", + "n": 4096, + "mode": "ECS", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "4301f667fc125b923f1c0ef2ab927074bc6e243295f83548a285bd10f738a627", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + }, + "complete_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + } + }, + { + "run": "NeoCu_n4096_ECS_p1", + "model": "NeoCu", + "n": 4096, + "mode": "ECS", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "4301f667fc125b923f1c0ef2ab927074bc6e243295f83548a285bd10f738a627", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + }, + "complete_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + } + }, + { + "run": "NeoCu_n4096_ECS_p2", + "model": "NeoCu", + "n": 4096, + "mode": "ECS", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "4301f667fc125b923f1c0ef2ab927074bc6e243295f83548a285bd10f738a627", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + }, + "complete_peak": { + "allocated": 9873422336, + "reserved": 10424942592 + } + }, + { + "run": "NeoCu_n4096_TORCH_p0", + "model": "NeoCu", + "n": 4096, + "mode": "TORCH", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "8a0380038aea6832f7f71fe5f3579c781cae06d887a391fcf883290ae5964e79", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + }, + "complete_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + } + }, + { + "run": "NeoCu_n4096_TORCH_p1", + "model": "NeoCu", + "n": 4096, + "mode": "TORCH", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "8a0380038aea6832f7f71fe5f3579c781cae06d887a391fcf883290ae5964e79", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + }, + "complete_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + } + }, + { + "run": "NeoCu_n4096_TORCH_p2", + "model": "NeoCu", + "n": 4096, + "mode": "TORCH", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "8a0380038aea6832f7f71fe5f3579c781cae06d887a391fcf883290ae5964e79", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + }, + "complete_peak": { + "allocated": 17866908160, + "reserved": 20115881984 + } + }, + { + "run": "NeoCu_n512_BASE_p0", + "model": "NeoCu", + "n": 512, + "mode": "BASE", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "ad560398cb4675c19ec3c164990e43c33e15b273b8be04f5b766a58cf688ed1b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + }, + "complete_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + } + }, + { + "run": "NeoCu_n512_BASE_p1", + "model": "NeoCu", + "n": 512, + "mode": "BASE", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "ad560398cb4675c19ec3c164990e43c33e15b273b8be04f5b766a58cf688ed1b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + }, + "complete_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + } + }, + { + "run": "NeoCu_n512_BASE_p2", + "model": "NeoCu", + "n": 512, + "mode": "BASE", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "ad560398cb4675c19ec3c164990e43c33e15b273b8be04f5b766a58cf688ed1b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + }, + "complete_peak": { + "allocated": 1249555456, + "reserved": 1312817152 + } + }, + { + "run": "NeoCu_n512_ECS_p0", + "model": "NeoCu", + "n": 512, + "mode": "ECS", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "f837a965b99b1209b4b994c0c27f83a2b75ed59ceb52c5aa605c444e35ee8cfc", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + }, + "complete_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + } + }, + { + "run": "NeoCu_n512_ECS_p1", + "model": "NeoCu", + "n": 512, + "mode": "ECS", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "f837a965b99b1209b4b994c0c27f83a2b75ed59ceb52c5aa605c444e35ee8cfc", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + }, + "complete_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + } + }, + { + "run": "NeoCu_n512_ECS_p2", + "model": "NeoCu", + "n": 512, + "mode": "ECS", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "f837a965b99b1209b4b994c0c27f83a2b75ed59ceb52c5aa605c444e35ee8cfc", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + }, + "complete_peak": { + "allocated": 1254748160, + "reserved": 1312817152 + } + }, + { + "run": "NeoCu_n512_TORCH_p0", + "model": "NeoCu", + "n": 512, + "mode": "TORCH", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "4af81d972bc58c4ae73a0ca23b4cc28878f6fd1e9da40d46de82b6e58a95ee51", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + }, + "complete_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + } + }, + { + "run": "NeoCu_n512_TORCH_p1", + "model": "NeoCu", + "n": 512, + "mode": "TORCH", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "4af81d972bc58c4ae73a0ca23b4cc28878f6fd1e9da40d46de82b6e58a95ee51", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + }, + "complete_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + } + }, + { + "run": "NeoCu_n512_TORCH_p2", + "model": "NeoCu", + "n": 512, + "mode": "TORCH", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "4af81d972bc58c4ae73a0ca23b4cc28878f6fd1e9da40d46de82b6e58a95ee51", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + }, + "complete_peak": { + "allocated": 2253040128, + "reserved": 2552233984 + } + }, + { + "run": "NeoCu_n96_BASE_p0", + "model": "NeoCu", + "n": 96, + "mode": "BASE", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "a4f86caeb87b798c89669a0d408b80a7b4c3ef0f9d51db90a8e7482f7c0dc81e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 353757184, + "reserved": 381681664 + }, + "complete_peak": { + "allocated": 353757184, + "reserved": 381681664 + } + }, + { + "run": "NeoCu_n96_BASE_p1", + "model": "NeoCu", + "n": 96, + "mode": "BASE", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "a4f86caeb87b798c89669a0d408b80a7b4c3ef0f9d51db90a8e7482f7c0dc81e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 252135424, + "reserved": 276824064 + }, + "complete_peak": { + "allocated": 253004288, + "reserved": 276824064 + } + }, + { + "run": "NeoCu_n96_BASE_p2", + "model": "NeoCu", + "n": 96, + "mode": "BASE", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "a4f86caeb87b798c89669a0d408b80a7b4c3ef0f9d51db90a8e7482f7c0dc81e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 252135424, + "reserved": 276824064 + }, + "complete_peak": { + "allocated": 253004288, + "reserved": 276824064 + } + }, + { + "run": "NeoCu_n96_ECS_p0", + "model": "NeoCu", + "n": 96, + "mode": "ECS", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "07137055143eed311a30e993d3f2e2a6b5a8231ea70eb201e6327dd4d1c577ca", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 355032576, + "reserved": 381681664 + }, + "complete_peak": { + "allocated": 355032576, + "reserved": 381681664 + } + }, + { + "run": "NeoCu_n96_ECS_p1", + "model": "NeoCu", + "n": 96, + "mode": "ECS", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "07137055143eed311a30e993d3f2e2a6b5a8231ea70eb201e6327dd4d1c577ca", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 254369280, + "reserved": 276824064 + }, + "complete_peak": { + "allocated": 254369280, + "reserved": 276824064 + } + }, + { + "run": "NeoCu_n96_ECS_p2", + "model": "NeoCu", + "n": 96, + "mode": "ECS", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "07137055143eed311a30e993d3f2e2a6b5a8231ea70eb201e6327dd4d1c577ca", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 254369280, + "reserved": 276824064 + }, + "complete_peak": { + "allocated": 254369280, + "reserved": 276824064 + } + }, + { + "run": "NeoCu_n96_TORCH_p0", + "model": "NeoCu", + "n": 96, + "mode": "TORCH", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "93ab40b3e0e376483a7774a65ce47bd9453708174e3b1c36984b719b02af962e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 541384704, + "reserved": 612368384 + }, + "complete_peak": { + "allocated": 541384704, + "reserved": 612368384 + } + }, + { + "run": "NeoCu_n96_TORCH_p1", + "model": "NeoCu", + "n": 96, + "mode": "TORCH", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "93ab40b3e0e376483a7774a65ce47bd9453708174e3b1c36984b719b02af962e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 440721408, + "reserved": 507510784 + }, + "complete_peak": { + "allocated": 440721408, + "reserved": 507510784 + } + }, + { + "run": "NeoCu_n96_TORCH_p2", + "model": "NeoCu", + "n": 96, + "mode": "TORCH", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "93ab40b3e0e376483a7774a65ce47bd9453708174e3b1c36984b719b02af962e", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 440721408, + "reserved": 507510784 + }, + "complete_peak": { + "allocated": 440721408, + "reserved": 507510784 + } + }, + { + "run": "Neo_n4096_BASE_p0", + "model": "Neo", + "n": 4096, + "mode": "BASE", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "b1e59a2969372a19fc391246c26d59c7425ec24133f0006f48af837acd05af1b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + }, + "complete_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + } + }, + { + "run": "Neo_n4096_BASE_p1", + "model": "Neo", + "n": 4096, + "mode": "BASE", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "b1e59a2969372a19fc391246c26d59c7425ec24133f0006f48af837acd05af1b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + }, + "complete_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + } + }, + { + "run": "Neo_n4096_BASE_p2", + "model": "Neo", + "n": 4096, + "mode": "BASE", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "b1e59a2969372a19fc391246c26d59c7425ec24133f0006f48af837acd05af1b", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + }, + "complete_peak": { + "allocated": 22313645056, + "reserved": 23953670144 + } + }, + { + "run": "Neo_n4096_ECS_p0", + "model": "Neo", + "n": 4096, + "mode": "ECS", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "141f28b0d52d57cb774d03932d92a61acb12636892cb98c78cc00bb0e8ed2c97", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "complete_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + } + }, + { + "run": "Neo_n4096_ECS_p1", + "model": "Neo", + "n": 4096, + "mode": "ECS", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "141f28b0d52d57cb774d03932d92a61acb12636892cb98c78cc00bb0e8ed2c97", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "complete_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + } + }, + { + "run": "Neo_n4096_ECS_p2", + "model": "Neo", + "n": 4096, + "mode": "ECS", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "141f28b0d52d57cb774d03932d92a61acb12636892cb98c78cc00bb0e8ed2c97", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + }, + "complete_peak": { + "allocated": 22806378496, + "reserved": 23953670144 + } + }, + { + "run": "Neo_n4096_TORCH_p0", + "model": "Neo", + "n": 4096, + "mode": "TORCH", + "gpu": "0", + "process": "p0", + "status": "oom", + "raw_status": "oom", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 1124910, + "first_peak": null, + "complete_peak": { + "allocated": 32302947328, + "reserved": 32440844288 + } + }, + { + "run": "Neo_n4096_TORCH_p1", + "model": "Neo", + "n": 4096, + "mode": "TORCH", + "gpu": "0", + "process": "p1", + "status": "oom", + "raw_status": "oom", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 1124910, + "first_peak": null, + "complete_peak": { + "allocated": 32302947328, + "reserved": 32440844288 + } + }, + { + "run": "Neo_n4096_TORCH_p2", + "model": "Neo", + "n": 4096, + "mode": "TORCH", + "gpu": "0", + "process": "p2", + "status": "oom", + "raw_status": "oom", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 1124910, + "first_peak": null, + "complete_peak": { + "allocated": 32302947328, + "reserved": 32440844288 + } + }, + { + "run": "Neo_n512_BASE_p0", + "model": "Neo", + "n": 512, + "mode": "BASE", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "558e1a55ec953d53c9330d7b3d7a2343737d1dde28f8be25a60848d4af3f0a46", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + }, + "complete_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + } + }, + { + "run": "Neo_n512_BASE_p1", + "model": "Neo", + "n": 512, + "mode": "BASE", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "558e1a55ec953d53c9330d7b3d7a2343737d1dde28f8be25a60848d4af3f0a46", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + }, + "complete_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + } + }, + { + "run": "Neo_n512_BASE_p2", + "model": "Neo", + "n": 512, + "mode": "BASE", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "558e1a55ec953d53c9330d7b3d7a2343737d1dde28f8be25a60848d4af3f0a46", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + }, + "complete_peak": { + "allocated": 2809000960, + "reserved": 3032481792 + } + }, + { + "run": "Neo_n512_ECS_p0", + "model": "Neo", + "n": 512, + "mode": "ECS", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "19c8da1d296e6ef073a8c0800d9b41638ef7f3a5b42cce1002a98687e067bb11", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "complete_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + } + }, + { + "run": "Neo_n512_ECS_p1", + "model": "Neo", + "n": 512, + "mode": "ECS", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "19c8da1d296e6ef073a8c0800d9b41638ef7f3a5b42cce1002a98687e067bb11", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "complete_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + } + }, + { + "run": "Neo_n512_ECS_p2", + "model": "Neo", + "n": 512, + "mode": "ECS", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "19c8da1d296e6ef073a8c0800d9b41638ef7f3a5b42cce1002a98687e067bb11", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + }, + "complete_peak": { + "allocated": 2871367680, + "reserved": 3032481792 + } + }, + { + "run": "Neo_n512_TORCH_p0", + "model": "Neo", + "n": 512, + "mode": "TORCH", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "87608c81891309b6957cf18a940bf19b63f6fdd161f5cf06568ead5eeae6b151", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "complete_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + } + }, + { + "run": "Neo_n512_TORCH_p1", + "model": "Neo", + "n": 512, + "mode": "TORCH", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "87608c81891309b6957cf18a940bf19b63f6fdd161f5cf06568ead5eeae6b151", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "complete_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + } + }, + { + "run": "Neo_n512_TORCH_p2", + "model": "Neo", + "n": 512, + "mode": "TORCH", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "87608c81891309b6957cf18a940bf19b63f6fdd161f5cf06568ead5eeae6b151", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + }, + "complete_peak": { + "allocated": 5331018240, + "reserved": 6075449344 + } + }, + { + "run": "Neo_n96_BASE_p0", + "model": "Neo", + "n": 96, + "mode": "BASE", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "88a7f76f0c36e917c6c366a7ed05087145a36b37ea5c7765401714f632fae2d3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 646372352, + "reserved": 694157312 + }, + "complete_peak": { + "allocated": 646372352, + "reserved": 694157312 + } + }, + { + "run": "Neo_n96_BASE_p1", + "model": "Neo", + "n": 96, + "mode": "BASE", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "88a7f76f0c36e917c6c366a7ed05087145a36b37ea5c7765401714f632fae2d3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 545709056, + "reserved": 589299712 + }, + "complete_peak": { + "allocated": 545709056, + "reserved": 589299712 + } + }, + { + "run": "Neo_n96_BASE_p2", + "model": "Neo", + "n": 96, + "mode": "BASE", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "88a7f76f0c36e917c6c366a7ed05087145a36b37ea5c7765401714f632fae2d3", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 16, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 545709056, + "reserved": 589299712 + }, + "complete_peak": { + "allocated": 545709056, + "reserved": 589299712 + } + }, + { + "run": "Neo_n96_ECS_p0", + "model": "Neo", + "n": 96, + "mode": "ECS", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "65e175bca1f23233ff9f33a17000de61cb7f6359e00f23d5d6a5a18cde6d2ca7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 658144768, + "reserved": 694157312 + }, + "complete_peak": { + "allocated": 658144768, + "reserved": 694157312 + } + }, + { + "run": "Neo_n96_ECS_p1", + "model": "Neo", + "n": 96, + "mode": "ECS", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "65e175bca1f23233ff9f33a17000de61cb7f6359e00f23d5d6a5a18cde6d2ca7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 557481472, + "reserved": 589299712 + }, + "complete_peak": { + "allocated": 557481472, + "reserved": 589299712 + } + }, + { + "run": "Neo_n96_ECS_p2", + "model": "Neo", + "n": 96, + "mode": "ECS", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "65e175bca1f23233ff9f33a17000de61cb7f6359e00f23d5d6a5a18cde6d2ca7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 557481472, + "reserved": 589299712 + }, + "complete_peak": { + "allocated": 557481472, + "reserved": 589299712 + } + }, + { + "run": "Neo_n96_TORCH_p0", + "model": "Neo", + "n": 96, + "mode": "TORCH", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "ba841b0194a6a580056989d65781eaef17c64480ecff0e1022b08073bc21da08", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 1118501888, + "reserved": 1260388352 + }, + "complete_peak": { + "allocated": 1118501888, + "reserved": 1260388352 + } + }, + { + "run": "Neo_n96_TORCH_p1", + "model": "Neo", + "n": 96, + "mode": "TORCH", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "ba841b0194a6a580056989d65781eaef17c64480ecff0e1022b08073bc21da08", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 1017838592, + "reserved": 1176502272 + }, + "complete_peak": { + "allocated": 1017838592, + "reserved": 1176502272 + } + }, + { + "run": "Neo_n96_TORCH_p2", + "model": "Neo", + "n": 96, + "mode": "TORCH", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "routes": [ + { + "sha256": "ba841b0194a6a580056989d65781eaef17c64480ecff0e1022b08073bc21da08", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 1124910, + "first_peak": { + "allocated": 1017838592, + "reserved": 1176502272 + }, + "complete_peak": { + "allocated": 1017838592, + "reserved": 1176502272 + } + }, + { + "run": "Pro_n4096_BASE_p0", + "model": "Pro", + "n": 4096, + "mode": "BASE", + "gpu": "0", + "process": "p0", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 31929301504, + "reserved": 31989956608 + } + }, + { + "run": "Pro_n4096_BASE_p1", + "model": "Pro", + "n": 4096, + "mode": "BASE", + "gpu": "0", + "process": "p1", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 31929301504, + "reserved": 31989956608 + } + }, + { + "run": "Pro_n4096_BASE_p2", + "model": "Pro", + "n": 4096, + "mode": "BASE", + "gpu": "0", + "process": "p2", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 31929301504, + "reserved": 31989956608 + } + }, + { + "run": "Pro_n4096_ECS_p0", + "model": "Pro", + "n": 4096, + "mode": "ECS", + "gpu": "0", + "process": "p0", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 31929301504, + "reserved": 31989956608 + } + }, + { + "run": "Pro_n4096_ECS_p1", + "model": "Pro", + "n": 4096, + "mode": "ECS", + "gpu": "0", + "process": "p1", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 31929301504, + "reserved": 31989956608 + } + }, + { + "run": "Pro_n4096_ECS_p2", + "model": "Pro", + "n": 4096, + "mode": "ECS", + "gpu": "0", + "process": "p2", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 31929301504, + "reserved": 31989956608 + } + }, + { + "run": "Pro_n4096_TORCH_p0", + "model": "Pro", + "n": 4096, + "mode": "TORCH", + "gpu": "0", + "process": "p0", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 32189347328, + "reserved": 32598130688 + } + }, + { + "run": "Pro_n4096_TORCH_p1", + "model": "Pro", + "n": 4096, + "mode": "TORCH", + "gpu": "0", + "process": "p1", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 32189347328, + "reserved": 32598130688 + } + }, + { + "run": "Pro_n4096_TORCH_p2", + "model": "Pro", + "n": 4096, + "mode": "TORCH", + "gpu": "0", + "process": "p2", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 32189347328, + "reserved": 32598130688 + } + }, + { + "run": "Pro_n512_BASE_p0", + "model": "Pro", + "n": 512, + "mode": "BASE", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "731fde8285e01447b81f62b29a0ff978da2ea857a317a68d380e40ec5b5e266c", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "complete_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + } + }, + { + "run": "Pro_n512_BASE_p1", + "model": "Pro", + "n": 512, + "mode": "BASE", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "731fde8285e01447b81f62b29a0ff978da2ea857a317a68d380e40ec5b5e266c", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "complete_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + } + }, + { + "run": "Pro_n512_BASE_p2", + "model": "Pro", + "n": 512, + "mode": "BASE", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "731fde8285e01447b81f62b29a0ff978da2ea857a317a68d380e40ec5b5e266c", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "complete_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + } + }, + { + "run": "Pro_n512_ECS_p0", + "model": "Pro", + "n": 512, + "mode": "ECS", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "89c0788df7356f657c542a03021870e433d7a073ee758b2e248ae5f4fa5a0900", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "complete_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + } + }, + { + "run": "Pro_n512_ECS_p1", + "model": "Pro", + "n": 512, + "mode": "ECS", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "89c0788df7356f657c542a03021870e433d7a073ee758b2e248ae5f4fa5a0900", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "complete_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + } + }, + { + "run": "Pro_n512_ECS_p2", + "model": "Pro", + "n": 512, + "mode": "ECS", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "89c0788df7356f657c542a03021870e433d7a073ee758b2e248ae5f4fa5a0900", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + }, + "complete_peak": { + "allocated": 25395440640, + "reserved": 26432503808 + } + }, + { + "run": "Pro_n512_TORCH_p0", + "model": "Pro", + "n": 512, + "mode": "TORCH", + "gpu": "0", + "process": "p0", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 32676858368, + "reserved": 32847691776 + } + }, + { + "run": "Pro_n512_TORCH_p1", + "model": "Pro", + "n": 512, + "mode": "TORCH", + "gpu": "0", + "process": "p1", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 32676858368, + "reserved": 32847691776 + } + }, + { + "run": "Pro_n512_TORCH_p2", + "model": "Pro", + "n": 512, + "mode": "TORCH", + "gpu": "0", + "process": "p2", + "status": "oom", + "raw_status": "oom", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": null, + "runtime_cohort_calls": [], + "finite": null, + "parameter_count": 22678990, + "first_peak": null, + "complete_peak": { + "allocated": 32676858368, + "reserved": 32847691776 + } + }, + { + "run": "Pro_n96_BASE_p0", + "model": "Pro", + "n": 96, + "mode": "BASE", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "c238802cdf7c9f5fb658a32738a5d1e8f3088559235129f9a4d5392f20778c78", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 5139665408, + "reserved": 5251268608 + }, + "complete_peak": { + "allocated": 5139665408, + "reserved": 5251268608 + } + }, + { + "run": "Pro_n96_BASE_p1", + "model": "Pro", + "n": 96, + "mode": "BASE", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "c238802cdf7c9f5fb658a32738a5d1e8f3088559235129f9a4d5392f20778c78", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "complete_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + } + }, + { + "run": "Pro_n96_BASE_p2", + "model": "Pro", + "n": 96, + "mode": "BASE", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "c238802cdf7c9f5fb658a32738a5d1e8f3088559235129f9a4d5392f20778c78", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "complete_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + } + }, + { + "run": "Pro_n96_ECS_p0", + "model": "Pro", + "n": 96, + "mode": "ECS", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "23a20a629f51e3bdf3ef2e8b8ea229c0208d7f9ff07b2a044274aef87842edd7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 5139665408, + "reserved": 5251268608 + }, + "complete_peak": { + "allocated": 5139665408, + "reserved": 5251268608 + } + }, + { + "run": "Pro_n96_ECS_p1", + "model": "Pro", + "n": 96, + "mode": "ECS", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "23a20a629f51e3bdf3ef2e8b8ea229c0208d7f9ff07b2a044274aef87842edd7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "complete_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + } + }, + { + "run": "Pro_n96_ECS_p2", + "model": "Pro", + "n": 96, + "mode": "ECS", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "23a20a629f51e3bdf3ef2e8b8ea229c0208d7f9ff07b2a044274aef87842edd7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 22, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + }, + "complete_peak": { + "allocated": 5039002112, + "reserved": 5146411008 + } + }, + { + "run": "Pro_n96_TORCH_p0", + "model": "Pro", + "n": 96, + "mode": "TORCH", + "gpu": "0", + "process": "p0", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "44c10ecad917239b1dfefbafa55b7001b2ff70b1cc1aef4263c520d4280ed57f", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + }, + "complete_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + } + }, + { + "run": "Pro_n96_TORCH_p1", + "model": "Pro", + "n": 96, + "mode": "TORCH", + "gpu": "0", + "process": "p1", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "44c10ecad917239b1dfefbafa55b7001b2ff70b1cc1aef4263c520d4280ed57f", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + }, + "complete_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + } + }, + { + "run": "Pro_n96_TORCH_p2", + "model": "Pro", + "n": 96, + "mode": "TORCH", + "gpu": "0", + "process": "p2", + "status": "completed", + "raw_status": "completed", + "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", + "routes": [ + { + "sha256": "44c10ecad917239b1dfefbafa55b7001b2ff70b1cc1aef4263c520d4280ed57f", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 0, + "stack_kernel_definitions": 0, + "single_cohort_marker": false + } + ], + "runtime_cohort_calls": [], + "finite": true, + "parameter_count": 22678990, + "first_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + }, + "complete_peak": { + "allocated": 11443602432, + "reserved": 12025069568 + } + } + ], + "comparisons": [ + { + "model": "Mini", + "n": 96, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 1.233816146850586e-05 + ], + "worst_mean_abs": 1.233816146850586e-05, + "worst_max_relative": 1.416921758455966e-08, + "worst_tolerance_ratio": 0.00014167590570081457 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.5851592789247775e-06, + 8.617596497284552e-06 + ], + "worst_mean_abs": 1.6452947202235954e-06, + "worst_max_relative": 0.0018497478678043862, + "worst_tolerance_ratio": 0.49743122659397865 + }, + "virial": { + "comparisons": 27, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.4018322326614374e-05, + 6.537851752597135e-05 + ], + "worst_mean_abs": 2.3585586184957405e-05, + "worst_max_relative": 0.0004595886666005158, + "worst_tolerance_ratio": 1.1462622157226319 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.374943722287465e-08, + 1.200451157090665e-07 + ], + "worst_mean_abs": 4.824250679593079e-08, + "worst_max_relative": 0.0004460271985102069, + "worst_tolerance_ratio": 0.009969723046957445 + } + } + }, + { + "model": "Mini", + "n": 96, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 1.245737075805664e-05 + ], + "worst_mean_abs": 1.245737075805664e-05, + "worst_max_relative": 1.4306118237550574e-08, + "worst_tolerance_ratio": 0.00014304475503125724 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.586683075569198e-06, + 8.061159741945545e-06 + ], + "worst_mean_abs": 1.7352496681320485e-06, + "worst_max_relative": 0.0014360002054703432, + "worst_tolerance_ratio": 0.6027574446859094 + }, + "virial": { + "comparisons": 81, + "failures": 14, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.968132370805847e-06, + 6.371275678773713e-05 + ], + "worst_mean_abs": 2.2463811943121107e-05, + "worst_max_relative": 0.0006158359232471348, + "worst_tolerance_ratio": 1.5990397622921673 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.4630728999848186e-08, + 1.1698652019331846e-07 + ], + "worst_mean_abs": 5.042924779615282e-08, + "worst_max_relative": 0.0006088241358712102, + "worst_tolerance_ratio": 0.009715697856603459 + } + } + }, + { + "model": "Mini", + "n": 96, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 9.894371032714844e-06 + ], + "worst_mean_abs": 9.894371032714844e-06, + "worst_max_relative": 1.1362754070689298e-08, + "worst_tolerance_ratio": 0.000113614493151467 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.567110858388901e-06, + 6.735393310197679e-06 + ], + "worst_mean_abs": 1.5630126849325299e-06, + "worst_max_relative": 0.0010701804245316763, + "worst_tolerance_ratio": 0.5406788825291937 + }, + "virial": { + "comparisons": 27, + "failures": 3, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.2506841042148054e-05, + 4.618986472415543e-05 + ], + "worst_mean_abs": 2.1923724247246363e-05, + "worst_max_relative": 0.0006836330678242167, + "worst_tolerance_ratio": 1.8636489588305836 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.2944699759270876e-08, + 8.481176792113354e-08 + ], + "worst_mean_abs": 4.4265682171617735e-08, + "worst_max_relative": 0.0006623899265650781, + "worst_tolerance_ratio": 0.007794465993601513 + } + } + }, + { + "model": "Mini", + "n": 96, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 1.049041748046875e-05 + ], + "worst_mean_abs": 1.049041748046875e-05, + "worst_max_relative": 1.2042544196125322e-08, + "worst_tolerance_ratio": 0.00012041161922970797 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.451085892087647e-06, + 7.551010226203303e-06 + ], + "worst_mean_abs": 1.6166397395797925e-06, + "worst_max_relative": 0.0017502364329796283, + "worst_tolerance_ratio": 0.708387206179095 + }, + "virial": { + "comparisons": 81, + "failures": 13, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0167628803903206e-05, + 4.643585272035011e-05 + ], + "worst_mean_abs": 2.338441503512022e-05, + "worst_max_relative": 0.0006004846661019456, + "worst_tolerance_ratio": 1.7011461516165967 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.8093194734114526e-08, + 8.526344009995857e-08 + ], + "worst_mean_abs": 4.901534538149935e-08, + "worst_max_relative": 0.0005827848956944561, + "worst_tolerance_ratio": 0.007140777494673699 + } + } + }, + { + "model": "Mini", + "n": 96, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5762786865234375e-07, + 1.7404556274414062e-05 + ], + "worst_mean_abs": 1.7404556274414062e-05, + "worst_max_relative": 1.998749535719579e-08, + "worst_tolerance_ratio": 0.0001998520024498028 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.5427882761073235e-06, + 7.322213479543649e-06 + ], + "worst_mean_abs": 1.5793111843283148e-06, + "worst_max_relative": 0.0013357623707875709, + "worst_tolerance_ratio": 0.4052419714863201 + }, + "virial": { + "comparisons": 27, + "failures": 3, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.100803435355907e-06, + 7.174196631964946e-05 + ], + "worst_mean_abs": 2.0665183024891496e-05, + "worst_max_relative": 0.0008537729903697384, + "worst_tolerance_ratio": 2.1288940173569753 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.2852935748016879e-08, + 1.3172939634931158e-07 + ], + "worst_mean_abs": 5.0659184086449125e-08, + "worst_max_relative": 0.0008498986778017871, + "worst_tolerance_ratio": 0.010932546197629085 + } + } + }, + { + "model": "Mini", + "n": 96, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 1.6987323760986328e-05 + ], + "worst_mean_abs": 1.6987323760986328e-05, + "worst_max_relative": 1.9508342681312706e-08, + "worst_tolerance_ratio": 0.00019506102589000125 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.675254167807452e-06, + 8.279643083142219e-06 + ], + "worst_mean_abs": 1.6204415573252495e-06, + "worst_max_relative": 0.0014260943841486857, + "worst_tolerance_ratio": 0.443350530178709 + }, + "virial": { + "comparisons": 81, + "failures": 10, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.8420303654968e-06, + 5.6949620262258804e-05 + ], + "worst_mean_abs": 2.00412314270457e-05, + "worst_max_relative": 0.0008570884254616711, + "worst_tolerance_ratio": 2.1371557834702766 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.5722284017778015e-08, + 1.045683507769346e-07 + ], + "worst_mean_abs": 4.4975552207923826e-08, + "worst_max_relative": 0.0008510951683932976, + "worst_tolerance_ratio": 0.008678386260442037 + } + } + }, + { + "model": "Mini", + "n": 96, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 1.8358230590820312e-05 + ], + "worst_mean_abs": 1.8358230590820312e-05, + "worst_max_relative": 2.107445189908678e-08, + "worst_tolerance_ratio": 0.00021072032921168313 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.615790030333301e-06, + 1.0795217256998058e-05 + ], + "worst_mean_abs": 2.250797889365048e-06, + "worst_max_relative": 0.003045970895385988, + "worst_tolerance_ratio": 0.7264355534849087 + }, + "virial": { + "comparisons": 243, + "failures": 32, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.9716882228237864e-05, + 8.236935342331719e-05 + ], + "worst_mean_abs": 2.6843246528783658e-05, + "worst_max_relative": 0.0007029481626625702, + "worst_tolerance_ratio": 1.7538309865704984 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.3876430664565166e-08, + 1.5124293019710966e-07 + ], + "worst_mean_abs": 5.218876120705357e-08, + "worst_max_relative": 0.0006944085567479419, + "worst_tolerance_ratio": 0.01256069535165285 + } + } + }, + { + "model": "Mini", + "n": 96, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 1.6510486602783203e-05 + ], + "worst_mean_abs": 1.6510486602783203e-05, + "worst_max_relative": 1.896074043924167e-08, + "worst_tolerance_ratio": 0.00018958563226630743 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.894227733893587e-06, + 1.1352652001583863e-05 + ], + "worst_mean_abs": 2.3180581435227855e-06, + "worst_max_relative": 0.002666781033865539, + "worst_tolerance_ratio": 0.85162882262228 + }, + "virial": { + "comparisons": 243, + "failures": 24, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.4192167690607604e-05, + 9.369597988140299e-05 + ], + "worst_mean_abs": 3.0091570231674217e-05, + "worst_max_relative": 0.0007785652260052627, + "worst_tolerance_ratio": 1.9424929048285287 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.5005290953290793e-08, + 1.7204037613613443e-07 + ], + "worst_mean_abs": 6.386489173450958e-08, + "worst_max_relative": 0.0007729360175636546, + "worst_tolerance_ratio": 0.014278048657737168 + } + } + }, + { + "model": "Mini", + "n": 96, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 1.6629695892333984e-05 + ], + "worst_mean_abs": 1.6629695892333984e-05, + "worst_max_relative": 1.9097641094847065e-08, + "worst_tolerance_ratio": 0.00019095448162288888 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.2144412297773215e-06, + 8.067161711089454e-06 + ], + "worst_mean_abs": 1.6579947654629128e-06, + "worst_max_relative": 0.0018015635521395246, + "worst_tolerance_ratio": 0.5776819336100671 + }, + "virial": { + "comparisons": 243, + "failures": 32, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.232100679933518e-06, + 8.385046110248595e-05 + ], + "worst_mean_abs": 2.6632738738010778e-05, + "worst_max_relative": 0.0007813533137515944, + "worst_tolerance_ratio": 1.9484204442326523 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.4739618969473653e-08, + 1.5396247400947805e-07 + ], + "worst_mean_abs": 6.231073686869095e-08, + "worst_max_relative": 0.0007724462587592696, + "worst_tolerance_ratio": 0.0127777215707106 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.172325134277344e-07, + 3.606081008911133e-05 + ], + "worst_mean_abs": 3.606081008911133e-05, + "worst_max_relative": 7.76559871800836e-09, + "worst_tolerance_ratio": 7.7654314915243e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.8700505549680315e-06, + 7.873360100774107e-06 + ], + "worst_mean_abs": 1.6342186100237065e-06, + "worst_max_relative": 0.02137392966393576, + "worst_tolerance_ratio": 0.6888372481205759 + }, + "virial": { + "comparisons": 27, + "failures": 7, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.876068720958358e-05, + 0.0001708480426003689 + ], + "worst_mean_abs": 6.022830289942327e-05, + "worst_max_relative": 0.0004283714472048604, + "worst_tolerance_ratio": 2.661523934603506 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.492503874894496e-09, + 5.881941562979609e-08 + ], + "worst_mean_abs": 2.5480795527766373e-08, + "worst_max_relative": 0.0004267510777186284, + "worst_tolerance_ratio": 0.004850192967374782 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 3.4928321838378906e-05 + ], + "worst_mean_abs": 3.4928321838378906e-05, + "worst_max_relative": 7.521720354585539e-09, + "worst_tolerance_ratio": 7.521558379844737e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.542810268543974e-06, + 8.600727065655178e-06 + ], + "worst_mean_abs": 1.5879309156353189e-06, + "worst_max_relative": 0.02582093245708209, + "worst_tolerance_ratio": 0.6212477904299871 + }, + "virial": { + "comparisons": 81, + "failures": 13, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.6274888021760034e-05, + 0.00013400378033878724 + ], + "worst_mean_abs": 5.194175095534092e-05, + "worst_max_relative": 0.000350935851141657, + "worst_tolerance_ratio": 2.1806969563123086 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.045895612430632e-09, + 4.613470503539441e-08 + ], + "worst_mean_abs": 2.2754256775267616e-08, + "worst_max_relative": 0.0003500280489606905, + "worst_tolerance_ratio": 0.003819526540830247 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.152557373046875e-07, + 3.594160079956055e-05 + ], + "worst_mean_abs": 3.594160079956055e-05, + "worst_max_relative": 7.739927251420353e-09, + "worst_tolerance_ratio": 7.739760577753953e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.392431828621369e-06, + 8.266405139067956e-06 + ], + "worst_mean_abs": 1.5234315504842595e-06, + "worst_max_relative": 0.01378113490866334, + "worst_tolerance_ratio": 0.5562184721723502 + }, + "virial": { + "comparisons": 27, + "failures": 7, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.301648272151624e-05, + 9.671613784689725e-05 + ], + "worst_mean_abs": 4.4626946020932655e-05, + "worst_max_relative": 0.0003975858801059922, + "worst_tolerance_ratio": 2.4706575410910463 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.924094668626536e-09, + 3.329734788587446e-08 + ], + "worst_mean_abs": 1.8954803940220194e-08, + "worst_max_relative": 0.000396447450903835, + "worst_tolerance_ratio": 0.0027492825255001022 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 2.855062484741211e-05 + ], + "worst_mean_abs": 2.855062484741211e-05, + "worst_max_relative": 6.148300467869902e-09, + "worst_tolerance_ratio": 6.148168068719915e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.615764457012062e-06, + 8.581727296230746e-06 + ], + "worst_mean_abs": 1.5426887755226669e-06, + "worst_max_relative": 0.012610946961254164, + "worst_tolerance_ratio": 0.6615389666659056 + }, + "virial": { + "comparisons": 81, + "failures": 20, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.4161929123623906e-05, + 0.00012441258299134006 + ], + "worst_mean_abs": 5.3609852590434194e-05, + "worst_max_relative": 0.00042112258276164787, + "worst_tolerance_ratio": 2.6165009463892956 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.756973171491166e-09, + 4.2832655949842646e-08 + ], + "worst_mean_abs": 2.2190613890498e-08, + "worst_max_relative": 0.00041655694809581757, + "worst_tolerance_ratio": 0.003536590149079609 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539062e-07, + 2.8133392333984375e-05 + ], + "worst_mean_abs": 2.8133392333984375e-05, + "worst_max_relative": 6.057205854635837e-09, + "worst_tolerance_ratio": 6.057075443939518e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.6594547774846404e-06, + 9.532240238030454e-06 + ], + "worst_mean_abs": 1.5488555566602821e-06, + "worst_max_relative": 0.019001726084334307, + "worst_tolerance_ratio": 0.5996927729332756 + }, + "virial": { + "comparisons": 27, + "failures": 8, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.9531045675424963e-05, + 0.00014004510511256285 + ], + "worst_mean_abs": 4.7681163496972166e-05, + "worst_max_relative": 0.00031614377100758786, + "worst_tolerance_ratio": 1.964430898257003 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.450278240352492e-09, + 4.821460707765679e-08 + ], + "worst_mean_abs": 2.040435114301564e-08, + "worst_max_relative": 0.0003058372947108579, + "worst_tolerance_ratio": 0.003980965089196281 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 2.6464462280273438e-05 + ], + "worst_mean_abs": 2.6464462280273438e-05, + "worst_max_relative": 5.697880083598118e-09, + "worst_tolerance_ratio": 5.697757409129546e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.61875165061565e-06, + 8.691154017581582e-06 + ], + "worst_mean_abs": 1.5451270540159125e-06, + "worst_max_relative": 0.01874592619869073, + "worst_tolerance_ratio": 0.6466975261806251 + }, + "virial": { + "comparisons": 81, + "failures": 20, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.6102740609369448e-05, + 0.000144512149532261 + ], + "worst_mean_abs": 5.969438309762055e-05, + "worst_max_relative": 0.0005043471024016478, + "worst_tolerance_ratio": 3.13409831150998 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.543837541810426e-09, + 4.975251724839702e-08 + ], + "worst_mean_abs": 2.616194846953354e-08, + "worst_max_relative": 0.0004982910828880221, + "worst_tolerance_ratio": 0.004102544292440858 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 3.9517879486083984e-05 + ], + "worst_mean_abs": 3.9517879486083984e-05, + "worst_max_relative": 8.510069338908335e-09, + "worst_tolerance_ratio": 8.509886080794399e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.672731766827923e-06, + 1.2100282240856686e-05 + ], + "worst_mean_abs": 2.1287089382524807e-06, + "worst_max_relative": 0.021183281638699564, + "worst_tolerance_ratio": 0.8163209885036864 + }, + "virial": { + "comparisons": 243, + "failures": 51, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.353274376167064e-05, + 0.00025947973966822246 + ], + "worst_mean_abs": 7.981693944329275e-05, + "worst_max_relative": 0.0004363575272525355, + "worst_tolerance_ratio": 2.711142421851518 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.220137173576276e-08, + 8.933345926886993e-08 + ], + "worst_mean_abs": 3.18906144059919e-08, + "worst_max_relative": 0.00043355540414233496, + "worst_tolerance_ratio": 0.007366348358047898 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 3.039836883544922e-05 + ], + "worst_mean_abs": 3.039836883544922e-05, + "worst_max_relative": 6.546207132940424e-09, + "worst_tolerance_ratio": 6.546066165162662e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.603921997612062e-06, + 1.288811181310301e-05 + ], + "worst_mean_abs": 2.1227187158779724e-06, + "worst_max_relative": 0.02493504217862279, + "worst_tolerance_ratio": 0.8157213670077434 + }, + "virial": { + "comparisons": 243, + "failures": 52, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.722543806134354e-05, + 0.0002485018977509412 + ], + "worst_mean_abs": 7.29968931955464e-05, + "worst_max_relative": 0.0004895891540463454, + "worst_tolerance_ratio": 3.042372914348612 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.3472689321689675e-08, + 8.555401739482327e-08 + ], + "worst_mean_abs": 3.0985485426691406e-08, + "worst_max_relative": 0.0004861232090584264, + "worst_tolerance_ratio": 0.0070694500725845336 + } + } + }, + { + "model": "Mini", + "n": 512, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 3.3855438232421875e-05 + ], + "worst_mean_abs": 3.3855438232421875e-05, + "worst_max_relative": 7.290677742631444e-09, + "worst_tolerance_ratio": 7.290520743224289e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.0998196319262945e-06, + 8.80123605906391e-06 + ], + "worst_mean_abs": 1.5515039111673949e-06, + "worst_max_relative": 0.017698981510238004, + "worst_tolerance_ratio": 0.7962971967981481 + }, + "virial": { + "comparisons": 243, + "failures": 68, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.8830477777953547e-05, + 0.00016364893035358818 + ], + "worst_mean_abs": 6.401013160191778e-05, + "worst_max_relative": 0.00049520656086906, + "worst_tolerance_ratio": 3.077286784183512 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.482940524688008e-09, + 5.634091151951459e-08 + ], + "worst_mean_abs": 2.85071094566858e-08, + "worst_max_relative": 0.0004929212804005682, + "worst_tolerance_ratio": 0.0046458190490193275 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.364418029785156e-07, + 7.575750350952148e-05 + ], + "worst_mean_abs": 7.575750350952148e-05, + "worst_max_relative": 2.039078960428672e-09, + "worst_tolerance_ratio": 2.0390734720854414e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.887312545389435e-06, + 1.0042507351926133e-05 + ], + "worst_mean_abs": 1.5514018959796187e-06, + "worst_max_relative": 0.4841481361211562, + "worst_tolerance_ratio": 0.6298192198641505 + }, + "virial": { + "comparisons": 27, + "failures": 7, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.010272805198838e-05, + 0.000349923350086101 + ], + "worst_mean_abs": 0.0001105358174081022, + "worst_max_relative": 0.003086550158219361, + "worst_tolerance_ratio": 10.262340417832934 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.877561112475281e-09, + 1.5058913355875392e-08 + ], + "worst_mean_abs": 5.50391907803487e-09, + "worst_max_relative": 0.003080023074205434, + "worst_tolerance_ratio": 0.0012440707686948483 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 7.706880569458008e-05 + ], + "worst_mean_abs": 7.706880569458008e-05, + "worst_max_relative": 2.074373801182864e-09, + "worst_tolerance_ratio": 2.0743682178407497e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.973172319790777e-06, + 8.996672217875812e-06 + ], + "worst_mean_abs": 1.5712966323113763e-06, + "worst_max_relative": 0.34210812674886265, + "worst_tolerance_ratio": 0.7781945595991231 + }, + "virial": { + "comparisons": 81, + "failures": 22, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.729604178712378e-05, + 0.000313717154654114 + ], + "worst_mean_abs": 0.00012283257971014273, + "worst_max_relative": 0.0026867341795021784, + "worst_tolerance_ratio": 8.932233976082555 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.584011183845436e-09, + 1.3500783668102256e-08 + ], + "worst_mean_abs": 6.693462633675451e-09, + "worst_max_relative": 0.002583440977932314, + "worst_tolerance_ratio": 0.0011144708103626643 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.086162567138672e-06, + 9.506940841674805e-05 + ], + "worst_mean_abs": 9.506940841674805e-05, + "worst_max_relative": 2.558875652130973e-09, + "worst_tolerance_ratio": 2.5588687647135715e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.873514546867909e-06, + 9.211481611259842e-06 + ], + "worst_mean_abs": 1.5679747437668933e-06, + "worst_max_relative": 0.2368364860532765, + "worst_tolerance_ratio": 0.6903694378272407 + }, + "virial": { + "comparisons": 27, + "failures": 8, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.354777753538656e-05, + 0.00027771620784733386 + ], + "worst_mean_abs": 0.00010900024692520975, + "worst_max_relative": 0.003116574424636271, + "worst_tolerance_ratio": 10.362786346682652 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5954695297435446e-09, + 1.1951486834915759e-08 + ], + "worst_mean_abs": 5.457016956872711e-09, + "worst_max_relative": 0.0031067302471465266, + "worst_tolerance_ratio": 0.0009869922804633697 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.748603820800781e-07, + 0.00011563301086425781 + ], + "worst_mean_abs": 0.00011563301086425781, + "worst_max_relative": 3.1123638953207768e-09, + "worst_tolerance_ratio": 3.112355518142952e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.000537333823331e-06, + 9.328238273376144e-06 + ], + "worst_mean_abs": 1.5681924454607663e-06, + "worst_max_relative": 0.27579474363081763, + "worst_tolerance_ratio": 0.7364628204244738 + }, + "virial": { + "comparisons": 81, + "failures": 24, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.222449833119924e-05, + 0.0003119138424949597 + ], + "worst_mean_abs": 0.000128328178452233, + "worst_max_relative": 0.003634258042320264, + "worst_tolerance_ratio": 12.054870406865035 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.039966450861734e-09, + 1.342317832581097e-08 + ], + "worst_mean_abs": 7.053429878699607e-09, + "worst_max_relative": 0.0035978141876707686, + "worst_tolerance_ratio": 0.0011075117804315825 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539062e-07, + 7.11679458618164e-05 + ], + "worst_mean_abs": 7.11679458618164e-05, + "worst_max_relative": 1.9155476806969163e-09, + "worst_tolerance_ratio": 1.915542524846208e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.186905859768444e-06, + 1.0065896723476797e-05 + ], + "worst_mean_abs": 1.5828787406664755e-06, + "worst_max_relative": 0.23616733256512695, + "worst_tolerance_ratio": 0.618435933531187 + }, + "virial": { + "comparisons": 27, + "failures": 9, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.141298289856877e-05, + 0.0003645931031996952 + ], + "worst_mean_abs": 0.00013327397860961475, + "worst_max_relative": 0.001857279873251983, + "worst_tolerance_ratio": 6.175467165032391 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.060671382012394e-09, + 1.5690224588332802e-08 + ], + "worst_mean_abs": 7.208393908414001e-09, + "worst_max_relative": 0.0017743016754639823, + "worst_tolerance_ratio": 0.0012969214558460741 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.364418029785156e-07, + 8.416175842285156e-05 + ], + "worst_mean_abs": 8.416175842285156e-05, + "worst_max_relative": 2.26528754278895e-09, + "worst_tolerance_ratio": 2.2652814455852603e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.002038842074398e-06, + 9.465513232553846e-06 + ], + "worst_mean_abs": 1.5703112012795837e-06, + "worst_max_relative": 0.299853230807431, + "worst_tolerance_ratio": 0.7042533660201544 + }, + "virial": { + "comparisons": 81, + "failures": 21, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.396499883796423e-05, + 0.00032958107493641364 + ], + "worst_mean_abs": 0.0001266616853843081, + "worst_max_relative": 0.0022134061082848626, + "worst_tolerance_ratio": 7.359589118177455 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.8920289467094786e-09, + 1.4183485757407466e-08 + ], + "worst_mean_abs": 6.298680528863364e-09, + "worst_max_relative": 0.002196764762364818, + "worst_tolerance_ratio": 0.0011717480115710107 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5762786865234375e-07, + 0.00013875961303710938 + ], + "worst_mean_abs": 0.00013875961303710938, + "worst_max_relative": 3.734836672060098e-09, + "worst_tolerance_ratio": 3.734826619446721e-05 + }, + "forces": { + "comparisons": 243, + "failures": 4, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.300704413739425e-06, + 1.306010295731852e-05 + ], + "worst_mean_abs": 2.0951501276634728e-06, + "worst_max_relative": 0.7128561350601571, + "worst_tolerance_ratio": 1.091126210779255 + }, + "virial": { + "comparisons": 243, + "failures": 74, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0007795617102601682, + 0.001487967335265239 + ], + "worst_mean_abs": 0.0004160018023689174, + "worst_max_relative": 0.0037887916118588966, + "worst_tolerance_ratio": 12.599361967648454 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.354835351188079e-08, + 6.403451262987359e-08 + ], + "worst_mean_abs": 2.4356598416590813e-08, + "worst_max_relative": 0.0036913841218303104, + "worst_tolerance_ratio": 0.005285960051621328 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.3113021850585938e-06, + 0.00014650821685791016 + ], + "worst_mean_abs": 0.00014650821685791016, + "worst_max_relative": 3.943395818043805e-09, + "worst_tolerance_ratio": 3.943385204080263e-05 + }, + "forces": { + "comparisons": 243, + "failures": 2, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.301770815040022e-06, + 1.3982101336296182e-05 + ], + "worst_mean_abs": 2.0993322691486365e-06, + "worst_max_relative": 0.8411676494618848, + "worst_tolerance_ratio": 1.0871898850998793 + }, + "virial": { + "comparisons": 243, + "failures": 68, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0008274944672166384, + 0.0015206115480737026 + ], + "worst_mean_abs": 0.00041518984107876317, + "worst_max_relative": 0.0029647463601591892, + "worst_tolerance_ratio": 9.83702996646307 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5611134503038544e-08, + 6.543935278033319e-08 + ], + "worst_mean_abs": 2.429483871690861e-08, + "worst_max_relative": 0.0029280663704920017, + "worst_tolerance_ratio": 0.005401927654235341 + } + } + }, + { + "model": "Mini", + "n": 4096, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-07, + 0.00010836124420166016 + ], + "worst_mean_abs": 0.00010836124420166016, + "worst_max_relative": 2.9166379183985426e-09, + "worst_tolerance_ratio": 2.9166300680329313e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.847914238328201e-06, + 1.0045704557426482e-05 + ], + "worst_mean_abs": 1.5699391067650054e-06, + "worst_max_relative": 0.3713656163213515, + "worst_tolerance_ratio": 0.8620743852111383 + }, + "virial": { + "comparisons": 243, + "failures": 75, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.9194144164866884e-05, + 0.0003467675384740687 + ], + "worst_mean_abs": 0.0001766399195278644, + "worst_max_relative": 0.0036114867282294226, + "worst_tolerance_ratio": 11.979337729448476 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.6867157358324558e-09, + 1.4923103346803357e-08 + ], + "worst_mean_abs": 8.585784165328801e-09, + "worst_max_relative": 0.003543489286219986, + "worst_tolerance_ratio": 0.0012312667205949654 + } + } + }, + { + "model": "Nano", + "n": 96, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.76837158203125e-07, + 2.658367156982422e-05 + ], + "worst_mean_abs": 2.658367156982422e-05, + "worst_max_relative": 3.047786189191437e-08, + "worst_tolerance_ratio": 0.00030474368042022386 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.035118747111824e-06, + 1.1300751047826907e-05 + ], + "worst_mean_abs": 2.6139046021347867e-06, + "worst_max_relative": 0.011422249178269698, + "worst_tolerance_ratio": 0.9727200844279131 + }, + "virial": { + "comparisons": 27, + "failures": 22, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.3254307720506064e-05, + 7.838692907147227e-05 + ], + "worst_mean_abs": 2.7261629491780335e-05, + "worst_max_relative": 0.02195899651858405, + "worst_tolerance_ratio": 5.542039325884082 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.3180132940982853e-08, + 1.4393058035840588e-07 + ], + "worst_mean_abs": 6.383664826439014e-08, + "worst_max_relative": 0.02195899651858402, + "worst_tolerance_ratio": 0.014280751572544517 + } + } + }, + { + "model": "Nano", + "n": 96, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 2.4199485778808594e-05 + ], + "worst_mean_abs": 2.4199485778808594e-05, + "worst_max_relative": 2.774442136349156e-08, + "worst_tolerance_ratio": 0.0002774124086336567 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.704151409131498e-06, + 1.135753425351993e-05 + ], + "worst_mean_abs": 2.6760556958552098e-06, + "worst_max_relative": 0.01028568521764019, + "worst_tolerance_ratio": 0.9693601095477619 + }, + "virial": { + "comparisons": 81, + "failures": 69, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.4388859201130977e-05, + 7.6763564094251e-05 + ], + "worst_mean_abs": 2.8458924736321193e-05, + "worst_max_relative": 0.03366112061421433, + "worst_tolerance_ratio": 5.4077417079219385 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.480183089459409e-08, + 1.4094983004624834e-07 + ], + "worst_mean_abs": 6.395878323880071e-08, + "worst_max_relative": 0.033661120614214286, + "worst_tolerance_ratio": 0.014005313095490185 + } + } + }, + { + "model": "Nano", + "n": 96, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 1.2993812561035156e-05 + ], + "worst_mean_abs": 1.2993812561035156e-05, + "worst_max_relative": 1.4896383880756515e-08, + "worst_tolerance_ratio": 0.0001489467632329215 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.957176461597214e-06, + 1.219847896960502e-05 + ], + "worst_mean_abs": 2.4339708814625974e-06, + "worst_max_relative": 0.010774536103967001, + "worst_tolerance_ratio": 0.843671926062053 + }, + "virial": { + "comparisons": 27, + "failures": 23, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.4057827580238325e-05, + 7.483397429419725e-05 + ], + "worst_mean_abs": 2.789921628936086e-05, + "worst_max_relative": 0.03473168729148646, + "worst_tolerance_ratio": 5.706295009126272 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.4047555649575093e-08, + 1.3740680338263523e-07 + ], + "worst_mean_abs": 6.445004020579598e-08, + "worst_max_relative": 0.03473168729148635, + "worst_tolerance_ratio": 0.013635552068828046 + } + } + }, + { + "model": "Nano", + "n": 96, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 1.8775463104248047e-05 + ], + "worst_mean_abs": 1.8775463104248047e-05, + "worst_max_relative": 2.1517599884505188e-08, + "worst_tolerance_ratio": 0.00021515134144803222 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.72557216230274e-06, + 1.142189852476605e-05 + ], + "worst_mean_abs": 2.750728753859779e-06, + "worst_max_relative": 0.01021174105948051, + "worst_tolerance_ratio": 0.8491066477551934 + }, + "virial": { + "comparisons": 81, + "failures": 61, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.5930711734224445e-05, + 8.810769552725084e-05 + ], + "worst_mean_abs": 3.232664102218822e-05, + "worst_max_relative": 0.04899263388365851, + "worst_tolerance_ratio": 8.324135188919573 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.580765909310223e-08, + 1.6177941783782068e-07 + ], + "worst_mean_abs": 7.60029539685668e-08, + "worst_max_relative": 0.0489926338836584, + "worst_tolerance_ratio": 0.016054144433566505 + } + } + }, + { + "model": "Nano", + "n": 96, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 1.7940998077392578e-05 + ], + "worst_mean_abs": 1.7940998077392578e-05, + "worst_max_relative": 2.0561261642745318e-08, + "worst_tolerance_ratio": 0.00020558905491582056 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.266433821762064e-06, + 1.0802676997379024e-05 + ], + "worst_mean_abs": 2.440387724502595e-06, + "worst_max_relative": 0.011674485643730784, + "worst_tolerance_ratio": 0.6785042000859941 + }, + "virial": { + "comparisons": 27, + "failures": 21, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.870871411246977e-05, + 8.600860745688887e-05 + ], + "worst_mean_abs": 3.0540871994321086e-05, + "worst_max_relative": 0.022803198274496658, + "worst_tolerance_ratio": 7.360782214300648 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.431688033522437e-08, + 1.579251660159325e-07 + ], + "worst_mean_abs": 7.376562880579572e-08, + "worst_max_relative": 0.02280319827449667, + "worst_tolerance_ratio": 0.015773253742414624 + } + } + }, + { + "model": "Nano", + "n": 96, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 2.1219253540039062e-05 + ], + "worst_mean_abs": 2.1219253540039062e-05, + "worst_max_relative": 2.4327621221648266e-08, + "worst_tolerance_ratio": 0.0002432483240861109 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.01996462471044e-06, + 1.150207725686414e-05 + ], + "worst_mean_abs": 2.658767914610662e-06, + "worst_max_relative": 0.011684682463869259, + "worst_tolerance_ratio": 0.7076685479968887 + }, + "virial": { + "comparisons": 81, + "failures": 65, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1769635933300826e-05, + 8.073652045148538e-05 + ], + "worst_mean_abs": 2.7806840662561757e-05, + "worst_max_relative": 0.027443434227143553, + "worst_tolerance_ratio": 6.463070382870599 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.1610880162730708e-08, + 1.4824479517637056e-07 + ], + "worst_mean_abs": 6.46602327152568e-08, + "worst_max_relative": 0.027443434227143616, + "worst_tolerance_ratio": 0.014730170173660385 + } + } + }, + { + "model": "Nano", + "n": 96, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 3.49879264831543e-05 + ], + "worst_mean_abs": 3.49879264831543e-05, + "worst_max_relative": 4.011323975460479e-08, + "worst_tolerance_ratio": 0.0004010864134678731 + }, + "forces": { + "comparisons": 243, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.4539358941573255e-06, + 1.2858642685742439e-05 + ], + "worst_mean_abs": 2.7234350156474433e-06, + "worst_max_relative": 0.011161693266728827, + "worst_tolerance_ratio": 1.022173570244836 + }, + "virial": { + "comparisons": 243, + "failures": 185, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.2186939584268863e-05, + 9.567030189816528e-05 + ], + "worst_mean_abs": 3.726008335803844e-05, + "worst_max_relative": 0.05859439511639781, + "worst_tolerance_ratio": 9.413333499883477 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.1546263129354135e-08, + 1.7566553809903933e-07 + ], + "worst_mean_abs": 8.682843555548287e-08, + "worst_max_relative": 0.05859439511639777, + "worst_tolerance_ratio": 0.017566027181783437 + } + } + }, + { + "model": "Nano", + "n": 96, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 3.981590270996094e-05 + ], + "worst_mean_abs": 3.981590270996094e-05, + "worst_max_relative": 4.5648456824660987e-08, + "worst_tolerance_ratio": 0.0004564322388356716 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.870058909758114e-06, + 1.2694546969171938e-05 + ], + "worst_mean_abs": 2.6515156928153447e-06, + "worst_max_relative": 0.015177571948039396, + "worst_tolerance_ratio": 0.9196429496940467 + }, + "virial": { + "comparisons": 243, + "failures": 199, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.2268853982311256e-05, + 9.163116291466267e-05 + ], + "worst_mean_abs": 3.819176432759419e-05, + "worst_max_relative": 0.03094075753110952, + "worst_tolerance_ratio": 8.097636948657748 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.206769400458762e-08, + 1.6824905138460345e-07 + ], + "worst_mean_abs": 9.012084792699213e-08, + "worst_max_relative": 0.030940757531109517, + "worst_tolerance_ratio": 0.016820841230437998 + } + } + }, + { + "model": "Nano", + "n": 96, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 2.3543834686279297e-05 + ], + "worst_mean_abs": 2.3543834686279297e-05, + "worst_max_relative": 2.699272572174433e-08, + "worst_tolerance_ratio": 0.0002698963139268867 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.351483824218462e-06, + 1.1548657699478326e-05 + ], + "worst_mean_abs": 2.5350481977620223e-06, + "worst_max_relative": 0.015042506058157972, + "worst_tolerance_ratio": 0.9283269860541141 + }, + "virial": { + "comparisons": 243, + "failures": 182, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1366755719721677e-05, + 0.00010139215078763808 + ], + "worst_mean_abs": 4.184010767099227e-05, + "worst_max_relative": 0.0537651936067399, + "worst_tolerance_ratio": 9.135021013642975 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.003032453963549e-08, + 1.861717416350205e-07 + ], + "worst_mean_abs": 9.297942786108079e-08, + "worst_max_relative": 0.0537651936067399, + "worst_tolerance_ratio": 0.01859447118541576 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.940696716308594e-07, + 3.463029861450195e-05 + ], + "worst_mean_abs": 3.463029861450195e-05, + "worst_max_relative": 7.445191871202751e-09, + "worst_tolerance_ratio": 7.445031809948502e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.984270483125556e-06, + 1.4881552797163522e-05 + ], + "worst_mean_abs": 2.493522172549526e-06, + "worst_max_relative": 0.013332092790402336, + "worst_tolerance_ratio": 0.7437119574716415 + }, + "virial": { + "comparisons": 27, + "failures": 19, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.949298599399299e-05, + 0.00019778690363947415 + ], + "worst_mean_abs": 7.473262665322642e-05, + "worst_max_relative": 0.0014566467866051723, + "worst_tolerance_ratio": 7.76731221574246 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.682581363658415e-08, + 6.809390329484862e-08 + ], + "worst_mean_abs": 3.2482721039900765e-08, + "worst_max_relative": 0.0014566467866051751, + "worst_tolerance_ratio": 0.0067922101359849975 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5762786865234375e-07, + 6.020069122314453e-05 + ], + "worst_mean_abs": 6.020069122314453e-05, + "worst_max_relative": 1.2942588349833461e-08, + "worst_tolerance_ratio": 0.0001294231010221114 + }, + "forces": { + "comparisons": 81, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.737049497664628e-06, + 1.2465251465032523e-05 + ], + "worst_mean_abs": 2.5101341260885647e-06, + "worst_max_relative": 0.017122881955507673, + "worst_tolerance_ratio": 1.0676308362780587 + }, + "virial": { + "comparisons": 81, + "failures": 61, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.41439804616428e-05, + 0.00020103534083948382 + ], + "worst_mean_abs": 8.638079329686348e-05, + "worst_max_relative": 0.0014645420064852502, + "worst_tolerance_ratio": 7.814717703793684 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1740919721040313e-08, + 6.92122724309718e-08 + ], + "worst_mean_abs": 3.787224942760197e-08, + "worst_max_relative": 0.00146454200648532, + "worst_tolerance_ratio": 0.006889025230626958 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.3709068298339844e-06, + 5.3048133850097656e-05 + ], + "worst_mean_abs": 5.3048133850097656e-05, + "worst_max_relative": 1.1404238118204803e-08, + "worst_tolerance_ratio": 0.00011403992956232587 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.898732775541873e-06, + 1.2778202936658545e-05 + ], + "worst_mean_abs": 2.395589466837662e-06, + "worst_max_relative": 0.009439384970244302, + "worst_tolerance_ratio": 0.8795867832619659 + }, + "virial": { + "comparisons": 27, + "failures": 17, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.218419969959086e-05, + 0.0001863375109056875 + ], + "worst_mean_abs": 5.863723974401195e-05, + "worst_max_relative": 0.0006978063481917193, + "worst_tolerance_ratio": 4.265644501726467 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.4523139611657531e-08, + 6.415211631474781e-08 + ], + "worst_mean_abs": 2.6431956455353078e-08, + "worst_max_relative": 0.0006959653241890579, + "worst_tolerance_ratio": 0.006385364737316847 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.940696716308594e-07, + 6.389617919921875e-05 + ], + "worst_mean_abs": 6.389617919921875e-05, + "worst_max_relative": 1.3736340933311272e-08, + "worst_tolerance_ratio": 0.0001373604563708494 + }, + "forces": { + "comparisons": 81, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.700007275486143e-06, + 1.3465942494406136e-05 + ], + "worst_mean_abs": 2.487101391573216e-06, + "worst_max_relative": 0.01579288394562737, + "worst_tolerance_ratio": 1.1425422500389155 + }, + "virial": { + "comparisons": 81, + "failures": 52, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.6708642745388858e-05, + 0.00016073718994880082 + ], + "worst_mean_abs": 7.30006640153633e-05, + "worst_max_relative": 0.0008746887823041392, + "worst_tolerance_ratio": 4.643919805360796 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.272789289174559e-09, + 5.533846006411901e-08 + ], + "worst_mean_abs": 3.002464785484302e-08, + "worst_max_relative": 0.0008499145672383013, + "worst_tolerance_ratio": 0.005508099682591605 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.9073486328125e-06, + 4.595518112182617e-05 + ], + "worst_mean_abs": 4.595518112182617e-05, + "worst_max_relative": 9.87790441158721e-09, + "worst_tolerance_ratio": 9.877692094072773e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.712379335307219e-06, + 1.3476952716473534e-05 + ], + "worst_mean_abs": 2.3930112773147866e-06, + "worst_max_relative": 0.01121630319110574, + "worst_tolerance_ratio": 0.778663515428898 + }, + "virial": { + "comparisons": 27, + "failures": 17, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.526895420913334e-05, + 0.00017954259055441568 + ], + "worst_mean_abs": 6.695765811792764e-05, + "worst_max_relative": 0.001321277206290401, + "worst_tolerance_ratio": 7.051295117288195 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.2142364904017301e-08, + 6.181276704147944e-08 + ], + "worst_mean_abs": 2.509405181429396e-08, + "worst_max_relative": 0.0013212772062903778, + "worst_tolerance_ratio": 0.006161189973668341 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0728836059570312e-06, + 5.358457565307617e-05 + ], + "worst_mean_abs": 5.358457565307617e-05, + "worst_max_relative": 1.1519562031512072e-08, + "worst_tolerance_ratio": 0.00011519314390367091 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.398575210399883e-06, + 1.288001496391189e-05 + ], + "worst_mean_abs": 2.4427987209496194e-06, + "worst_max_relative": 0.012996586233104797, + "worst_tolerance_ratio": 0.9127844768758169 + }, + "virial": { + "comparisons": 81, + "failures": 50, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.5492607715827944e-05, + 0.0002203099019918442 + ], + "worst_mean_abs": 7.322412530082663e-05, + "worst_max_relative": 0.0013497919401527234, + "worst_tolerance_ratio": 7.198939118446465 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.09529368935939e-09, + 7.584810159360755e-08 + ], + "worst_mean_abs": 3.181804308844299e-08, + "worst_max_relative": 0.0013497919401527657, + "worst_tolerance_ratio": 0.007565672623535511 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.980232238769531e-07, + 0.00011068582534790039 + ], + "worst_mean_abs": 0.00011068582534790039, + "worst_max_relative": 2.3795134800544376e-08, + "worst_tolerance_ratio": 0.0002379462326596769 + }, + "forces": { + "comparisons": 243, + "failures": 2, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.035994224859678e-06, + 1.4765460413457276e-05 + ], + "worst_mean_abs": 2.5749153977056224e-06, + "worst_max_relative": 0.014952009902741167, + "worst_tolerance_ratio": 1.0825985871267148 + }, + "virial": { + "comparisons": 243, + "failures": 174, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.1996451821992835e-05, + 0.0002575129637439888 + ], + "worst_mean_abs": 9.198199574325352e-05, + "worst_max_relative": 0.0012120980753795904, + "worst_tolerance_ratio": 7.193986898297899 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.81358128576913e-09, + 8.86563393616744e-08 + ], + "worst_mean_abs": 4.0573128805095515e-08, + "worst_max_relative": 0.0012120980753795633, + "worst_tolerance_ratio": 0.008857767458020895 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.67572021484375e-06, + 0.00011020898818969727 + ], + "worst_mean_abs": 0.00011020898818969727, + "worst_max_relative": 2.3692624796018606e-08, + "worst_tolerance_ratio": 0.00023692115465144998 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.28370012406765e-06, + 1.3249488850952673e-05 + ], + "worst_mean_abs": 2.522870688969808e-06, + "worst_max_relative": 0.01743795075709667, + "worst_tolerance_ratio": 0.9695329873582244 + }, + "virial": { + "comparisons": 243, + "failures": 149, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.2549420298112466e-05, + 0.0002559713896210791 + ], + "worst_mean_abs": 9.214669510077606e-05, + "worst_max_relative": 0.0017806529447427586, + "worst_tolerance_ratio": 9.494973492668212 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.763294823290821e-09, + 8.812560756237258e-08 + ], + "worst_mean_abs": 3.887124038716453e-08, + "worst_max_relative": 0.0017806529447427734, + "worst_tolerance_ratio": 0.00880474136993018 + } + } + }, + { + "model": "Nano", + "n": 512, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 6.341934204101562e-05 + ], + "worst_mean_abs": 6.341934204101562e-05, + "worst_max_relative": 1.3633830739067316e-08, + "worst_tolerance_ratio": 0.00013633537646552216 + }, + "forces": { + "comparisons": 243, + "failures": 2, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.381313393535095e-06, + 1.5704685597306423e-05 + ], + "worst_mean_abs": 2.4550383153520332e-06, + "worst_max_relative": 0.012793569215660149, + "worst_tolerance_ratio": 1.0728499748003018 + }, + "virial": { + "comparisons": 243, + "failures": 139, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.9037940983744903e-05, + 0.0001981243921470588 + ], + "worst_mean_abs": 7.467182907506932e-05, + "worst_max_relative": 0.0011668279736217655, + "worst_tolerance_ratio": 6.223655361153504 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.658966499672891e-09, + 6.821009354497816e-08 + ], + "worst_mean_abs": 3.42468860080713e-08, + "worst_max_relative": 0.0011668279736218238, + "worst_tolerance_ratio": 0.006803803623997096 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.8477439880371094e-06, + 0.00012600421905517578 + ], + "worst_mean_abs": 0.00012600421905517578, + "worst_max_relative": 3.385886794630645e-09, + "worst_tolerance_ratio": 3.385877696364994e-05 + }, + "forces": { + "comparisons": 27, + "failures": 3, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1194063337605087e-05, + 1.436469968041365e-05 + ], + "worst_mean_abs": 2.458732952715752e-06, + "worst_max_relative": 0.03892709076684017, + "worst_tolerance_ratio": 1.070192602964719 + }, + "virial": { + "comparisons": 27, + "failures": 4, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.543715625577761e-05, + 0.0003779306502913471 + ], + "worst_mean_abs": 0.00017990085929323976, + "worst_max_relative": 0.0002887789282391234, + "worst_tolerance_ratio": 2.4957782473375634 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.385731997101969e-09, + 1.6264204479401502e-08 + ], + "worst_mean_abs": 8.680635094222009e-09, + "worst_max_relative": 0.00026737989081494144, + "worst_tolerance_ratio": 0.001622492542696706 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.748603820800781e-07, + 0.00016123056411743164 + ], + "worst_mean_abs": 0.00016123056411743164, + "worst_max_relative": 4.332461598465538e-09, + "worst_tolerance_ratio": 4.332449956644914e-05 + }, + "forces": { + "comparisons": 81, + "failures": 7, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0853942410626871e-05, + 1.4841700647139078e-05 + ], + "worst_mean_abs": 2.4862790308349375e-06, + "worst_max_relative": 0.05708824944460159, + "worst_tolerance_ratio": 1.2309601439574103 + }, + "virial": { + "comparisons": 81, + "failures": 17, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.049950558890572e-05, + 0.00045035499156398373 + ], + "worst_mean_abs": 0.00022401151677886588, + "worst_max_relative": 0.0003109286363922743, + "worst_tolerance_ratio": 2.68721567005801 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.0339385644626363e-09, + 1.9380978138387826e-08 + ], + "worst_mean_abs": 1.0357143513510908e-08, + "worst_max_relative": 0.000303898822706633, + "worst_tolerance_ratio": 0.0019306574895340647 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0907649993896484e-05, + 0.00019240379333496094 + ], + "worst_mean_abs": 0.00019240379333496094, + "worst_max_relative": 5.170382017202529e-09, + "worst_tolerance_ratio": 5.170368123101013e-05 + }, + "forces": { + "comparisons": 27, + "failures": 1, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0792736174547457e-05, + 1.5634779444440028e-05 + ], + "worst_mean_abs": 2.4477460940651766e-06, + "worst_max_relative": 0.09132854786662761, + "worst_tolerance_ratio": 1.0342767261426666 + }, + "virial": { + "comparisons": 27, + "failures": 7, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.116369214850039e-05, + 0.0004466764672796941 + ], + "worst_mean_abs": 0.00022356648815025082, + "worst_max_relative": 0.00025547352396000937, + "worst_tolerance_ratio": 2.207912131909087 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.24012120407182e-09, + 1.9222673245376277e-08 + ], + "worst_mean_abs": 1.0527450065437097e-08, + "worst_max_relative": 0.0002486875788292611, + "worst_tolerance_ratio": 0.0019186729114243678 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.748603820800781e-07, + 0.0001665949821472168 + ], + "worst_mean_abs": 0.0001665949821472168, + "worst_max_relative": 4.476833249088737e-09, + "worst_tolerance_ratio": 4.476821218725143e-05 + }, + "forces": { + "comparisons": 81, + "failures": 4, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0643711750191187e-05, + 1.4799732036330226e-05 + ], + "worst_mean_abs": 2.4567402547756614e-06, + "worst_max_relative": 0.07865206332271063, + "worst_tolerance_ratio": 1.1947372866710348 + }, + "virial": { + "comparisons": 81, + "failures": 20, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.754667423678143e-05, + 0.0005897658155609165 + ], + "worst_mean_abs": 0.00024008286963100249, + "worst_max_relative": 0.00044594800309919163, + "worst_tolerance_ratio": 3.8539810485232375 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.1979105289569746e-09, + 2.5380507804397033e-08 + ], + "worst_mean_abs": 1.1873345159008154e-08, + "worst_max_relative": 0.0004391542337459121, + "worst_tolerance_ratio": 0.0025326079438563152 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.8014183044433594e-06, + 0.0001946091651916504 + ], + "worst_mean_abs": 0.0001946091651916504, + "worst_max_relative": 5.22935886678652e-09, + "worst_tolerance_ratio": 5.2293448149711035e-05 + }, + "forces": { + "comparisons": 27, + "failures": 3, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1175456462453326e-05, + 1.4239365577983776e-05 + ], + "worst_mean_abs": 2.4474194287229903e-06, + "worst_max_relative": 0.06953393608853117, + "worst_tolerance_ratio": 1.1638200031274741 + }, + "virial": { + "comparisons": 27, + "failures": 7, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.154431510882688e-05, + 0.00044061009040063936 + ], + "worst_mean_abs": 0.0002079444483583042, + "worst_max_relative": 0.00026667792929850934, + "worst_tolerance_ratio": 2.3048400437822814 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.9395996559400334e-09, + 1.8961607375390932e-08 + ], + "worst_mean_abs": 9.96632878796766e-09, + "worst_max_relative": 0.0002605595737708613, + "worst_tolerance_ratio": 0.001890471987509669 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1324882507324219e-06, + 0.00021332502365112305 + ], + "worst_mean_abs": 0.00021332502365112305, + "worst_max_relative": 5.732274234246999e-09, + "worst_tolerance_ratio": 5.732258831047206e-05 + }, + "forces": { + "comparisons": 81, + "failures": 6, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0752314853590406e-05, + 1.6048379860578166e-05 + ], + "worst_mean_abs": 2.448549739974039e-06, + "worst_max_relative": 0.12396052024542256, + "worst_tolerance_ratio": 1.2391513336603077 + }, + "virial": { + "comparisons": 81, + "failures": 30, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.212346994693974e-05, + 0.0005331623947109065 + ], + "worst_mean_abs": 0.00023868102035439086, + "worst_max_relative": 0.0004808419401470173, + "worst_tolerance_ratio": 4.155542380566938 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.673476780451836e-09, + 2.2944585737136856e-08 + ], + "worst_mean_abs": 1.2664086922733401e-08, + "worst_max_relative": 0.0004699970398725036, + "worst_tolerance_ratio": 0.002291857987906579 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.00015562772750854492, + 0.0004886984825134277 + ], + "worst_mean_abs": 0.0004886984825134277, + "worst_max_relative": 1.3132577943719885e-08, + "worst_tolerance_ratio": 0.00013132542653219472 + }, + "forces": { + "comparisons": 243, + "failures": 20, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0685349245420639e-05, + 1.6134124273037287e-05 + ], + "worst_mean_abs": 2.493033185283622e-06, + "worst_max_relative": 0.08439674425088922, + "worst_tolerance_ratio": 1.1697106315880632 + }, + "virial": { + "comparisons": 243, + "failures": 78, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.668388895685439e-05, + 0.0007157398284274308 + ], + "worst_mean_abs": 0.00029509961588406836, + "worst_max_relative": 0.00047794021979316885, + "worst_tolerance_ratio": 4.1304469108090816 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.3877826586902063e-09, + 3.0801785763119724e-08 + ], + "worst_mean_abs": 1.5466780632044995e-08, + "worst_max_relative": 0.00047225253323910537, + "worst_tolerance_ratio": 0.0030735722048295775 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.00017529726028442383, + 0.0005112290382385254 + ], + "worst_mean_abs": 0.0005112290382385254, + "worst_max_relative": 1.3737277371769992e-08, + "worst_tolerance_ratio": 0.00013737240458318604 + }, + "forces": { + "comparisons": 243, + "failures": 21, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.065964285373866e-05, + 1.554137586623483e-05 + ], + "worst_mean_abs": 2.4914368894602174e-06, + "worst_max_relative": 0.10524973492638194, + "worst_tolerance_ratio": 1.4022351898932843 + }, + "virial": { + "comparisons": 243, + "failures": 94, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.483044256595406e-05, + 0.0007942911280416354 + ], + "worst_mean_abs": 0.0002777342063700308, + "worst_max_relative": 0.0005132398482309293, + "worst_tolerance_ratio": 4.435512764644427 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.2203199667448987e-09, + 3.4182232408735275e-08 + ], + "worst_mean_abs": 1.554789537914143e-08, + "worst_max_relative": 0.0004981045287823025, + "worst_tolerance_ratio": 0.003405100740411258 + } + } + }, + { + "model": "Nano", + "n": 4096, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.384185791015625e-07, + 0.00020062923431396484 + ], + "worst_mean_abs": 0.00020062923431396484, + "worst_max_relative": 5.3911246379038345e-09, + "worst_tolerance_ratio": 5.3911101514074564e-05 + }, + "forces": { + "comparisons": 243, + "failures": 15, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.02046518826171e-05, + 1.521846776597613e-05 + ], + "worst_mean_abs": 2.470945554016275e-06, + "worst_max_relative": 0.11231483738954834, + "worst_tolerance_ratio": 1.1517999771437677 + }, + "virial": { + "comparisons": 243, + "failures": 65, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.7536436375606996e-05, + 0.0006358398978356661 + ], + "worst_mean_abs": 0.00030065613964300495, + "worst_max_relative": 0.00048124650276307635, + "worst_tolerance_ratio": 4.159038471811343 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.5011167210513335e-09, + 2.73633009299128e-08 + ], + "worst_mean_abs": 1.536817813195842e-08, + "worst_max_relative": 0.0004650053740359138, + "worst_tolerance_ratio": 0.002730462047462349 + } + } + }, + { + "model": "Neo", + "n": 96, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 1.2218952178955078e-05 + ], + "worst_mean_abs": 1.2218952178955078e-05, + "worst_max_relative": 1.404822983633357e-08, + "worst_tolerance_ratio": 0.0001404661488546509 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.5292873573334873e-06, + 4.929654927821048e-06 + ], + "worst_mean_abs": 9.513644862311272e-07, + "worst_max_relative": 0.004638674921668495, + "worst_tolerance_ratio": 0.3537013249195717 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.0508438630126875e-06, + 2.010897400595013e-05 + ], + "worst_mean_abs": 7.842652981537857e-06, + "worst_max_relative": 0.00011350374801169497, + "worst_tolerance_ratio": 0.5964842201451778 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.974929796926821e-09, + 3.692320050749376e-08 + ], + "worst_mean_abs": 1.7766511474894345e-08, + "worst_max_relative": 8.111371622246874e-05, + "worst_tolerance_ratio": 0.003170311293541825 + } + } + }, + { + "model": "Neo", + "n": 96, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 1.0907649993896484e-05 + ], + "worst_mean_abs": 1.0907649993896484e-05, + "worst_max_relative": 1.2540614945974921e-08, + "worst_tolerance_ratio": 0.00012539173306902614 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.5294066485770372e-06, + 4.593928606411168e-06 + ], + "worst_mean_abs": 1.0003936627330419e-06, + "worst_max_relative": 0.004339503857911654, + "worst_tolerance_ratio": 0.3511425680646685 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.7271542833460245e-06, + 2.2220180248666566e-05 + ], + "worst_mean_abs": 1.1087401216636206e-05, + "worst_max_relative": 8.600630514398132e-05, + "worst_tolerance_ratio": 0.4534556751249839 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.077670853381957e-09, + 4.0799703174970725e-08 + ], + "worst_mean_abs": 2.4422016910583103e-08, + "worst_max_relative": 6.374465611914683e-05, + "worst_tolerance_ratio": 0.00350315799506806 + } + } + }, + { + "model": "Neo", + "n": 96, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.76837158203125e-07, + 7.212162017822266e-06 + ], + "worst_mean_abs": 7.212162017822266e-06, + "worst_max_relative": 8.291143630737614e-09, + "worst_tolerance_ratio": 8.290190585579985e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.4827938513993786e-06, + 3.981072563163934e-06 + ], + "worst_mean_abs": 9.777332068374506e-07, + "worst_max_relative": 0.004440288137604662, + "worst_tolerance_ratio": 0.278601217027908 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.6638211956541156e-06, + 2.4433374484544856e-05 + ], + "worst_mean_abs": 9.550385732917973e-06, + "worst_max_relative": 4.886746289491028e-05, + "worst_tolerance_ratio": 0.353177576753191 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.932097300664948e-09, + 4.4863471646006126e-08 + ], + "worst_mean_abs": 2.2065013996264837e-08, + "worst_max_relative": 4.384046645584377e-05, + "worst_tolerance_ratio": 0.003854058436196056 + } + } + }, + { + "model": "Neo", + "n": 96, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 1.0728836059570312e-05 + ], + "worst_mean_abs": 1.0728836059570312e-05, + "worst_max_relative": 1.2333932776086958e-08, + "worst_tolerance_ratio": 0.000123325150229364 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.4367255804236265e-06, + 4.474008306942778e-06 + ], + "worst_mean_abs": 9.537310812961065e-07, + "worst_max_relative": 0.005140328988882451, + "worst_tolerance_ratio": 0.31414043594445706 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.8068621012743442e-06, + 1.9911717682674634e-05 + ], + "worst_mean_abs": 9.476242175997394e-06, + "worst_max_relative": 9.122276360290244e-05, + "worst_tolerance_ratio": 0.4794083101585252 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.350303640573207e-09, + 3.656100724946931e-08 + ], + "worst_mean_abs": 1.8846030457350677e-08, + "worst_max_relative": 8.536461382731986e-05, + "worst_tolerance_ratio": 0.00313559599726432 + } + } + }, + { + "model": "Neo", + "n": 96, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 6.556510925292969e-06 + ], + "worst_mean_abs": 6.556510925292969e-06, + "worst_max_relative": 7.537403330109736e-09, + "worst_tolerance_ratio": 7.536536925414215e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.617044103203625e-06, + 4.197491699997613e-06 + ], + "worst_mean_abs": 9.77104109840347e-07, + "worst_max_relative": 0.004000457046371659, + "worst_tolerance_ratio": 0.26161025256301196 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.9861532677699643e-06, + 2.1814021350152757e-05 + ], + "worst_mean_abs": 1.0821510995579548e-05, + "worst_max_relative": 9.056795597399559e-05, + "worst_tolerance_ratio": 0.47595535793391547 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.4830413438733405e-09, + 4.005393233405541e-08 + ], + "worst_mean_abs": 2.3015770961762566e-08, + "worst_max_relative": 8.482321180472642e-05, + "worst_tolerance_ratio": 0.0034408881038877166 + } + } + }, + { + "model": "Neo", + "n": 96, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 6.854534149169922e-06 + ], + "worst_mean_abs": 6.854534149169922e-06, + "worst_max_relative": 7.880714338394668e-09, + "worst_tolerance_ratio": 7.879808390337307e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.5448787361881386e-06, + 4.369367175627303e-06 + ], + "worst_mean_abs": 9.843346283348566e-07, + "worst_max_relative": 0.004802798257328448, + "worst_tolerance_ratio": 0.30042031099406397 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.8811353331169585e-06, + 2.689542427702918e-05 + ], + "worst_mean_abs": 9.74242767070526e-06, + "worst_max_relative": 9.847603378865328e-05, + "worst_tolerance_ratio": 0.5175141186055748 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.126367464888039e-09, + 4.938417757713309e-08 + ], + "worst_mean_abs": 2.4223898629488975e-08, + "worst_max_relative": 8.771776643027683e-05, + "worst_tolerance_ratio": 0.004224298251034028 + } + } + }, + { + "model": "Neo", + "n": 96, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 1.1146068572998047e-05 + ], + "worst_mean_abs": 1.1146068572998047e-05, + "worst_max_relative": 1.2813585553191252e-08, + "worst_tolerance_ratio": 0.00012812112665233692 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.6026129066613066e-06, + 7.195928248826533e-06 + ], + "worst_mean_abs": 1.4477289031709455e-06, + "worst_max_relative": 0.004991325563967691, + "worst_tolerance_ratio": 0.4027901830028564 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.558481747210294e-05, + 4.8242357078009945e-05 + ], + "worst_mean_abs": 1.2158569519076728e-05, + "worst_max_relative": 0.0001107223807077552, + "worst_tolerance_ratio": 0.581898930064548 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.8616146213050753e-08, + 8.858046277038234e-08 + ], + "worst_mean_abs": 2.6374452283337967e-08, + "worst_max_relative": 8.55277261950654e-05, + "worst_tolerance_ratio": 0.007609632671867497 + } + } + }, + { + "model": "Neo", + "n": 96, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 1.1265277862548828e-05 + ], + "worst_mean_abs": 1.1265277862548828e-05, + "worst_max_relative": 1.295178262959534e-08, + "worst_tolerance_ratio": 0.0001295029372367269 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.613759403719996e-06, + 7.184881916089125e-06 + ], + "worst_mean_abs": 1.4201382676375492e-06, + "worst_max_relative": 0.005425549393040054, + "worst_tolerance_ratio": 0.45396971138057834 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.3306026858117548e-05, + 5.232000050803265e-05 + ], + "worst_mean_abs": 1.2914638218675112e-05, + "worst_max_relative": 0.00011253864060446478, + "worst_tolerance_ratio": 0.5914123934500918 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.154417724775648e-08, + 9.606764963046577e-08 + ], + "worst_mean_abs": 3.12265389611832e-08, + "worst_max_relative": 9.652639817913324e-05, + "worst_tolerance_ratio": 0.0082528302796578 + } + } + }, + { + "model": "Neo", + "n": 96, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 1.0371208190917969e-05 + ], + "worst_mean_abs": 1.0371208190917969e-05, + "worst_max_relative": 1.1922801683550726e-08, + "worst_tolerance_ratio": 0.00011921431188838518 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.3042719448085336e-06, + 5.034495302425057e-06 + ], + "worst_mean_abs": 9.622074431785606e-07, + "worst_max_relative": 0.005548211410731083, + "worst_tolerance_ratio": 0.28875031754372155 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.398843617079649e-06, + 2.851101791456756e-05 + ], + "worst_mean_abs": 1.1119525284730085e-05, + "worst_max_relative": 0.0001097695367758418, + "worst_tolerance_ratio": 0.576860973356196 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.1074655978670087e-09, + 5.2350658506089554e-08 + ], + "worst_mean_abs": 2.598937128716781e-08, + "worst_max_relative": 9.69664565027601e-05, + "worst_tolerance_ratio": 0.0044972572878062165 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 1.7762184143066406e-05 + ], + "worst_mean_abs": 1.7762184143066406e-05, + "worst_max_relative": 3.829188468644499e-09, + "worst_tolerance_ratio": 3.82910592041666e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.427400763200694e-06, + 4.335941255817488e-06 + ], + "worst_mean_abs": 9.144892737437244e-07, + "worst_max_relative": 0.018906077111008578, + "worst_tolerance_ratio": 0.318925089142661 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.2780282560242995e-05, + 5.25371857449386e-05 + ], + "worst_mean_abs": 2.2919353829019427e-05, + "worst_max_relative": 5.7882349597817864e-05, + "worst_tolerance_ratio": 0.46742973447334546 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.298465968582965e-09, + 1.808745665049516e-08 + ], + "worst_mean_abs": 8.858438984221196e-09, + "worst_max_relative": 5.1156819634236265e-05, + "worst_tolerance_ratio": 0.0015417467118525852 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.172325134277344e-07, + 1.7344951629638672e-05 + ], + "worst_mean_abs": 1.7344951629638672e-05, + "worst_max_relative": 3.739241074190296e-09, + "worst_tolerance_ratio": 3.739160465015406e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.283364435446856e-06, + 4.900746524150179e-06 + ], + "worst_mean_abs": 9.334273422814792e-07, + "worst_max_relative": 0.017695128956907856, + "worst_tolerance_ratio": 0.3491892943398163 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.085839140824163e-05, + 6.951064172966426e-05 + ], + "worst_mean_abs": 3.013974799712413e-05, + "worst_max_relative": 0.0001055834911299927, + "worst_tolerance_ratio": 0.7339908797563544 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5445477247764146e-09, + 2.3931063321963597e-08 + ], + "worst_mean_abs": 1.3185932999421873e-08, + "worst_max_relative": 8.742986547148492e-05, + "worst_tolerance_ratio": 0.0020413753946800953 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 2.2470951080322266e-05 + ], + "worst_mean_abs": 2.2470951080322266e-05, + "worst_max_relative": 4.84455234896984e-09, + "worst_tolerance_ratio": 4.844447906654952e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.2616043270650152e-06, + 4.2864338993808815e-06 + ], + "worst_mean_abs": 8.94615656465279e-07, + "worst_max_relative": 0.017716756706837183, + "worst_tolerance_ratio": 0.27511285455721096 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.83955252359192e-06, + 6.507779394837598e-05 + ], + "worst_mean_abs": 2.8161610837579903e-05, + "worst_max_relative": 8.679887592713785e-05, + "worst_tolerance_ratio": 0.6033989060368864 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.6989943301136687e-09, + 2.240492634475455e-08 + ], + "worst_mean_abs": 1.206478670899193e-08, + "worst_max_relative": 7.970815172973479e-05, + "worst_tolerance_ratio": 0.0019189589690238615 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 1.8894672393798828e-05 + ], + "worst_mean_abs": 1.8894672393798828e-05, + "worst_max_relative": 4.073536063149886e-09, + "worst_tolerance_ratio": 4.0734482429539425e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.9958431078114245e-06, + 5.1440937340885284e-06 + ], + "worst_mean_abs": 9.098327789316442e-07, + "worst_max_relative": 0.018535814732356635, + "worst_tolerance_ratio": 0.3126179764081435 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.897232724791593e-06, + 6.434127831767e-05 + ], + "worst_mean_abs": 2.7364363403337144e-05, + "worst_max_relative": 7.255305327160125e-05, + "worst_tolerance_ratio": 0.504366358505257 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.5892697573699774e-09, + 2.2151359382188707e-08 + ], + "worst_mean_abs": 1.253871189090708e-08, + "worst_max_relative": 6.572729999351975e-05, + "worst_tolerance_ratio": 0.0018927295164782754 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.5367431640625e-07, + 1.8835067749023438e-05 + ], + "worst_mean_abs": 1.8835067749023438e-05, + "worst_max_relative": 4.060685795414326e-09, + "worst_tolerance_ratio": 4.0605982522535385e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.293424150285773e-06, + 5.011788701381192e-06 + ], + "worst_mean_abs": 8.992570804752136e-07, + "worst_max_relative": 0.015306950250063706, + "worst_tolerance_ratio": 0.3634722969117152 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.156022969136757e-06, + 5.707762103668301e-05 + ], + "worst_mean_abs": 1.8265438981016995e-05, + "worst_max_relative": 0.00012189299473723883, + "worst_tolerance_ratio": 0.8473274248267979 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.152227628228088e-09, + 1.965063376602183e-08 + ], + "worst_mean_abs": 7.778489054503841e-09, + "worst_max_relative": 0.0001183785695034749, + "worst_tolerance_ratio": 0.001674989401510884 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 2.0563602447509766e-05 + ], + "worst_mean_abs": 2.0563602447509766e-05, + "worst_max_relative": 4.4331208674764416e-09, + "worst_tolerance_ratio": 4.43302529989769e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.1372686404296246e-06, + 4.858382652628279e-06 + ], + "worst_mean_abs": 9.320082240711654e-07, + "worst_max_relative": 0.0167894475829446, + "worst_tolerance_ratio": 0.3378793114669307 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.6684490345192415e-06, + 5.049415267421864e-05 + ], + "worst_mean_abs": 2.5206955907895888e-05, + "worst_max_relative": 0.00011991410497712602, + "worst_tolerance_ratio": 0.8394078854081234 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.0460255383924868e-09, + 1.7384082999505335e-08 + ], + "worst_mean_abs": 9.031922037427639e-09, + "worst_max_relative": 0.00011500687150777846, + "worst_tolerance_ratio": 0.0014815460833546067 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 2.0205974578857422e-05 + ], + "worst_mean_abs": 2.0205974578857422e-05, + "worst_max_relative": 4.356242051604898e-09, + "worst_tolerance_ratio": 4.356148136631275e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.529152009880022e-06, + 7.149812793372234e-06 + ], + "worst_mean_abs": 1.3536651946457659e-06, + "worst_max_relative": 0.022872856132809344, + "worst_tolerance_ratio": 0.4813565047307696 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.708220871904814e-05, + 0.00016725678142393008 + ], + "worst_mean_abs": 4.205178830355797e-05, + "worst_max_relative": 0.00011873427802482379, + "worst_tolerance_ratio": 0.8254119678366996 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.6537795828895927e-08, + 5.758301935276933e-08 + ], + "worst_mean_abs": 1.889780836511542e-08, + "worst_max_relative": 0.0001091309144688209, + "worst_tolerance_ratio": 0.00491758534179724 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.980232238769531e-07, + 2.7179718017578125e-05 + ], + "worst_mean_abs": 2.7179718017578125e-05, + "worst_max_relative": 5.8594293121332474e-09, + "worst_tolerance_ratio": 5.8593029967251716e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.555126722038949e-06, + 7.020447078787129e-06 + ], + "worst_mean_abs": 1.3389772814401963e-06, + "worst_max_relative": 0.02400818458735864, + "worst_tolerance_ratio": 0.5356584360109251 + }, + "virial": { + "comparisons": 243, + "failures": 2, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.569360052173124e-05, + 0.00015715494699009014 + ], + "worst_mean_abs": 4.4880694042700085e-05, + "worst_max_relative": 0.0001554837969614128, + "worst_tolerance_ratio": 1.0808857303179955 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.605972700478465e-08, + 5.410516857110026e-08 + ], + "worst_mean_abs": 1.9109752850621155e-08, + "worst_max_relative": 0.00014721535521835527, + "worst_tolerance_ratio": 0.004632534286840701 + } + } + }, + { + "model": "Neo", + "n": 512, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 2.6702880859375e-05 + ], + "worst_mean_abs": 2.6702880859375e-05, + "worst_max_relative": 5.756921624240023e-09, + "worst_tolerance_ratio": 5.756797512417556e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.0754503761443175e-06, + 5.255080772315068e-06 + ], + "worst_mean_abs": 9.188198455767244e-07, + "worst_max_relative": 0.027445525724539704, + "worst_tolerance_ratio": 0.4261850547390301 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.7599335786241426e-06, + 7.743412051297582e-05 + ], + "worst_mean_abs": 2.853425311467718e-05, + "worst_max_relative": 0.00012354956861375534, + "worst_tolerance_ratio": 0.8588783408376042 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1864424477592284e-09, + 2.665895171283239e-08 + ], + "worst_mean_abs": 1.2097592506892194e-08, + "worst_max_relative": 0.0001177937131510333, + "worst_tolerance_ratio": 0.0022723680189137402 + } + } + }, + { + "model": "Neo", + "n": 4096, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 5.08427619934082e-05 + ], + "worst_mean_abs": 5.08427619934082e-05, + "worst_max_relative": 1.3700321891459192e-09, + "worst_tolerance_ratio": 1.3700284974048178e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.915427782885672e-06, + 5.114278932794036e-06 + ], + "worst_mean_abs": 9.186026505361055e-07, + "worst_max_relative": 0.037242456654630066, + "worst_tolerance_ratio": 0.36107785617188165 + }, + "virial": { + "comparisons": 27, + "failures": 2, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.3309498260459804e-05, + 0.00010367074635553308 + ], + "worst_mean_abs": 5.083718067538317e-05, + "worst_max_relative": 0.0002291365517767142, + "worst_tolerance_ratio": 1.3471720183889224 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0031217245742852e-09, + 4.283833721779873e-09 + ], + "worst_mean_abs": 2.279572139351011e-09, + "worst_max_relative": 0.00018932378638784696, + "worst_tolerance_ratio": 0.0004087125961507865 + } + } + }, + { + "model": "Neo", + "n": 4096, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.364418029785156e-07, + 5.9604644775390625e-05 + ], + "worst_mean_abs": 5.9604644775390625e-05, + "worst_max_relative": 1.6061330316797209e-09, + "worst_tolerance_ratio": 1.6061287037345177e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.0948989976641315e-06, + 5.564418060544085e-06 + ], + "worst_mean_abs": 9.26793319666477e-07, + "worst_max_relative": 0.049875477215640195, + "worst_tolerance_ratio": 0.41762313578711746 + }, + "virial": { + "comparisons": 81, + "failures": 6, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.7252726829463114e-05, + 0.0001373957031773898 + ], + "worst_mean_abs": 5.8231764420583566e-05, + "worst_max_relative": 0.00030425217658329874, + "worst_tolerance_ratio": 1.7885781846679256 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0660602954603356e-09, + 5.912809162428312e-09 + ], + "worst_mean_abs": 2.9793355688615886e-09, + "worst_max_relative": 0.0002776876519645893, + "worst_tolerance_ratio": 0.0005049693455950091 + } + } + }, + { + "model": "Neo", + "n": 4096, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.086162567138672e-06, + 5.7697296142578125e-05 + ], + "worst_mean_abs": 5.7697296142578125e-05, + "worst_max_relative": 1.5548172659016425e-09, + "worst_tolerance_ratio": 1.554813076016886e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.086715442941369e-06, + 5.089025183480089e-06 + ], + "worst_mean_abs": 9.298713924207309e-07, + "worst_max_relative": 0.04440750951237683, + "worst_tolerance_ratio": 0.4234762051302419 + }, + "virial": { + "comparisons": 27, + "failures": 5, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.9670212629516755e-05, + 0.00020986385868582147 + ], + "worst_mean_abs": 6.567990549472608e-05, + "worst_max_relative": 0.00045811365137326274, + "worst_tolerance_ratio": 2.6929110870910753 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7072032884590804e-09, + 9.031468357900696e-09 + ], + "worst_mean_abs": 3.847879343438127e-09, + "worst_max_relative": 0.0004174495165776738, + "worst_tolerance_ratio": 0.0007720459370222041 + } + } + }, + { + "model": "Neo", + "n": 4096, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 5.78761100769043e-05 + ], + "worst_mean_abs": 5.78761100769043e-05, + "worst_max_relative": 1.559635916885455e-09, + "worst_tolerance_ratio": 1.5596317140155054e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.009501395785264e-06, + 5.938536422167573e-06 + ], + "worst_mean_abs": 9.275980505388126e-07, + "worst_max_relative": 0.05585281718316354, + "worst_tolerance_ratio": 0.44091870727929816 + }, + "virial": { + "comparisons": 81, + "failures": 18, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.29303353385113e-05, + 0.0002537444477184181 + ], + "worst_mean_abs": 9.976814462481837e-05, + "worst_max_relative": 0.0005891330742042511, + "worst_tolerance_ratio": 3.4630773008858435 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.575273715942522e-10, + 1.0919864741609775e-08 + ], + "worst_mean_abs": 5.683249691617134e-09, + "worst_max_relative": 0.0005782759514414551, + "worst_tolerance_ratio": 0.0009334736788613724 + } + } + }, + { + "model": "Neo", + "n": 4096, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": false, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 6.693601608276367e-05 + ], + "worst_mean_abs": 6.693601608276367e-05, + "worst_max_relative": 1.8036873974732883e-09, + "worst_tolerance_ratio": 1.80368253719081e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.073811581406517e-06, + 6.2081149110326805e-06 + ], + "worst_mean_abs": 9.266616302005236e-07, + "worst_max_relative": 0.06860870172794904, + "worst_tolerance_ratio": 0.46170119715108426 + }, + "virial": { + "comparisons": 243, + "failures": 33, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7924468062702203e-05, + 0.0001882653359075448 + ], + "worst_mean_abs": 8.125173311295746e-05, + "worst_max_relative": 0.0004754305218507936, + "worst_tolerance_ratio": 2.7952603392726663 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.963430570008922e-10, + 8.101978279245747e-09 + ], + "worst_mean_abs": 4.415866778949078e-09, + "worst_max_relative": 0.0004608722621165524, + "worst_tolerance_ratio": 0.0006931252394082947 + } + } + }, + { + "model": "NeoCu", + "n": 96, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 3.337860107421875e-06 + ], + "worst_mean_abs": 3.337860107421875e-06, + "worst_max_relative": 9.387703144991008e-09, + "worst_tolerance_ratio": 9.385063603839662e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.603340882341044e-07, + 5.453217322148873e-07 + ], + "worst_mean_abs": 1.2231355189255986e-07, + "worst_max_relative": 0.014413295870270078, + "worst_tolerance_ratio": 0.04185776740797862 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7235392428815999e-06, + 1.3611812271108192e-05 + ], + "worst_mean_abs": 4.100782198551238e-06, + "worst_max_relative": 0.0011890083586013282, + "worst_tolerance_ratio": 0.1449666622847656 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.518917719031676e-09, + 1.1995794666624926e-08 + ], + "worst_mean_abs": 5.121453844865385e-09, + "worst_max_relative": 0.0011639913807204331, + "worst_tolerance_ratio": 0.001124576249662266 + } + } + }, + { + "model": "NeoCu", + "n": 96, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 3.635883331298828e-06 + ], + "worst_mean_abs": 3.635883331298828e-06, + "worst_max_relative": 1.0223301491938032e-08, + "worst_tolerance_ratio": 0.00010220427733223225 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.2799418292484006e-07, + 6.305868902600764e-07 + ], + "worst_mean_abs": 1.2763819215935954e-07, + "worst_max_relative": 0.021009965921732328, + "worst_tolerance_ratio": 0.04455900588406337 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.2891653931035307e-06, + 1.2289718489988388e-05 + ], + "worst_mean_abs": 4.191015149112514e-06, + "worst_max_relative": 0.0014460248280207862, + "worst_tolerance_ratio": 0.1805156305652802 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.134031962722582e-09, + 1.0830662117156109e-08 + ], + "worst_mean_abs": 5.270114842173079e-09, + "worst_max_relative": 0.0014073390993566092, + "worst_tolerance_ratio": 0.001016364146873507 + } + } + }, + { + "model": "NeoCu", + "n": 96, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 4.291534423828125e-06 + ], + "worst_mean_abs": 4.291534423828125e-06, + "worst_max_relative": 1.2069853791371217e-08, + "worst_tolerance_ratio": 0.00012066460123859992 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.6738872566388636e-07, + 6.496374638231828e-07 + ], + "worst_mean_abs": 1.347294933191362e-07, + "worst_max_relative": 0.02395454902527084, + "worst_tolerance_ratio": 0.04730685370183541 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0583740648328899e-06, + 1.3146793585327998e-05 + ], + "worst_mean_abs": 4.811204114116439e-06, + "worst_max_relative": 0.0015135687867966117, + "worst_tolerance_ratio": 0.2354699323626993 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.327220879332132e-10, + 1.1585983793020727e-08 + ], + "worst_mean_abs": 5.903944202335064e-09, + "worst_max_relative": 0.0014869001338011958, + "worst_tolerance_ratio": 0.001089458603645757 + } + } + }, + { + "model": "NeoCu", + "n": 96, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 4.589557647705078e-06 + ], + "worst_mean_abs": 4.589557647705078e-06, + "worst_max_relative": 1.2908038093257978e-08, + "worst_tolerance_ratio": 0.00012904408754385726 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.296416863918239e-07, + 5.808357812497889e-07 + ], + "worst_mean_abs": 1.2698716139386923e-07, + "worst_max_relative": 0.023987935195441422, + "worst_tolerance_ratio": 0.05514590105519243 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0860511006072215e-06, + 1.6633662934140148e-05 + ], + "worst_mean_abs": 5.2062486210834805e-06, + "worst_max_relative": 0.0016370861733179276, + "worst_tolerance_ratio": 0.24658545260361903 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.27673764971732e-10, + 1.4658886056395648e-08 + ], + "worst_mean_abs": 6.625731204720302e-09, + "worst_max_relative": 0.0016134046798247329, + "worst_tolerance_ratio": 0.0013784111351993187 + } + } + }, + { + "model": "NeoCu", + "n": 96, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 4.291534423828125e-06 + ], + "worst_mean_abs": 4.291534423828125e-06, + "worst_max_relative": 1.206985384397838e-08, + "worst_tolerance_ratio": 0.00012066460176437575 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.4671262172381034e-07, + 5.431147798162783e-07 + ], + "worst_mean_abs": 1.2687604104948588e-07, + "worst_max_relative": 0.01709900025261547, + "worst_tolerance_ratio": 0.04337880828949909 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.491120692698189e-06, + 1.2040890265296866e-05 + ], + "worst_mean_abs": 4.0279049594459255e-06, + "worst_max_relative": 0.0017494123990378688, + "worst_tolerance_ratio": 0.21336905339024131 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.3140922967835866e-09, + 1.0611375203875562e-08 + ], + "worst_mean_abs": 5.123438694725654e-09, + "worst_max_relative": 0.0017482007863549084, + "worst_tolerance_ratio": 0.0009978137468379467 + } + } + }, + { + "model": "NeoCu", + "n": 96, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 4.410743713378906e-06 + ], + "worst_mean_abs": 4.410743713378906e-06, + "worst_max_relative": 1.2402037673849288e-08, + "worst_tolerance_ratio": 0.00012398551474865973 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5811243659367165e-07, + 6.475954030804587e-07 + ], + "worst_mean_abs": 1.2856714062077154e-07, + "worst_max_relative": 0.015716261612875735, + "worst_tolerance_ratio": 0.04525081094634458 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.126193800668148e-07, + 1.7394910315715606e-05 + ], + "worst_mean_abs": 5.815984247047354e-06, + "worst_max_relative": 0.0021084357094776573, + "worst_tolerance_ratio": 0.2575759853369004 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.042716484121804e-10, + 1.5329756848474207e-08 + ], + "worst_mean_abs": 7.130575031860604e-09, + "worst_max_relative": 0.002071330097824888, + "worst_tolerance_ratio": 0.001441494730564129 + } + } + }, + { + "model": "NeoCu", + "n": 96, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 6.854534149169922e-06 + ], + "worst_mean_abs": 6.854534149169922e-06, + "worst_max_relative": 1.9278238833516216e-08, + "worst_tolerance_ratio": 0.0001927281839227432 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.359976137318199e-07, + 6.390974816028461e-07 + ], + "worst_mean_abs": 1.3796984636017152e-07, + "worst_max_relative": 0.024653551579825565, + "worst_tolerance_ratio": 0.051324303386818274 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.2168759291906213e-06, + 2.7073034554625508e-05 + ], + "worst_mean_abs": 9.457971914917126e-06, + "worst_max_relative": 0.0015556707672518405, + "worst_tolerance_ratio": 0.20371499729246323 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.8349629241364305e-09, + 2.3858877645256682e-08 + ], + "worst_mean_abs": 1.2009053561857884e-08, + "worst_max_relative": 0.0015275820433286417, + "worst_tolerance_ratio": 0.002238949711566482 + } + } + }, + { + "model": "NeoCu", + "n": 96, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 5.781650543212891e-06 + ], + "worst_mean_abs": 5.781650543212891e-06, + "worst_max_relative": 1.6256725323245722e-08, + "worst_tolerance_ratio": 0.00016252155575781195 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.373516843652169e-07, + 6.296695502783223e-07 + ], + "worst_mean_abs": 1.4281828743606972e-07, + "worst_max_relative": 0.02332282156099186, + "worst_tolerance_ratio": 0.05453718641189718 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.8049525175054555e-06, + 2.837004379507846e-05 + ], + "worst_mean_abs": 1.0180676162035378e-05, + "worst_max_relative": 0.0020108449881975177, + "worst_tolerance_ratio": 0.2451668940779786 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.353222055059446e-09, + 2.5001903733098962e-08 + ], + "worst_mean_abs": 1.2767175971490336e-08, + "worst_max_relative": 0.0019795647905895514, + "worst_tolerance_ratio": 0.002351220132366733 + } + } + }, + { + "model": "NeoCu", + "n": 96, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 5.841255187988281e-06 + ], + "worst_mean_abs": 5.841255187988281e-06, + "worst_max_relative": 1.6428411906633407e-08, + "worst_tolerance_ratio": 0.00016423792748187949 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.035816975582861e-07, + 6.730010237987472e-07 + ], + "worst_mean_abs": 1.4354842903935294e-07, + "worst_max_relative": 0.02265629703191189, + "worst_tolerance_ratio": 0.05525811171316592 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.077212428261646e-07, + 1.9680935952948175e-05 + ], + "worst_mean_abs": 6.710245181822425e-06, + "worst_max_relative": 0.0020749235075072044, + "worst_tolerance_ratio": 0.26893210810620133 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.474437096876893e-10, + 1.7344381617566407e-08 + ], + "worst_mean_abs": 8.442273890455449e-09, + "worst_max_relative": 0.0020680346161809867, + "worst_tolerance_ratio": 0.001630935117326457 + } + } + }, + { + "model": "NeoCu", + "n": 512, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 1.1146068572998047e-05 + ], + "worst_mean_abs": 1.1146068572998047e-05, + "worst_max_relative": 5.877785093370146e-09, + "worst_tolerance_ratio": 5.877475149683767e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.107106263973037e-07, + 5.963112763573974e-07 + ], + "worst_mean_abs": 1.1743892148636799e-07, + "worst_max_relative": 0.0053673515808619135, + "worst_tolerance_ratio": 0.05208105568148335 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5518841343673557e-06, + 3.15106425432532e-05 + ], + "worst_mean_abs": 1.0221947037059956e-05, + "worst_max_relative": 0.00010352699539626582, + "worst_tolerance_ratio": 0.28950558312751407 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.869121967941315e-10, + 5.206808480900937e-09 + ], + "worst_mean_abs": 2.384344797843625e-09, + "worst_max_relative": 0.0001017665241122064, + "worst_tolerance_ratio": 0.0004883054115106531 + } + } + }, + { + "model": "NeoCu", + "n": 512, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.5762786865234375e-07, + 1.138448715209961e-05 + ], + "worst_mean_abs": 1.138448715209961e-05, + "worst_max_relative": 6.003620527364496e-09, + "worst_tolerance_ratio": 6.0033039425390225e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.1376127146719455e-07, + 6.573115953756314e-07 + ], + "worst_mean_abs": 1.1678100456382933e-07, + "worst_max_relative": 0.005276007835822787, + "worst_tolerance_ratio": 0.048913021545003856 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.8131674897347025e-06, + 4.521339540985991e-05 + ], + "worst_mean_abs": 1.5693800227182624e-05, + "worst_max_relative": 8.388719918786369e-05, + "worst_tolerance_ratio": 0.2794011691181738 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.1744111731753866e-10, + 7.471046975515705e-09 + ], + "worst_mean_abs": 3.778424898674656e-09, + "worst_max_relative": 7.658611318126762e-05, + "worst_tolerance_ratio": 0.0007006078487645964 + } + } + }, + { + "model": "NeoCu", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 8.344650268554688e-06 + ], + "worst_mean_abs": 8.344650268554688e-06, + "worst_max_relative": 4.4002004176045945e-09, + "worst_tolerance_ratio": 4.399968403773162e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.175873637990435e-07, + 5.775226235016362e-07 + ], + "worst_mean_abs": 1.211461345555638e-07, + "worst_max_relative": 0.0035782661678465623, + "worst_tolerance_ratio": 0.05232249797086353 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.064900046785169e-06, + 3.113628248740952e-05 + ], + "worst_mean_abs": 1.0315900184776967e-05, + "worst_max_relative": 0.00010042974268047074, + "worst_tolerance_ratio": 0.32752071762355717 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.576605078055585e-10, + 5.144949345899097e-09 + ], + "worst_mean_abs": 2.421841932135582e-09, + "worst_max_relative": 9.702933443299709e-05, + "worst_tolerance_ratio": 0.0004823225740989872 + } + } + }, + { + "model": "NeoCu", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 1.0073184967041016e-05 + ], + "worst_mean_abs": 1.0073184967041016e-05, + "worst_max_relative": 5.311670480735989e-09, + "worst_tolerance_ratio": 5.311390406899081e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.1842805043046383e-07, + 6.110117141133742e-07 + ], + "worst_mean_abs": 1.1789367902494661e-07, + "worst_max_relative": 0.004817227625421422, + "worst_tolerance_ratio": 0.05191983448375784 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.9069586013054085e-06, + 3.1370506661687614e-05 + ], + "worst_mean_abs": 1.0523868457259747e-05, + "worst_max_relative": 0.00011526278236160715, + "worst_tolerance_ratio": 0.3758987902961369 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.1243287644533435e-10, + 5.183652472540157e-09 + ], + "worst_mean_abs": 2.4648348368603244e-09, + "worst_max_relative": 0.000114406599295979, + "worst_tolerance_ratio": 0.00048620113234803603 + } + } + }, + { + "model": "NeoCu", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.556510925292969e-07, + 6.556510925292969e-06 + ], + "worst_mean_abs": 6.556510925292969e-06, + "worst_max_relative": 3.457582509191494e-09, + "worst_tolerance_ratio": 3.457400182851528e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.320181652417432e-07, + 7.186203347941955e-07 + ], + "worst_mean_abs": 1.1659641726541625e-07, + "worst_max_relative": 0.0031715522043012003, + "worst_tolerance_ratio": 0.05292413235863578 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.1822387736847304e-06, + 4.6521699900381464e-05 + ], + "worst_mean_abs": 1.5115027282477933e-05, + "worst_max_relative": 8.79457568355308e-05, + "worst_tolerance_ratio": 0.28680438757981064 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.6059243611885616e-10, + 7.687230791156296e-09 + ], + "worst_mean_abs": 3.643539780216366e-09, + "worst_max_relative": 8.692134893962965e-05, + "worst_tolerance_ratio": 0.0007206533735429723 + } + } + }, + { + "model": "NeoCu", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 1.0848045349121094e-05 + ], + "worst_mean_abs": 1.0848045349121094e-05, + "worst_max_relative": 5.7206250080347055e-09, + "worst_tolerance_ratio": 5.720323351618585e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.2076461781448415e-07, + 6.428193619623102e-07 + ], + "worst_mean_abs": 1.192275684779722e-07, + "worst_max_relative": 0.003298577107261946, + "worst_tolerance_ratio": 0.048074827657832116 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.016424886619461e-06, + 4.70206891876046e-05 + ], + "worst_mean_abs": 1.6544769902729043e-05, + "worst_max_relative": 0.00014773537034582152, + "worst_tolerance_ratio": 0.4818061368850836 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.3319340255605345e-10, + 7.769683620442724e-09 + ], + "worst_mean_abs": 3.891767299325177e-09, + "worst_max_relative": 0.00014716854758851908, + "worst_tolerance_ratio": 0.0007287614303245415 + } + } + }, + { + "model": "NeoCu", + "n": 512, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 1.919269561767578e-05 + ], + "worst_mean_abs": 1.919269561767578e-05, + "worst_max_relative": 1.0120461018382242e-08, + "worst_tolerance_ratio": 0.00010119927386563841 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.1750117674155263e-07, + 7.356539653002869e-07 + ], + "worst_mean_abs": 1.2385244442982143e-07, + "worst_max_relative": 0.005294125044255709, + "worst_tolerance_ratio": 0.05495196487330043 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.215744266389265e-05, + 0.00011300295488325673 + ], + "worst_mean_abs": 3.624492555988037e-05, + "worst_max_relative": 0.00013083896368166738, + "worst_tolerance_ratio": 0.3658814817475812 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.966082322958089e-09, + 1.8672572071019855e-08 + ], + "worst_mean_abs": 8.915879917786458e-09, + "worst_max_relative": 0.00012211572201857384, + "worst_tolerance_ratio": 0.0017514036264211267 + } + } + }, + { + "model": "NeoCu", + "n": 512, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 1.8596649169921875e-05 + ], + "worst_mean_abs": 1.8596649169921875e-05, + "worst_max_relative": 9.806785824232543e-09, + "worst_tolerance_ratio": 9.806268698937622e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 4.282412255918189e-07, + 7.157671120250342e-07 + ], + "worst_mean_abs": 1.2546263058012418e-07, + "worst_max_relative": 0.0047400067164323455, + "worst_tolerance_ratio": 0.05862016534074166 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.794910463739143e-05, + 0.0001294595756107242 + ], + "worst_mean_abs": 4.162435368555706e-05, + "worst_max_relative": 0.00011977139161913252, + "worst_tolerance_ratio": 0.3641474434733433 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.270697895834065e-09, + 2.1391858808644804e-08 + ], + "worst_mean_abs": 1.019852898909514e-08, + "worst_max_relative": 0.00011518540837933836, + "worst_tolerance_ratio": 0.00200646054281385 + } + } + }, + { + "model": "NeoCu", + "n": 512, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 1.0728836059570312e-05 + ], + "worst_mean_abs": 1.0728836059570312e-05, + "worst_max_relative": 5.657400512026497e-09, + "worst_tolerance_ratio": 5.657102208531566e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.9287351683015004e-07, + 6.560103198438583e-07 + ], + "worst_mean_abs": 1.1942432717237903e-07, + "worst_max_relative": 0.004286677320818938, + "worst_tolerance_ratio": 0.05951665334151016 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.8948397236817627e-06, + 4.980984847691161e-05 + ], + "worst_mean_abs": 1.5695328310453654e-05, + "worst_max_relative": 0.00013944962456630087, + "worst_tolerance_ratio": 0.45474128253398055 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.8011796038924976e-10, + 8.230563408768987e-09 + ], + "worst_mean_abs": 3.7044910034442645e-09, + "worst_max_relative": 0.00013802417200476117, + "worst_tolerance_ratio": 0.0007715890777891485 + } + } + }, + { + "model": "NeoCu", + "n": 4096, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.344650268554688e-07, + 1.6868114471435547e-05 + ], + "worst_mean_abs": 1.6868114471435547e-05, + "worst_max_relative": 1.1118675869841216e-09, + "worst_tolerance_ratio": 1.1118602581188573e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.198577550658001e-07, + 6.523089182142172e-07 + ], + "worst_mean_abs": 1.1705365499733181e-07, + "worst_max_relative": 0.013808565632325229, + "worst_tolerance_ratio": 0.05643189665981057 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.247451492276014e-06, + 8.839134801519322e-05 + ], + "worst_mean_abs": 3.318352369609102e-05, + "worst_max_relative": 4.19216195157892e-05, + "worst_tolerance_ratio": 0.31631215552236935 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.4969582084328747e-10, + 1.8257197541976522e-09 + ], + "worst_mean_abs": 9.466844892228734e-10, + "worst_max_relative": 4.1485054570357104e-05, + "worst_tolerance_ratio": 0.00017126096410469033 + } + } + }, + { + "model": "NeoCu", + "n": 4096, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 2.5987625122070312e-05 + ], + "worst_mean_abs": 2.5987625122070312e-05, + "worst_max_relative": 1.7129832807918087e-09, + "worst_tolerance_ratio": 1.7129719896778072e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.038476720287122e-07, + 7.151922281067868e-07 + ], + "worst_mean_abs": 1.1667019861757176e-07, + "worst_max_relative": 0.02380104229337698, + "worst_tolerance_ratio": 0.06037224690079802 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.797715508990223e-06, + 0.0001036179495486067 + ], + "worst_mean_abs": 3.5391919110160254e-05, + "worst_max_relative": 4.2301515805200086e-05, + "worst_tolerance_ratio": 0.31020132206749096 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.817164613227007e-10, + 2.1402245999752045e-09 + ], + "worst_mean_abs": 1.043199148082719e-09, + "worst_max_relative": 4.1547514439846706e-05, + "worst_tolerance_ratio": 0.0002008022193994886 + } + } + }, + { + "model": "NeoCu", + "n": 4096, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.152557373046875e-07, + 4.1484832763671875e-05 + ], + "worst_mean_abs": 4.1484832763671875e-05, + "worst_max_relative": 2.734478417798953e-09, + "worst_tolerance_ratio": 2.73446039356592e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.220726961852051e-07, + 7.069169214446447e-07 + ], + "worst_mean_abs": 1.2005505194822093e-07, + "worst_max_relative": 0.02165367259240405, + "worst_tolerance_ratio": 0.06531002201709425 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.660116725758613e-06, + 7.616201372684372e-05 + ], + "worst_mean_abs": 2.8776430142035065e-05, + "worst_max_relative": 3.408173033358508e-05, + "worst_tolerance_ratio": 0.2690908709817978 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.913003057304692e-11, + 1.5731233442631276e-09 + ], + "worst_mean_abs": 8.32516877590782e-10, + "worst_max_relative": 3.381105358243203e-05, + "worst_tolerance_ratio": 0.00014759508363390849 + } + } + }, + { + "model": "NeoCu", + "n": 4096, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 3.790855407714844e-05 + ], + "worst_mean_abs": 3.790855407714844e-05, + "worst_max_relative": 2.4987475259565756e-09, + "worst_tolerance_ratio": 2.4987310555366528e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.172098012096171e-07, + 6.890018813265897e-07 + ], + "worst_mean_abs": 1.2078314314404485e-07, + "worst_max_relative": 0.018827515090961595, + "worst_tolerance_ratio": 0.06404717411065457 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.123486281874648e-06, + 0.0001054278984611301 + ], + "worst_mean_abs": 3.637237150618441e-05, + "worst_max_relative": 4.3181451647683356e-05, + "worst_tolerance_ratio": 0.3652206974265682 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.6779028340352387e-10, + 2.1776090210548493e-09 + ], + "worst_mean_abs": 1.0834409821289943e-09, + "worst_max_relative": 4.219810877210716e-05, + "worst_tolerance_ratio": 0.00020433801630082788 + } + } + }, + { + "model": "NeoCu", + "n": 4096, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7881393432617188e-07, + 2.777576446533203e-05 + ], + "worst_mean_abs": 2.777576446533203e-05, + "worst_max_relative": 1.830849097225209e-09, + "worst_tolerance_ratio": 1.8308370291997682e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.439060988265965e-07, + 7.169015532326739e-07 + ], + "worst_mean_abs": 1.1979907411062934e-07, + "worst_max_relative": 0.013424888927897246, + "worst_tolerance_ratio": 0.05466121955349142 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.802883544627548e-06, + 0.00011109384792007404 + ], + "worst_mean_abs": 3.742334158507443e-05, + "worst_max_relative": 3.7556283136507754e-05, + "worst_tolerance_ratio": 0.2754072851192664 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.6116824715084466e-10, + 2.294638981430175e-09 + ], + "worst_mean_abs": 1.1077548442261382e-09, + "worst_max_relative": 3.729940263499179e-05, + "worst_tolerance_ratio": 0.00021531963466205295 + } + } + }, + { + "model": "NeoCu", + "n": 4096, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 3.820657730102539e-05 + ], + "worst_mean_abs": 3.820657730102539e-05, + "worst_max_relative": 2.5183997175232404e-09, + "worst_tolerance_ratio": 2.5183831175140795e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.166080461194156e-07, + 7.104743460217833e-07 + ], + "worst_mean_abs": 1.1993995347639125e-07, + "worst_max_relative": 0.02856692083015727, + "worst_tolerance_ratio": 0.05873448508518052 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.01530763080882e-06, + 9.401118154528376e-05 + ], + "worst_mean_abs": 3.307769413097973e-05, + "worst_max_relative": 5.391886680224436e-05, + "worst_tolerance_ratio": 0.4257181603659511 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.4490089857155386e-10, + 1.941797190922745e-09 + ], + "worst_mean_abs": 9.409762904172285e-10, + "worst_max_relative": 5.351578257569321e-05, + "worst_tolerance_ratio": 0.00018216964379864326 + } + } + }, + { + "model": "NeoCu", + "n": 4096, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.045797348022461e-05, + 8.726119995117188e-05 + ], + "worst_mean_abs": 8.726119995117188e-05, + "worst_max_relative": 5.751833946384839e-09, + "worst_tolerance_ratio": 5.7517960333425065e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.351370377937315e-07, + 8.013822601071752e-07 + ], + "worst_mean_abs": 1.2558300617594988e-07, + "worst_max_relative": 0.026800052994382272, + "worst_tolerance_ratio": 0.06428338709745177 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0004938771285765142, + 0.0006931610110996189 + ], + "worst_mean_abs": 0.00021615802526950587, + "worst_max_relative": 5.841637041719976e-05, + "worst_tolerance_ratio": 0.4283730694650843 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.020101231784254e-08, + 1.4317212931706791e-08 + ], + "worst_mean_abs": 6.662081803317149e-09, + "worst_max_relative": 5.809230390442046e-05, + "worst_tolerance_ratio": 0.001343469490700036 + } + } + }, + { + "model": "NeoCu", + "n": 4096, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.0742416381835938e-05, + 8.493661880493164e-05 + ], + "worst_mean_abs": 8.493661880493164e-05, + "worst_max_relative": 5.5986265484594665e-09, + "worst_tolerance_ratio": 5.598589645162558e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.445577322404915e-07, + 7.932072958460878e-07 + ], + "worst_mean_abs": 1.243990943191721e-07, + "worst_max_relative": 0.032838924457721574, + "worst_tolerance_ratio": 0.06707397161948507 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.00047436479803764087, + 0.0006949763438228729 + ], + "worst_mean_abs": 0.0002154684579936703, + "worst_max_relative": 5.760664486808131e-05, + "worst_tolerance_ratio": 0.4357422394499284 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.797985911323692e-09, + 1.4354708557234863e-08 + ], + "worst_mean_abs": 6.629676319376039e-09, + "worst_max_relative": 5.747880422535247e-05, + "worst_tolerance_ratio": 0.0013468193269253438 + } + } + }, + { + "model": "NeoCu", + "n": 4096, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 3.8683414459228516e-05 + ], + "worst_mean_abs": 3.8683414459228516e-05, + "worst_max_relative": 2.549822547631495e-09, + "worst_tolerance_ratio": 2.5498057405521294e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.22904616495623e-07, + 7.972317570548171e-07 + ], + "worst_mean_abs": 1.20731176544774e-07, + "worst_max_relative": 0.02814435479276665, + "worst_tolerance_ratio": 0.06166224969614522 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.5784290537985726e-06, + 0.00012494022900000346 + ], + "worst_mean_abs": 4.3599635653491907e-05, + "worst_max_relative": 5.082442104692825e-05, + "worst_tolerance_ratio": 0.37270635375147104 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.599714027711849e-11, + 2.5806354275736965e-09 + ], + "worst_mean_abs": 1.2807048413671962e-09, + "worst_max_relative": 4.9463066167940075e-05, + "worst_tolerance_ratio": 0.00024215638297209543 + } + } + }, + { + "model": "Pro", + "n": 96, + "left": "TORCH", + "right": "TORCH", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.9802322387695312e-08, + 3.546476364135742e-06 + ], + "worst_mean_abs": 3.546476364135742e-06, + "worst_max_relative": 4.0773161881595545e-09, + "worst_tolerance_ratio": 4.076847480785719e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.446324019610984e-07, + 1.1968863304900879e-06 + ], + "worst_mean_abs": 2.828583157560294e-07, + "worst_max_relative": 0.0008076674223815144, + "worst_tolerance_ratio": 0.09573474830647664 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.9652201981301687e-06, + 9.613378878725598e-06 + ], + "worst_mean_abs": 3.039388496436615e-06, + "worst_max_relative": 2.8885061459797767e-05, + "worst_tolerance_ratio": 0.15838218897262007 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.4233996380809697e-09, + 1.7651657201883664e-08 + ], + "worst_mean_abs": 6.742318941788681e-09, + "worst_max_relative": 1.6840486827053606e-05, + "worst_tolerance_ratio": 0.0014427881741386124 + } + } + }, + { + "model": "Pro", + "n": 96, + "left": "TORCH", + "right": "TORCH", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.960464477539063e-08, + 4.082918167114258e-06 + ], + "worst_mean_abs": 4.082918167114258e-06, + "worst_max_relative": 4.693620903477673e-09, + "worst_tolerance_ratio": 4.6930813985438893e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.445209675438491e-07, + 1.6668919435858243e-06 + ], + "worst_mean_abs": 2.7226443716838526e-07, + "worst_max_relative": 0.001531294589251288, + "worst_tolerance_ratio": 0.08948499315350628 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.2976609307102649e-06, + 8.369317985312819e-06 + ], + "worst_mean_abs": 3.729972808193723e-06, + "worst_max_relative": 3.609207618466774e-05, + "worst_tolerance_ratio": 0.19083894511057461 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.8317368871700879e-09, + 1.536736812107753e-08 + ], + "worst_mean_abs": 7.565954165442436e-09, + "worst_max_relative": 1.8943308087643797e-05, + "worst_tolerance_ratio": 0.0012560779039142034 + } + } + }, + { + "model": "Pro", + "n": 96, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.9802322387695312e-08, + 2.086162567138672e-06 + ], + "worst_mean_abs": 2.086162567138672e-06, + "worst_max_relative": 2.398200457358485e-09, + "worst_tolerance_ratio": 2.397924797904249e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.66126990012117e-07, + 1.0029742973927114e-06 + ], + "worst_mean_abs": 2.3483554125982823e-07, + "worst_max_relative": 0.0012154302300614783, + "worst_tolerance_ratio": 0.060435857640296124 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.8503745895515067e-06, + 6.390288737279093e-06 + ], + "worst_mean_abs": 2.967744340227125e-06, + "worst_max_relative": 1.9564826971426e-05, + "worst_tolerance_ratio": 0.10344960203143543 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.572338037915749e-09, + 1.1733562951116161e-08 + ], + "worst_mean_abs": 6.644951855308643e-09, + "worst_max_relative": 1.3558549020129833e-05, + "worst_tolerance_ratio": 0.0009608505225798299 + } + } + }, + { + "model": "Pro", + "n": 96, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.9802322387695312e-08, + 3.3676624298095703e-06 + ], + "worst_mean_abs": 3.3676624298095703e-06, + "worst_max_relative": 3.870147266776198e-09, + "worst_tolerance_ratio": 3.8697025571567825e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.059987374129605e-07, + 1.153181733215547e-06 + ], + "worst_mean_abs": 2.5687847847146975e-07, + "worst_max_relative": 0.0012242461245130598, + "worst_tolerance_ratio": 0.06258417126346197 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.5052840236506881e-06, + 8.76291312223998e-06 + ], + "worst_mean_abs": 3.4999733787103673e-06, + "worst_max_relative": 3.243988329792073e-05, + "worst_tolerance_ratio": 0.1715278843946285 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.630739483894251e-09, + 1.609006994307549e-08 + ], + "worst_mean_abs": 8.482913073515572e-09, + "worst_max_relative": 2.6146108291598013e-05, + "worst_tolerance_ratio": 0.0013099130165041045 + } + } + }, + { + "model": "Pro", + "n": 96, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.9802322387695312e-08, + 2.652406692504883e-06 + ], + "worst_mean_abs": 2.652406692504883e-06, + "worst_max_relative": 3.0481690755734652e-09, + "worst_tolerance_ratio": 3.0478188175570803e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 7.280704084067224e-07, + 1.0555508263010438e-06 + ], + "worst_mean_abs": 2.4286616122514025e-07, + "worst_max_relative": 0.0010674193016619797, + "worst_tolerance_ratio": 0.06700012883133709 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.9028378250851574e-06, + 7.248352119404444e-06 + ], + "worst_mean_abs": 2.7877505150184255e-06, + "worst_max_relative": 3.230351561859952e-05, + "worst_tolerance_ratio": 0.17713153899382833 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.6756166623492497e-09, + 1.3309100630604087e-08 + ], + "worst_mean_abs": 6.104326373932775e-09, + "worst_max_relative": 2.66427987110384e-05, + "worst_tolerance_ratio": 0.0010856511244585853 + } + } + }, + { + "model": "Pro", + "n": 96, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 3.337860107421875e-06 + ], + "worst_mean_abs": 3.337860107421875e-06, + "worst_max_relative": 3.835898159497768e-09, + "worst_tolerance_ratio": 3.835457385365484e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.509955774447462e-07, + 1.1443131286981156e-06 + ], + "worst_mean_abs": 2.522947204247308e-07, + "worst_max_relative": 0.0012451676593418248, + "worst_tolerance_ratio": 0.07559006584013699 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.3961350999736055e-06, + 7.585402180154688e-06 + ], + "worst_mean_abs": 2.7201062848505565e-06, + "worst_max_relative": 4.5882155923540835e-05, + "worst_tolerance_ratio": 0.2515827864730362 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.931213442635249e-09, + 1.3927976910688145e-08 + ], + "worst_mean_abs": 6.454044768186475e-09, + "worst_max_relative": 3.9032306450856046e-05, + "worst_tolerance_ratio": 0.0011361341546814554 + } + } + }, + { + "model": "Pro", + "n": 96, + "left": "BASE", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 5.036592483520508e-06 + ], + "worst_mean_abs": 5.036592483520508e-06, + "worst_max_relative": 5.789941087333166e-09, + "worst_tolerance_ratio": 5.7892755666546726e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0297283470350749e-06, + 1.9189764604021775e-06 + ], + "worst_mean_abs": 3.849434346902023e-07, + "worst_max_relative": 0.0020522084723807667, + "worst_tolerance_ratio": 0.11480837591926668 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.302903146959693e-06, + 1.6129070706583093e-05 + ], + "worst_mean_abs": 4.7456555366038386e-06, + "worst_max_relative": 3.7589052501968825e-05, + "worst_tolerance_ratio": 0.1987509136554628 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.0227048662797555e-08, + 2.9615479710948245e-08 + ], + "worst_mean_abs": 1.132195174845205e-08, + "worst_max_relative": 2.5387322263327602e-05, + "worst_tolerance_ratio": 0.002411033211623114 + } + } + }, + { + "model": "Pro", + "n": 96, + "left": "ECS", + "right": "TORCH", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 5.8710575103759766e-06 + ], + "worst_mean_abs": 5.8710575103759766e-06, + "worst_max_relative": 6.74922126748304e-09, + "worst_tolerance_ratio": 6.748445483023494e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.038883129744761e-06, + 1.6906226552038106e-06 + ], + "worst_mean_abs": 3.7810847750509456e-07, + "worst_max_relative": 0.0024178460145521242, + "worst_tolerance_ratio": 0.09502941448441958 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.838768445842746e-06, + 1.643254521255244e-05 + ], + "worst_mean_abs": 5.029408959806365e-06, + "worst_max_relative": 5.076757155361017e-05, + "worst_tolerance_ratio": 0.27837006946653303 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 9.968055551118349e-09, + 3.017270605240596e-08 + ], + "worst_mean_abs": 1.1461790969722888e-08, + "worst_max_relative": 3.991119145824207e-05, + "worst_tolerance_ratio": 0.002456397704407242 + } + } + }, + { + "model": "Pro", + "n": 96, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 3.725290298461914e-06 + ], + "worst_mean_abs": 3.725290298461914e-06, + "worst_max_relative": 4.281136357053316e-09, + "worst_tolerance_ratio": 4.280644421633609e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.266039713764826e-07, + 1.3096176978422136e-06 + ], + "worst_mean_abs": 2.546778492756246e-07, + "worst_max_relative": 0.0015910827158217506, + "worst_tolerance_ratio": 0.08263306350666724 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.2102046772488606e-06, + 9.066387628209327e-06 + ], + "worst_mean_abs": 4.04452190765841e-06, + "worst_max_relative": 4.3051390970528364e-05, + "worst_tolerance_ratio": 0.22763340594975173 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.7095684000378863e-09, + 1.664729628453321e-08 + ], + "worst_mean_abs": 9.485760441344492e-09, + "worst_max_relative": 3.631888515506632e-05, + "worst_tolerance_ratio": 0.0013552773426962217 + } + } + }, + { + "model": "Pro", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1920928955078125e-07, + 7.241964340209961e-06 + ], + "worst_mean_abs": 7.241964340209961e-06, + "worst_max_relative": 1.5611764395991105e-09, + "worst_tolerance_ratio": 1.561142785479578e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.882451130176605e-07, + 1.2120823340566744e-06 + ], + "worst_mean_abs": 2.390480194548088e-07, + "worst_max_relative": 0.004595401111095846, + "worst_tolerance_ratio": 0.09424525340416555 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.6369870457519937e-06, + 1.6519790293045844e-05 + ], + "worst_mean_abs": 6.108577980519965e-06, + "worst_max_relative": 3.07548015293992e-05, + "worst_tolerance_ratio": 0.22660170583993347 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.287005786852554e-10, + 5.687419046135345e-09 + ], + "worst_mean_abs": 2.3579293374139496e-09, + "worst_max_relative": 2.6363564624639196e-05, + "worst_tolerance_ratio": 0.0004619027298119421 + } + } + }, + { + "model": "Pro", + "n": 512, + "left": "BASE", + "right": "BASE", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.9802322387695312e-08, + 1.0192394256591797e-05 + ], + "worst_mean_abs": 1.0192394256591797e-05, + "worst_max_relative": 2.197211290189448e-09, + "worst_tolerance_ratio": 2.1971639251321206e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.337509491695982e-07, + 1.3602752506614024e-06 + ], + "worst_mean_abs": 2.390355857250541e-07, + "worst_max_relative": 0.004160502855394936, + "worst_tolerance_ratio": 0.09594329339955664 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.104009920207318e-06, + 2.0179532199904315e-05 + ], + "worst_mean_abs": 8.877854485457428e-06, + "worst_max_relative": 3.3994057854153705e-05, + "worst_tolerance_ratio": 0.26038174321197705 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.451583833821164e-10, + 6.947391807676784e-09 + ], + "worst_mean_abs": 3.4516097801031115e-09, + "worst_max_relative": 2.7304649249363166e-05, + "worst_tolerance_ratio": 0.0005642311943269924 + } + } + }, + { + "model": "Pro", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "within_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.9802322387695312e-08, + 7.420778274536133e-06 + ], + "worst_mean_abs": 7.420778274536133e-06, + "worst_max_relative": 1.5997240073142174e-09, + "worst_tolerance_ratio": 1.5996895222287143e-05 + }, + "forces": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.405296645364047e-07, + 1.3563505030234069e-06 + ], + "worst_mean_abs": 2.3874192131423155e-07, + "worst_max_relative": 0.0026725797270913698, + "worst_tolerance_ratio": 0.08657278213750176 + }, + "virial": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 3.4518775322567308e-06, + 1.4212850686590173e-05 + ], + "worst_mean_abs": 6.591721291249186e-06, + "worst_max_relative": 3.278875854884791e-05, + "worst_tolerance_ratio": 0.23745797771259752 + }, + "stress": { + "comparisons": 27, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 1.1884093986669342e-09, + 4.893187882659689e-09 + ], + "worst_mean_abs": 2.703824306405726e-09, + "worst_max_relative": 3.2054967277277726e-05, + "worst_tolerance_ratio": 0.0003976688527754634 + } + } + }, + { + "model": "Pro", + "n": 512, + "left": "ECS", + "right": "ECS", + "scope": "across_process", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.9802322387695312e-08, + 8.344650268554688e-06 + ], + "worst_mean_abs": 8.344650268554688e-06, + "worst_max_relative": 1.798980709660136e-09, + "worst_tolerance_ratio": 1.798941927186088e-05 + }, + "forces": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.581984616284899e-07, + 1.4972472648366875e-06 + ], + "worst_mean_abs": 2.3659243502185956e-07, + "worst_max_relative": 0.0036506476987535736, + "worst_tolerance_ratio": 0.0929593411439242 + }, + "virial": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.4750957416941333e-06, + 1.640545696091067e-05 + ], + "worst_mean_abs": 8.144271571795967e-06, + "worst_max_relative": 3.3126932201614343e-05, + "worst_tolerance_ratio": 0.2399092416152986 + }, + "stress": { + "comparisons": 81, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 6.943850592178863e-10, + 5.6480564634975305e-09 + ], + "worst_mean_abs": 3.196065651875263e-09, + "worst_max_relative": 3.056347017376033e-05, + "worst_tolerance_ratio": 0.00045812560982852593 + } + } + }, + { + "model": "Pro", + "n": 512, + "left": "ECS", + "right": "BASE", + "scope": "cross_implementation", + "left_completed_processes": 3, + "right_completed_processes": 3, + "all_passed": true, + "metrics": { + "energy": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 0.0, + 1.1205673217773438e-05 + ], + "worst_mean_abs": 1.1205673217773438e-05, + "worst_max_relative": 2.4156474950175533e-09, + "worst_tolerance_ratio": 2.4155954211535858e-05 + }, + "forces": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 8.271673799242762e-07, + 1.4767237850321635e-06 + ], + "worst_mean_abs": 2.4276983175297557e-07, + "worst_max_relative": 0.0045431500280877805, + "worst_tolerance_ratio": 0.1079226036073298 + }, + "virial": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 2.3602785814702543e-06, + 1.7525709196775097e-05 + ], + "worst_mean_abs": 8.606947469341147e-06, + "worst_max_relative": 3.982333492627176e-05, + "worst_tolerance_ratio": 0.2884030229865688 + }, + "stress": { + "comparisons": 243, + "failures": 0, + "all_finite": true, + "all_bitwise": false, + "max_abs_range": [ + 5.223337179449672e-10, + 6.033735931026962e-09 + ], + "worst_mean_abs": 3.5233485454693554e-09, + "worst_max_relative": 3.170516012832255e-05, + "worst_tolerance_ratio": 0.0004900287665893675 + } + } + } + ] +} \ No newline at end of file diff --git a/doc/development/ecs-validation-20261025/validation.json b/doc/development/ecs-validation-20261025/validation.json new file mode 100644 index 0000000000..0bca3f30aa --- /dev/null +++ b/doc/development/ecs-validation-20261025/validation.json @@ -0,0 +1,165 @@ +{ + "focused_cuda_tests": { + "passed": 60, + "warnings": 14, + "seconds": 50.86, + "scope": "previous current-master-port run; not a new full-suite publication rerun" + }, + "published_worker_smoke": { + "result": { + "status": "completed", + "mode": "ECS", + "n_atoms": 96, + "started": 1792945283.0112195, + "threshold": { + "atol": 1e-05, + "rtol": 0.0001, + "relative_denominator_floor": 1e-08 + }, + "system": "diamond", + "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", + "parameter_count": 1124910, + "first_peak": { + "allocated": 557481472, + "reserved": 589299712 + }, + "steady_peak": { + "allocated": 557481472, + "reserved": 589299712 + }, + "full_window_peak": { + "allocated": 557481472, + "reserved": 589299712 + }, + "steady_wall_ms": { + "median": 17.27216294966638, + "p90": 17.32844109646976, + "min": 17.182583920657635, + "max": 17.366331070661545, + "samples": [ + 17.29396404698491, + 17.198944929987192, + 17.366331070661545, + 17.233089078217745, + 17.182583920657635, + 17.198764253407717, + 17.32423109933734, + 17.309763934463263, + 17.28607900440693, + 17.258246894925833 + ] + }, + "steady_event_ms": { + "median": 17.22985553741455, + "p90": 17.28654384613037, + "samples": [ + 17.244991302490234, + 17.148576736450195, + 17.325279235839844, + 17.191455841064453, + 17.14124870300293, + 17.156543731689453, + 17.28223991394043, + 17.26825523376465, + 17.243295669555664, + 17.216415405273438 + ] + }, + "finite": true, + "evaluations": 9, + "runtime_cohort_calls": [], + "precision_runtime": { + "matmul_precision": "highest", + "matmul_tf32": false, + "cudnn_tf32": false, + "outer_autocast": false + }, + "wall_ms_including_first": [ + 72504.98112803325, + 20.27683611959219, + 17.53692189231515, + 17.710010055452585, + 17.31169829145074, + 17.306859139353037, + 17.4970468506217, + 17.745596822351217, + 18.019483890384436 + ], + "event_ms_including_first": [ + 72504.7734375, + 20.244768142700195, + 17.50480079650879, + 17.67430305480957, + 17.2807674407959, + 17.27676773071289, + 17.466079711914062, + 17.715871810913086, + 17.988319396972656 + ], + "wrappers": [ + "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/t3/ct3jv332q663pb7fau5sahydsikcnpltdy2wnxiqaxujbrwe2xrh.py" + ], + "routes": [ + { + "sha256": "65e175bca1f23233ff9f33a17000de61cb7f6359e00f23d5d6a5a18cde6d2ca7", + "opaque_cohort_calls": 0, + "single_cohort_named_calls": 32, + "stack_kernel_definitions": 16, + "single_cohort_marker": true + } + ], + "complete_peak": { + "allocated": 557481472, + "reserved": 589299712 + }, + "elapsed_s": 76.54529666900635 + }, + "manifest": { + "args": { + "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", + "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", + "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/public_smoke_gpu1/Neo_n96_ECS_p0", + "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", + "gpu": "1", + "mode": "ECS", + "nrep": "2", + "seed": "0", + "repeat_cell": "[2, 2, 3]", + "system": "diamond", + "samples": "10", + "warmup": "3" + }, + "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", + "torch": "2.11.0+cu128", + "triton": "3.6.0", + "cuda": "12.8", + "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", + "source_hashes": { + "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", + "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" + }, + "flags": { + "DP_COMPILE_INFER": "1", + "DP_COMPILE": "0", + "DP_TRITON_INFER": "2", + "DP_CUDA_INFER": "0", + "DP_TF32_INFER": "0", + "DP_AMP_INFER": "0", + "DP_SO2_EDGE_COHORT_INFER": "1", + "DP_INTRA_OP_PARALLELISM_THREADS": "1", + "DP_INTER_OP_PARALLELISM_THREADS": "1", + "PYTORCH_ALLOC_CONF": "expandable_segments:True", + "TORCHINDUCTOR_COMPILE_THREADS": "1", + "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", + "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" + } + }, + "scope": "GPU1, Neo96,3warmup/10samples, not pooled into135-run results; finite execution is not a new cross-reference precision pass" + }, + "gpu0_probe": { + "status": "blocked_busy", + "pids": "2030231" + }, + "lint": "candidate full-repository Ruff check/format/diff-check passed; published Python whitelist Ruff/format passed. Generated compiler-cache files are not source lint targets.", + "artifact_patch": "git apply --check passed against clean2ba617bc" +} diff --git a/doc/development/ecs-validation-20261025/worker.py b/doc/development/ecs-validation-20261025/worker.py new file mode 100644 index 0000000000..bf32b9fddf --- /dev/null +++ b/doc/development/ecs-validation-20261025/worker.py @@ -0,0 +1,370 @@ +"""Accuracy-first full API matrix. No production source mutation.""" +# ruff: noqa: T201, TID253, ANN001, ANN002, ANN003, ANN201 -- standalone manual experiment, not imported package code + +import argparse +import copy +import hashlib +import json +import os +from pathlib import Path +import subprocess +import sys +import time +import traceback + +P = argparse.ArgumentParser() +P.add_argument("--root", type=Path, required=True) +P.add_argument("--model", type=Path, required=True) +P.add_argument("--out", type=Path, required=True) +P.add_argument("--cache", type=Path, required=True) +P.add_argument("--gpu", type=int, required=True) +P.add_argument( + "--mode", + choices=["TORCH", "BASE", "ECS", "ECS_RUNTIME", "TORCH_EAGER"], + required=True, +) +P.add_argument("--nrep", type=int, required=True) +P.add_argument("--seed", type=int, default=0) +P.add_argument("--repeat-cell", type=int, nargs=3) +P.add_argument("--system", choices=["diamond", "bcccu"], default="diamond") +P.add_argument("--samples", type=int, default=30) +P.add_argument("--warmup", type=int, default=8) +a = P.parse_args() +a.out.mkdir(parents=True, exist_ok=False) + + +def write(name, obj): + (a.out / name).write_text( + json.dumps(obj, indent=2, ensure_ascii=False, allow_nan=False) + ) + + +def sha(p): + return hashlib.sha256(p.read_bytes()).hexdigest() + + +busy = subprocess.check_output( + [ + "nvidia-smi", + "-i", + str(a.gpu), + "--query-compute-apps=pid", + "--format=csv,noheader", + ], + text=True, +).strip() +if busy: + write("result.json", {"status": "blocked_busy", "pids": busy}) + raise SystemExit(3) +for k in list(os.environ): + if k.startswith("DP_"): + del os.environ[k] +os.environ.update( + CUDA_VISIBLE_DEVICES=str(a.gpu), + DP_COMPILE_INFER="0" if a.mode == "TORCH_EAGER" else "1", + DP_COMPILE="0", + DP_TRITON_INFER="0" if a.mode.startswith("TORCH") else "2", + DP_CUDA_INFER="0", + DP_TF32_INFER="0", + DP_AMP_INFER="0", + DP_SO2_EDGE_COHORT_INFER="1" if a.mode.startswith("ECS") else "0", + OMP_NUM_THREADS="1", + DP_INTRA_OP_PARALLELISM_THREADS="1", + DP_INTER_OP_PARALLELISM_THREADS="1", + PYTORCH_ALLOC_CONF="expandable_segments:True", + TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD="1", + TORCHINDUCTOR_COMPILE_THREADS="1", + TORCHINDUCTOR_CACHE_DIR=str(a.cache / "inductor"), + TRITON_CACHE_DIR=str(a.cache / "triton"), +) +sys.path.insert(0, str(a.root)) +sys.meta_path[:] = [ + f + for f in sys.meta_path + if not type(f).__module__.startswith("_editable_skbc_deepmd_kit") +] +import site +import deepmd + +for installed in site.getsitepackages(): + p = Path(installed) / "deepmd" + if (p / "lib").is_dir(): + deepmd.__path__.append(str(p)) +assert Path(deepmd.__file__).resolve().parent.parent == a.root.resolve() +import numpy as np +import torch +import triton + +torch.set_num_threads(1) +torch.set_float32_matmul_precision("highest") +torch.backends.cuda.matmul.allow_tf32 = False +torch.backends.cudnn.allow_tf32 = False +torch.cuda.reset_peak_memory_stats() +manifest = { + "args": {k: str(v) for k, v in vars(a).items()}, + "model_sha256": sha(a.model), + "torch": torch.__version__, + "triton": triton.__version__, + "cuda": torch.version.cuda, + "baseline_revision": subprocess.check_output( + ["git", "rev-parse", "HEAD"], cwd=a.root, text=True + ).strip(), + "source_hashes": { + str(p.relative_to(a.root)): sha(p) + for p in [ + a.root / "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py", + a.root / "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py", + ] + if p.exists() + }, + "flags": { + k: v + for k, v in os.environ.items() + if k.startswith( + ("DP_", "TORCHINDUCTOR", "TRITON_CACHE", "PYTORCH_ALLOC", "PYTHONHASH") + ) + }, +} +write("manifest.json", manifest) +result = { + "status": "running", + "mode": a.mode, + "n_atoms": (8 if a.system == "diamond" else 2) + * int(np.prod(a.repeat_cell if a.repeat_cell else [a.nrep] * 3)), + "started": time.time(), + "threshold": {"atol": 1e-5, "rtol": 1e-4, "relative_denominator_floor": 1e-8}, +} +arrays = {} +runtime_calls = [] +try: + from ase.build import bulk + from deepmd.calculator import DP + + repeat_cell = tuple(a.repeat_cell) if a.repeat_cell else (a.nrep,) * 3 + atoms = ( + bulk("C", "diamond", a=3.567, cubic=True) + if a.system == "diamond" + else bulk("Cu", "bcc", a=2.87, cubic=True) + ).repeat(repeat_cell) + result["n_atoms"] = len(atoms) + result["system"] = a.system + rng = np.random.default_rng(a.seed) + frames = np.stack( + [ + atoms.positions + 0.02 * rng.standard_normal(atoms.positions.shape) + for _ in range(3) + ] + ) + np.savez_compressed( + a.out / "inputs.npz", + positions=frames, + cell=np.asarray(atoms.cell), + numbers=atoms.numbers, + ) + result["input_sha256"] = sha(a.out / "inputs.npz") + if a.mode == "ECS_RUNTIME": + from deepmd.pt_expt.kernels.triton.sezm import so2_edge_cohort as ec + + ec.SINGLE_COHORT_MAX_EDGES = 0 + original_runtime = ec.cohort_input_backward_impl + + def traced_runtime(*args, **kwargs): + edges = args[0].shape[0] + cap = args[7] if len(args) > 7 else kwargs["cohort_edges"] + runtime_calls.append( + {"edges": edges, "cohort": cap, "chunks": (edges + cap - 1) // cap} + ) + return original_runtime(*args, **kwargs) + + ec.cohort_input_backward_impl = traced_runtime + original_load = torch.load + if ( + manifest["model_sha256"] + == "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221" + ): + assert ( + manifest["model_sha256"] + == "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221" + ) + proof = json.loads((a.model.parent / "cpu_load_check.json").read_text()) + assert proof["strict_missing"] == proof["strict_unexpected"] == [] + + def legacy_load(file, *args, **kwargs): + obj = original_load(file, *args, **kwargs) + if ( + isinstance(file, (str, Path)) + and Path(file).resolve() == a.model.resolve() + ): + state = obj["model"] if "model" in obj else obj + state["_extra_state"] = copy.deepcopy(state["_extra_state"]) + fit = state["_extra_state"]["model_params"]["fitting_net"] + assert fit["type"] == "ener" + fit["type"] = "dpa4_ener" + return obj + + torch.load = legacy_load + result["legacy_compatibility"] = ( + "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged" + ) + try: + calc = DP(model=str(a.model)) + finally: + torch.load = original_load + inner = calc.dp.get_model() + assert not inner.training + definition = calc.dp.get_model_def_script() + write("model_definition.json", definition) + result["parameter_count"] = sum(p.numel() for p in inner.parameters()) + + def evaluate(pos): + calc.reset() + sample = atoms.copy() + sample.positions = pos + sample.calc = calc + forces = sample.get_forces().copy() + return { + "energy": np.asarray(sample.get_potential_energy()), + "forces": forces, + "virial": np.asarray(calc.results["virial"]).copy(), + "stress": sample.get_stress().copy(), + } + + wall = [] + events = [] + for repeat in range(3): + for frame, pos in enumerate(frames): + torch.cuda.synchronize() + s, e = ( + torch.cuda.Event(enable_timing=True), + torch.cuda.Event(enable_timing=True), + ) + start = time.perf_counter() + s.record() + out = evaluate(pos) + e.record() + torch.cuda.synchronize() + elapsed = 1000 * (time.perf_counter() - start) + wall.append(elapsed) + events.append(s.elapsed_time(e)) + for k, v in out.items(): + arrays[f"{repeat}_{frame}_{k}"] = v + np.savez_compressed(a.out / "outputs.npz", **arrays) + if repeat == 0 and frame == 0: + result["first_peak"] = { + "allocated": torch.cuda.max_memory_allocated(), + "reserved": torch.cuda.max_memory_reserved(), + } + write( + "progress.json", + { + "repeat": repeat, + "frame": frame, + "elapsed_ms": elapsed, + "finite": all(bool(np.isfinite(v).all()) for v in out.values()), + }, + ) + print(a.mode, len(atoms), repeat, frame, elapsed, flush=True) + # Accuracy collection is separate from warmed timing and steady memory. + assert a.warmup >= 3 and a.samples >= 10 + for i in range(a.warmup): + evaluate(frames[i % len(frames)]) + timed_wall, timed_event = [], [] + for i in range(a.samples): + torch.cuda.synchronize() + begin = torch.cuda.Event(enable_timing=True) + end = torch.cuda.Event(enable_timing=True) + tick = time.perf_counter() + begin.record() + measured = evaluate(frames[i % len(frames)]) + end.record() + torch.cuda.synchronize() + assert all(bool(np.isfinite(v).all()) for v in measured.values()) + timed_wall.append(1000 * (time.perf_counter() - tick)) + timed_event.append(begin.elapsed_time(end)) + full_peak = { + "allocated": torch.cuda.max_memory_allocated(), + "reserved": torch.cuda.max_memory_reserved(), + } + torch.cuda.reset_peak_memory_stats() + for i in range(a.samples): + evaluate(frames[i % len(frames)]) + torch.cuda.synchronize() + result["steady_peak"] = { + "allocated": torch.cuda.max_memory_allocated(), + "reserved": torch.cuda.max_memory_reserved(), + } + result["full_window_peak"] = full_peak + result["steady_wall_ms"] = { + "median": float(np.median(timed_wall)), + "p90": float(np.percentile(timed_wall, 90)), + "min": min(timed_wall), + "max": max(timed_wall), + "samples": timed_wall, + } + result["steady_event_ms"] = { + "median": float(np.median(timed_event)), + "p90": float(np.percentile(timed_event, 90)), + "samples": timed_event, + } + from torch._inductor.codecache import PyCodeCache + + wrappers = [] + route = [] + for m in PyCodeCache.modules: + path = Path(m.__file__) + text = path.read_text() + if "def call(" not in text: + continue + wrappers.append(str(path)) + route.append( + { + "sha256": sha(path), + "opaque_cohort_calls": text.count("so2_cohort_input_bwd.default("), + "single_cohort_named_calls": text.count("so2_single_cohort_input_bwd"), + "stack_kernel_definitions": text.count("def _stack_"), + "single_cohort_marker": "so2_single_cohort_input_bwd" in text, + } + ) + if a.mode != "TORCH_EAGER": + assert wrappers, "compiled path missing" + assert torch.get_float32_matmul_precision() == "highest" + assert not torch.backends.cuda.matmul.allow_tf32 + assert not torch.backends.cudnn.allow_tf32 + assert not torch.is_autocast_enabled("cuda") + result.update( + status="completed", + finite=all(bool(np.isfinite(v).all()) for v in arrays.values()), + evaluations=9, + runtime_cohort_calls=runtime_calls, + precision_runtime={ + "matmul_precision": torch.get_float32_matmul_precision(), + "matmul_tf32": torch.backends.cuda.matmul.allow_tf32, + "cudnn_tf32": torch.backends.cudnn.allow_tf32, + "outer_autocast": torch.is_autocast_enabled("cuda"), + }, + wall_ms_including_first=wall, + event_ms_including_first=events, + wrappers=wrappers, + routes=route, + complete_peak={ + k: max(full_peak[k], result["steady_peak"][k]) for k in full_peak + }, + ) +except Exception as exc: + result.update( + status="oom" + if isinstance(exc, torch.OutOfMemoryError) + or type(exc).__name__ == "OutOfMemoryError" + else "failed", + exception=traceback.format_exc(), + partial_arrays=len(arrays), + complete_peak={ + "allocated": torch.cuda.max_memory_allocated(), + "reserved": torch.cuda.max_memory_reserved(), + }, + ) + print(result["exception"], flush=True) +finally: + result["elapsed_s"] = time.time() - result["started"] + write("result.json", result) +raise SystemExit(0 if result["status"] == "completed" else 1) From 9ae1715cd7893311cf82ccc6fbeb3677a60eac52 Mon Sep 17 00:00:00 2001 From: Macqueen Ma-hnu Date: Mon, 26 Oct 2026 14:49:56 +0800 Subject: [PATCH 5/7] chore(pt): trim edge-cohort PR to implementation and regression tests --- .../ecs-edge-cohort-benchmark-results.json | 5202 ---- doc/development/ecs-edge-cohort-benchmarks.md | 211 - .../ecs-edge-cohort-controlled-raw.json.gz | Bin 1311322 -> 0 bytes .../ecs-edge-cohort-controlled-results.json | 4593 --- .../ecs-edge-cohort-controlled-timing.md | 235 - .../ecs-edge-cohort-multimodel-accuracy.md | 206 - .../ecs-edge-cohort-multimodel-results.json | 11013 ------- .../ecs-edge-cohort-multimodel-summary.md | 54 - .../ecs-edge-cohort-multimodel-update.md | 64 - ...-edge-cohort-n4096-historical-results.json | 1 - .../ecs-validation-20261025/ACCURACY_TABLE.md | 266 - .../ecs-validation-20261025/README.md | 74 - .../ecs-validation-20261025/REPORT.md | 171 - .../ecs-validation-20261025/analyze.py | 250 - .../port-to-2ba617bc.patch | 720 - .../pro_cpu_load_check.json | 318 - .../ecs-validation-20261025/provenance.json | 2749 -- .../ecs-validation-20261025/report.py | 223 - .../ecs-validation-20261025/run_matrix.py | 119 - .../ecs-validation-20261025/runs.json | 23956 ---------------- .../ecs-validation-20261025/summary.json | 11584 -------- .../ecs-validation-20261025/validation.json | 165 - .../ecs-validation-20261025/worker.py | 370 - .../_so2_edge_cohort_benchmark_common.py | 131 - .../_so2_edge_cohort_benchmark_impl.py | 209 - .../_so2_edge_cohort_controlled_worker.py | 245 - .../kernels/analyze_so2_edge_cohort_clocks.py | 76 - .../kernels/analyze_so2_edge_cohort_paired.py | 229 - .../analyze_so2_edge_cohort_same_context.py | 104 - .../kernels/analyze_so2_edge_cohort_serial.py | 112 - .../kernels/benchmark_so2_edge_cohort.py | 131 - .../benchmark_so2_edge_cohort_paired.py | 228 - .../benchmark_so2_edge_cohort_same_context.py | 326 - .../benchmark_so2_edge_cohort_serial.py | 191 - 34 files changed, 64526 deletions(-) delete mode 100644 doc/development/ecs-edge-cohort-benchmark-results.json delete mode 100644 doc/development/ecs-edge-cohort-benchmarks.md delete mode 100644 doc/development/ecs-edge-cohort-controlled-raw.json.gz delete mode 100644 doc/development/ecs-edge-cohort-controlled-results.json delete mode 100644 doc/development/ecs-edge-cohort-controlled-timing.md delete mode 100644 doc/development/ecs-edge-cohort-multimodel-accuracy.md delete mode 100644 doc/development/ecs-edge-cohort-multimodel-results.json delete mode 100644 doc/development/ecs-edge-cohort-multimodel-summary.md delete mode 100644 doc/development/ecs-edge-cohort-multimodel-update.md delete mode 100644 doc/development/ecs-edge-cohort-n4096-historical-results.json delete mode 100644 doc/development/ecs-validation-20261025/ACCURACY_TABLE.md delete mode 100644 doc/development/ecs-validation-20261025/README.md delete mode 100644 doc/development/ecs-validation-20261025/REPORT.md delete mode 100644 doc/development/ecs-validation-20261025/analyze.py delete mode 100644 doc/development/ecs-validation-20261025/port-to-2ba617bc.patch delete mode 100644 doc/development/ecs-validation-20261025/pro_cpu_load_check.json delete mode 100644 doc/development/ecs-validation-20261025/provenance.json delete mode 100644 doc/development/ecs-validation-20261025/report.py delete mode 100644 doc/development/ecs-validation-20261025/run_matrix.py delete mode 100644 doc/development/ecs-validation-20261025/runs.json delete mode 100644 doc/development/ecs-validation-20261025/summary.json delete mode 100644 doc/development/ecs-validation-20261025/validation.json delete mode 100644 doc/development/ecs-validation-20261025/worker.py delete mode 100644 source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_common.py delete mode 100644 source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_impl.py delete mode 100644 source/tests/pt_expt/kernels/_so2_edge_cohort_controlled_worker.py delete mode 100644 source/tests/pt_expt/kernels/analyze_so2_edge_cohort_clocks.py delete mode 100644 source/tests/pt_expt/kernels/analyze_so2_edge_cohort_paired.py delete mode 100644 source/tests/pt_expt/kernels/analyze_so2_edge_cohort_same_context.py delete mode 100644 source/tests/pt_expt/kernels/analyze_so2_edge_cohort_serial.py delete mode 100644 source/tests/pt_expt/kernels/benchmark_so2_edge_cohort.py delete mode 100644 source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_paired.py delete mode 100644 source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_same_context.py delete mode 100644 source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_serial.py diff --git a/doc/development/ecs-edge-cohort-benchmark-results.json b/doc/development/ecs-edge-cohort-benchmark-results.json deleted file mode 100644 index c56875fa35..0000000000 --- a/doc/development/ecs-edge-cohort-benchmark-results.json +++ /dev/null @@ -1,5202 +0,0 @@ -{ - "schema_version": 1, - "baseline_commit": "668b60cc2a9559f79abb9c33acd959833376344f", - "model": { - "name": "DPA4-Neo-OMat24-v20260627.pt", - "sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d" - }, - "environment": { - "gpu": "NVIDIA GeForce RTX 5090", - "driver": "595.91.07", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "precision": "FP32 SO(2), TF32 and AMP disabled" - }, - "protocol": { - "gpu": 0, - "atoms": 64, - "edges": 10114, - "seed": 0, - "coordinate_std_angstrom": 0.02, - "warmup": 8, - "samples": 30, - "independent_processes_per_arm": 3, - "order": [ - "BASE", - "FIXED", - "FIXED", - "BASE", - "BASE", - "FIXED" - ], - "cache": "new process and empty Inductor/Triton caches per run; driver/system caches not purged", - "timing": "full ASE energy/force/virial/stress API including neighbor building and host gaps", - "primary_memory": "complete high-water mark from model loading through first JIT, warmup and 30 measured calls", - "steady_memory": "separate 30-call replay after resetting peak counters; reserved cache not emptied", - "tolerance": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - } - }, - "summary": { - "groups": { - "BASE": { - "process_p50_ms": [ - 12.157610966823995, - 11.771477526053786, - 12.372727505862713 - ], - "p50_ms": 12.157610966823995, - "pooled_wall_ms": { - "median": 12.157610966823995, - "p90": 12.414685660041869, - "min": 11.702988063916564, - "max": 12.85580382682383 - }, - "pooled_event_ms": { - "median": 12.128463745117188, - "p90": 12.389702796936035, - "min": 11.678048133850098, - "max": 12.829216003417969 - }, - "first_call_ms": [ - 124931.33242195472, - 125718.05966598913, - 125241.41405685805 - ], - "peak_bytes": { - "first": { - "allocated": 498199552, - "reserved": 528482304 - }, - "complete": { - "allocated": 498199552, - "reserved": 528482304 - }, - "steady": { - "allocated": 397536256, - "reserved": 528482304 - } - }, - "within_process_worst_ratio": 0.25613949444882667 - }, - "FIXED": { - "process_p50_ms": [ - 12.398104998283088, - 12.254007975570858, - 12.313776067458093 - ], - "p50_ms": 12.313776067458093, - "pooled_wall_ms": { - "median": 12.340801884420216, - "p90": 12.432650523260236, - "min": 12.185728875920177, - "max": 12.588670011609793 - }, - "pooled_event_ms": { - "median": 12.31489610671997, - "p90": 12.40545301437378, - "min": 12.159104347229004, - "max": 12.562368392944336 - }, - "first_call_ms": [ - 124219.04061594978, - 125799.81218092144, - 126628.89281916432 - ], - "peak_bytes": { - "first": { - "allocated": 480156672, - "reserved": 507510784 - }, - "complete": { - "allocated": 480156672, - "reserved": 507510784 - }, - "steady": { - "allocated": 379493376, - "reserved": 507510784 - } - }, - "within_process_worst_ratio": 0.3543239288673778 - } - }, - "comparisons": { - "BASE_self": { - "pairs": 3, - "max_ratio": 0.2826209178989357, - "passed": true - }, - "FIXED_self": { - "pairs": 3, - "max_ratio": 0.1841048210822708, - "passed": true - }, - "BASE_to_FIXED": { - "pairs": 9, - "max_ratio": 0.2565698522949588, - "passed": true - }, - "fresh_TORCH_reference": { - "pairs": 6, - "max_ratio": 0.3528409108417077, - "passed": true - } - }, - "accuracy_pairs": { - "BASE_self": [ - { - "left": 0, - "right": 3, - "metrics": { - "0_energy": { - "max_abs": 8.940696716308594e-07, - "mean_abs": 8.940696716308594e-07, - "max_relative": 1.5415036795113678e-09, - "max_ratio": 1.541237948098774e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 2.965923755482436e-06, - "mean_abs": 8.992252606137887e-07, - "max_relative": 0.00018129709564356622, - "max_ratio": 0.212322447982351, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 1.0430906838720944e-05, - "mean_abs": 5.297451218102791e-06, - "max_relative": 1.5161652394934063e-05, - "max_ratio": 0.1184620629853578, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 2.8729148331130272e-08, - "mean_abs": 1.575682060806531e-08, - "max_relative": 1.4455929777240921e-05, - "max_ratio": 0.002483244331711669, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 9.5367431640625e-07, - "mean_abs": 9.5367431640625e-07, - "max_relative": 1.6450582960812087e-09, - "max_ratio": 1.6447745776232866e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 3.072592622999082e-06, - "mean_abs": 8.257417271247588e-07, - "max_relative": 0.00029077901142756247, - "max_ratio": 0.2225471585955478, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 9.138159774657595e-06, - "mean_abs": 3.4021552949416013e-06, - "max_relative": 4.097431548740198e-06, - "max_ratio": 0.03681828794195407, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 2.5168621645144107e-08, - "mean_abs": 1.2202694460508126e-08, - "max_relative": 2.6460235648039898e-06, - "max_ratio": 0.0021300188722638653, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 5.364418029785156e-07, - "mean_abs": 5.364418029785156e-07, - "max_relative": 9.250785174462079e-10, - "max_ratio": 9.249190178119503e-06, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 3.2578318069909074e-06, - "mean_abs": 8.857876907311657e-07, - "max_relative": 0.00025897255957233525, - "max_ratio": 0.18197773157379202, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 6.907196955729944e-06, - "mean_abs": 3.2810026232380865e-06, - "max_relative": 1.1137410154557084e-05, - "max_ratio": 0.07108779028853267, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 1.902403011858067e-08, - "mean_abs": 1.0941050272613969e-08, - "max_relative": 8.652974525195661e-06, - "max_ratio": 0.001625726251792459, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "left": 0, - "right": 4, - "metrics": { - "0_energy": { - "max_abs": 3.516674041748047e-06, - "mean_abs": 3.516674041748047e-06, - "max_relative": 6.063247759968554e-09, - "max_ratio": 6.0622025497615815e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 3.2823477695842485e-06, - "mean_abs": 8.839282358523206e-07, - "max_relative": 0.00020464965009608344, - "max_ratio": 0.25890461210680166, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 9.622049509161457e-06, - "mean_abs": 4.642091341778966e-06, - "max_relative": 1.4183353787201505e-05, - "max_ratio": 0.10899733540006643, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 2.650136674345327e-08, - "mean_abs": 1.5290398695145598e-08, - "max_relative": 1.3874511688985726e-05, - "max_ratio": 0.0022740881153230194, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 5.364418029785156e-07, - "mean_abs": 5.364418029785156e-07, - "max_relative": 9.253452939241907e-10, - "max_ratio": 9.251857022907892e-06, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 3.218249410963381e-06, - "mean_abs": 9.158397781168967e-07, - "max_relative": 0.00036924432162528155, - "max_ratio": 0.2826209178989357, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 6.380520600757222e-06, - "mean_abs": 2.5744617862348087e-06, - "max_relative": 8.864145951536472e-06, - "max_ratio": 0.07523450405792259, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 1.7573440699164555e-08, - "mean_abs": 7.1633927793791794e-09, - "max_relative": 6.3961402482526385e-06, - "max_ratio": 0.0015074465811325795, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 2.8014183044433594e-06, - "mean_abs": 2.8014183044433594e-06, - "max_relative": 4.830965563300724e-09, - "max_ratio": 4.8301326207758556e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 3.4257420757910495e-06, - "mean_abs": 8.769898487970273e-07, - "max_relative": 7.557494315839386e-05, - "max_ratio": 0.1225531436537252, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 7.613317217547433e-06, - "mean_abs": 3.197560840995095e-06, - "max_relative": 2.3634955035730916e-05, - "max_ratio": 0.1508563578526751, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 2.0968849882146978e-08, - "mean_abs": 9.646180220006182e-09, - "max_relative": 1.7951638661488256e-05, - "max_ratio": 0.0017990714517089582, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "left": 3, - "right": 4, - "metrics": { - "0_energy": { - "max_abs": 4.410743713378906e-06, - "mean_abs": 4.410743713378906e-06, - "max_relative": 7.60475142775717e-09, - "max_ratio": 7.603440486141644e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 3.0916532978153555e-06, - "mean_abs": 9.305361371817847e-07, - "max_relative": 0.00017413721193387842, - "max_ratio": 0.22838952639928795, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 7.448277292931849e-06, - "mean_abs": 4.2978168480694515e-06, - "max_relative": 2.0845363055897785e-05, - "max_ratio": 0.16287116359459955, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 1.907185856030863e-08, - "mean_abs": 1.0950027422520296e-08, - "max_relative": 1.9379657422618404e-05, - "max_ratio": 0.001888599816151424, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 1.4901161193847656e-06, - "mean_abs": 1.4901161193847656e-06, - "max_relative": 2.570403594233863e-09, - "max_ratio": 2.5699602841410813e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 3.3687922851299845e-06, - "mean_abs": 8.240444436026969e-07, - "max_relative": 7.848813289941239e-05, - "max_ratio": 0.11443101806335318, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 1.3313125077019095e-05, - "mean_abs": 5.59745221890346e-06, - "max_relative": 1.0058768345251114e-05, - "max_ratio": 0.08537387042429323, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 3.666744905275743e-08, - "mean_abs": 1.9150195969748426e-08, - "max_relative": 9.042187738898462e-06, - "max_ratio": 0.003145327182061733, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 3.337860107421875e-06, - "mean_abs": 3.337860107421875e-06, - "max_relative": 5.756044075422138e-09, - "max_ratio": 5.755051633264849e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 3.327522954066353e-06, - "mean_abs": 8.446165667130393e-07, - "max_relative": 0.00018344512366715853, - "max_ratio": 0.15726049204774675, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 1.3753510108571732e-05, - "mean_abs": 5.100490138940403e-06, - "max_relative": 1.2497405692440768e-05, - "max_ratio": 0.10085031873806688, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 3.7880372061316336e-08, - "mean_abs": 1.8009192727528706e-08, - "max_relative": 9.298583675884927e-06, - "max_ratio": 0.0032500349966094605, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - } - ], - "FIXED_self": [ - { - "left": 1, - "right": 2, - "metrics": { - "0_energy": { - "max_abs": 2.5033950805664062e-06, - "mean_abs": 2.5033950805664062e-06, - "max_relative": 4.316210295978376e-09, - "max_ratio": 4.315466248025407e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 3.464957440968419e-06, - "mean_abs": 8.566671179805382e-07, - "max_relative": 0.00013695467135212407, - "max_ratio": 0.15173810696645162, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 1.0431228751883737e-05, - "mean_abs": 3.735409205815918e-06, - "max_relative": 8.53347719245301e-06, - "max_ratio": 0.0655788598753071, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 2.8730034955237738e-08, - "mean_abs": 1.301779196452218e-08, - "max_relative": 7.649554833729004e-06, - "max_ratio": 0.0024653308187899564, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 1.9073486328125e-06, - "mean_abs": 1.9073486328125e-06, - "max_relative": 3.290116601972453e-09, - "max_ratio": 3.289549165053226e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 3.0887364204090773e-06, - "mean_abs": 7.468107269028209e-07, - "max_relative": 0.00018952946762189202, - "max_ratio": 0.1553377294372898, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 4.861605932937607e-06, - "mean_abs": 2.3255834481730432e-06, - "max_relative": 6.579688265428884e-06, - "max_ratio": 0.0558452113547386, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 1.3389995723311898e-08, - "mean_abs": 5.92888821913419e-09, - "max_relative": 6.203949590935915e-06, - "max_ratio": 0.0011485910563039455, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 2.6226043701171875e-06, - "mean_abs": 2.6226043701171875e-06, - "max_relative": 4.522606108535715e-09, - "max_ratio": 4.521826332537997e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 3.0098079371043696e-06, - "mean_abs": 8.000548023297943e-07, - "max_relative": 4.621128518980757e-05, - "max_ratio": 0.11214579410508098, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 1.6102631762215935e-05, - "mean_abs": 5.236860729155672e-06, - "max_relative": 1.408936271354574e-05, - "max_ratio": 0.08992926857064246, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 4.4350400553450076e-08, - "mean_abs": 1.8307552185382518e-08, - "max_relative": 1.2324680868699736e-05, - "max_ratio": 0.003805146938924361, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "left": 1, - "right": 5, - "metrics": { - "0_energy": { - "max_abs": 2.1457672119140625e-06, - "mean_abs": 2.1457672119140625e-06, - "max_relative": 3.699608822843138e-09, - "max_ratio": 3.698971067455665e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 3.452820550364777e-06, - "mean_abs": 8.50088282605919e-07, - "max_relative": 9.110506307853517e-05, - "max_ratio": 0.14261412509849772, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 1.5471517931686662e-05, - "mean_abs": 4.255925488496872e-06, - "max_relative": 5.7410638300566795e-06, - "max_ratio": 0.04485669448764502, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 4.2612165983280104e-08, - "mean_abs": 1.6293057885665135e-08, - "max_relative": 4.687701030752969e-06, - "max_ratio": 0.0036565600679524814, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 3.2782554626464844e-06, - "mean_abs": 3.2782554626464844e-06, - "max_relative": 5.654887859057156e-09, - "max_ratio": 5.653912576869681e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 3.1145664216580826e-06, - "mean_abs": 7.611858398870464e-07, - "max_relative": 0.00018604014174886728, - "max_ratio": 0.14239085085210829, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 1.308394809118596e-05, - "mean_abs": 6.308510781353564e-06, - "max_relative": 1.8865476796092743e-05, - "max_ratio": 0.16012074414403737, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 3.6036242226367143e-08, - "mean_abs": 1.9459369161823822e-08, - "max_relative": 1.7817344800203037e-05, - "max_ratio": 0.0030497461495408245, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 1.7285346984863281e-06, - "mean_abs": 1.7285346984863281e-06, - "max_relative": 2.9808085491686604e-09, - "max_ratio": 2.980294605905149e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 3.558982866636029e-06, - "mean_abs": 8.532306706842546e-07, - "max_relative": 0.0001251744707255284, - "max_ratio": 0.15948698843428785, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 1.7625671745236104e-05, - "mean_abs": 4.94553905226273e-06, - "max_relative": 7.468606827717489e-06, - "max_ratio": 0.061324633485665386, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 4.85452076072479e-08, - "mean_abs": 1.842574916499336e-08, - "max_relative": 5.90659958115022e-06, - "max_ratio": 0.004165050427261389, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "left": 2, - "right": 5, - "metrics": { - "0_energy": { - "max_abs": 3.5762786865234375e-07, - "mean_abs": 3.5762786865234375e-07, - "max_relative": 6.166014704738564e-10, - "max_ratio": 6.1649517790927755e-06, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 3.0560628623277353e-06, - "mean_abs": 8.003858274497252e-07, - "max_relative": 0.00013980057584457578, - "max_ratio": 0.13452822025794395, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 5.040289179802926e-06, - "mean_abs": 2.7159711748245584e-06, - "max_relative": 9.5484088243805e-06, - "max_ratio": 0.07337866316405262, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 1.3882131028042366e-08, - "mean_abs": 7.810361734965354e-09, - "max_relative": 8.40958432071667e-06, - "max_ratio": 0.0011912289554851792, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 5.185604095458984e-06, - "mean_abs": 5.185604095458984e-06, - "max_relative": 8.945004431599502e-09, - "max_ratio": 8.943461712502949e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 2.7869749814612987e-06, - "mean_abs": 7.410935437916303e-07, - "max_relative": 9.683531416660768e-05, - "max_ratio": 0.15359708738223432, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 1.458303843548947e-05, - "mean_abs": 6.698377729769729e-06, - "max_relative": 1.2285707694537109e-05, - "max_ratio": 0.10427495046363401, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 4.016508639223537e-08, - "mean_abs": 2.2192026930221525e-08, - "max_relative": 1.161332316079565e-05, - "max_ratio": 0.0033991701132774603, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 4.351139068603516e-06, - "mean_abs": 4.351139068603516e-06, - "max_relative": 7.503414623769387e-09, - "max_ratio": 7.502120904519858e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 3.2130779956673905e-06, - "mean_abs": 9.486840407517405e-07, - "max_relative": 0.00016168008936062617, - "max_ratio": 0.1841048210822708, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 3.900632851605579e-06, - "mean_abs": 1.6166356524078335e-06, - "max_relative": 1.545687728526555e-05, - "max_ratio": 0.09865836153998099, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 8.048961187660797e-09, - "mean_abs": 3.999675147405548e-09, - "max_relative": 1.3748926252107536e-05, - "max_ratio": 0.0007948484312275592, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - } - ], - "BASE_to_FIXED": [ - { - "left": 0, - "right": 1, - "metrics": { - "0_energy": { - "max_abs": 2.5033950805664062e-06, - "mean_abs": 2.5033950805664062e-06, - "max_relative": 4.316210295978376e-09, - "max_ratio": 4.315466248025407e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 3.2497954052246314e-06, - "mean_abs": 8.170359411819225e-07, - "max_relative": 0.0001600258481928866, - "max_ratio": 0.2563435876828824, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 1.6732199354052568e-05, - "mean_abs": 6.382014568342667e-06, - "max_relative": 8.438116733027205e-06, - "max_ratio": 0.06484610575977443, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 4.608437641911989e-08, - "mean_abs": 2.3482017297207086e-08, - "max_relative": 7.171305062815963e-06, - "max_ratio": 0.003954511386667091, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 1.1324882507324219e-06, - "mean_abs": 1.1324882507324219e-06, - "max_relative": 1.9535067298100677e-09, - "max_ratio": 1.953169814140177e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 2.4917882583963546e-06, - "mean_abs": 8.187516069800097e-07, - "max_relative": 0.0001457299170923512, - "max_ratio": 0.1288229190236598, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 6.2591292930846976e-06, - "mean_abs": 2.8019525226315642e-06, - "max_relative": 5.437627577013009e-06, - "max_ratio": 0.046151970751207146, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 1.7239100747606928e-08, - "mean_abs": 8.434100154458673e-09, - "max_relative": 5.0534887765316435e-06, - "max_ratio": 0.0014696344164177805, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 8.940696716308594e-07, - "mean_abs": 8.940696716308594e-07, - "max_relative": 1.5417975276507295e-09, - "max_ratio": 1.5415316949274583e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 3.0821727698970847e-06, - "mean_abs": 8.665492355972257e-07, - "max_relative": 0.00014890554261097887, - "max_ratio": 0.10460941651911013, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 1.5530077689618338e-05, - "mean_abs": 4.85358025624648e-06, - "max_relative": 1.5981533887883987e-05, - "max_ratio": 0.10200724321074704, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 4.27734532029711e-08, - "mean_abs": 1.7410504470744513e-08, - "max_relative": 1.3272863943669268e-05, - "max_ratio": 0.0036698489819558065, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "left": 0, - "right": 2, - "metrics": { - "0_energy": { - "max_abs": 0.0, - "mean_abs": 0.0, - "max_relative": 0.0, - "max_ratio": 0.0, - "finite": true, - "passed": true, - "bitwise_equal": true - }, - "0_forces": { - "max_abs": 3.564676553935442e-06, - "mean_abs": 9.65789413001165e-07, - "max_relative": 0.00024659012952264785, - "max_ratio": 0.24858991453507, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 1.0182196941599386e-05, - "mean_abs": 3.862737266250675e-06, - "max_relative": 1.5203637665294587e-05, - "max_ratio": 0.11683847559469454, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 2.804414330967453e-08, - "mean_abs": 1.3089311808533403e-08, - "max_relative": 1.4820746524431751e-05, - "max_ratio": 0.002412478572977225, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 7.748603820800781e-07, - "mean_abs": 7.748603820800781e-07, - "max_relative": 1.336609867764783e-09, - "max_ratio": 1.3363793465169632e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 2.7782762650474524e-06, - "mean_abs": 7.973099946240181e-07, - "max_relative": 0.0003353229382922192, - "max_ratio": 0.2565698522949588, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 7.163670851184634e-06, - "mean_abs": 3.4782319593418265e-06, - "max_relative": 4.011891984749853e-06, - "max_ratio": 0.03656863357223033, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 1.97304189965275e-08, - "mean_abs": 1.1436187822109803e-08, - "max_relative": 2.2032958862029333e-06, - "max_ratio": 0.001692471536237772, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 3.516674041748047e-06, - "mean_abs": 3.516674041748047e-06, - "max_relative": 6.064403608759535e-09, - "max_ratio": 6.063358000048003e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 3.4110940561049574e-06, - "mean_abs": 8.867498779395466e-07, - "max_relative": 0.00011238991726285375, - "max_ratio": 0.13152191825833903, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 4.683424453255647e-06, - "mean_abs": 2.32884255524985e-06, - "max_relative": 2.65412376931645e-05, - "max_ratio": 0.1694079246381617, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 1.2440488126794474e-08, - "mean_abs": 5.793119772690422e-09, - "max_relative": 2.559722933468633e-05, - "max_ratio": 0.0012380318643186422, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "left": 0, - "right": 5, - "metrics": { - "0_energy": { - "max_abs": 3.5762786865234375e-07, - "mean_abs": 3.5762786865234375e-07, - "max_relative": 6.166014708540537e-10, - "max_ratio": 6.1649517828934386e-06, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 2.6479242194454855e-06, - "mean_abs": 8.848242572627452e-07, - "max_relative": 0.00016049889405174818, - "max_ratio": 0.14319398833105043, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 5.842541449752048e-06, - "mean_abs": 3.2079253548040262e-06, - "max_relative": 7.932949304317797e-06, - "max_ratio": 0.06096394324117989, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 1.60917207406297e-08, - "mean_abs": 9.536634793041286e-09, - "max_relative": 6.411216119377634e-06, - "max_ratio": 0.0013842794575832202, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 4.410743713378906e-06, - "mean_abs": 4.410743713378906e-06, - "max_relative": 7.608394631891842e-09, - "max_ratio": 7.607082434019637e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 3.0591417443659452e-06, - "mean_abs": 8.126516822711446e-07, - "max_relative": 0.00033183179287500175, - "max_ratio": 0.2538986283441084, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 8.145923447777648e-06, - "mean_abs": 4.425371495574302e-06, - "max_relative": 1.4195859270381565e-05, - "max_ratio": 0.12048762166138247, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 2.2435771563494855e-08, - "mean_abs": 1.2896613491106962e-08, - "max_relative": 1.2763628609699553e-05, - "max_ratio": 0.001942695399208099, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 8.344650268554688e-07, - "mean_abs": 8.344650268554688e-07, - "max_relative": 1.4390110258073474e-09, - "max_ratio": 1.4387629152656278e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 3.0745850949642772e-06, - "mean_abs": 8.560020093329827e-07, - "max_relative": 0.00027411432545211404, - "max_ratio": 0.19878841936231909, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 2.7684267465133416e-06, - "mean_abs": 1.623742950633093e-06, - "max_relative": 1.4500457370956113e-05, - "max_ratio": 0.09255379940892738, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 7.624892436192132e-09, - "mean_abs": 4.518151703952148e-09, - "max_relative": 1.184846598626384e-05, - "max_ratio": 0.0006493777217609957, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "left": 3, - "right": 1, - "metrics": { - "0_energy": { - "max_abs": 3.3974647521972656e-06, - "mean_abs": 3.3974647521972656e-06, - "max_relative": 5.857713982143198e-09, - "max_ratio": 5.856704202775342e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 2.8331195096598094e-06, - "mean_abs": 8.391489818068004e-07, - "max_relative": 0.000141521208429515, - "max_ratio": 0.13616619325918683, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 1.3557260022167839e-05, - "mean_abs": 4.900032116937779e-06, - "max_relative": 1.6747003465334255e-05, - "max_ratio": 0.1308488367659256, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 3.7339853587586846e-08, - "mean_abs": 1.571966778185771e-08, - "max_relative": 1.490426849288731e-05, - "max_ratio": 0.003204141546055703, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 1.7881393432617188e-07, - "mean_abs": 1.7881393432617188e-07, - "max_relative": 3.084484305152266e-10, - "max_ratio": 3.0839523330436627e-06, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 2.6708029654542997e-06, - "mean_abs": 7.695750990956615e-07, - "max_relative": 0.00014509146953643878, - "max_ratio": 0.1312238033096061, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 4.630539558014846e-06, - "mean_abs": 2.3863599110724506e-06, - "max_relative": 4.191521811319009e-06, - "max_ratio": 0.03820596720385815, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 1.2753585080377272e-08, - "mean_abs": 6.8802454654433064e-09, - "max_relative": 3.8047308292898984e-06, - "max_ratio": 0.0010939998893052874, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 3.5762786865234375e-07, - "mean_abs": 3.5762786865234375e-07, - "max_relative": 6.167190116308052e-10, - "max_ratio": 6.166126785413002e-06, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 2.9193637693936125e-06, - "mean_abs": 8.154476670036576e-07, - "max_relative": 0.00011010557941086086, - "max_ratio": 0.11242474644896829, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 2.1670270580642637e-05, - "mean_abs": 7.4559687065057905e-06, - "max_relative": 1.1599905319604472e-05, - "max_ratio": 0.09524648915176151, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 5.968497538214046e-08, - "mean_abs": 2.694975855708621e-08, - "max_relative": 9.660968082858098e-06, - "max_ratio": 0.005120813530906574, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "left": 3, - "right": 2, - "metrics": { - "0_energy": { - "max_abs": 8.940696716308594e-07, - "mean_abs": 8.940696716308594e-07, - "max_relative": 1.5415036795113678e-09, - "max_ratio": 1.541237948098774e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 3.652311042046108e-06, - "mean_abs": 9.0165124397359e-07, - "max_relative": 0.0002160905265423494, - "max_ratio": 0.1663773591491956, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 6.3409835576178075e-06, - "mean_abs": 4.535569011082035e-06, - "max_relative": 1.7746769432867446e-05, - "max_ratio": 0.13866027683403492, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 1.636903270568757e-08, - "mean_abs": 1.1799454028468883e-08, - "max_relative": 1.5800162788249333e-05, - "max_ratio": 0.0015716921143921737, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 1.7285346984863281e-06, - "mean_abs": 1.7285346984863281e-06, - "max_relative": 2.9816681616471906e-09, - "max_ratio": 2.9811539219422073e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 2.622570361765497e-06, - "mean_abs": 8.008451883127302e-07, - "max_relative": 8.143111917855028e-05, - "max_ratio": 0.12916177030542228, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 4.341390157813763e-06, - "mean_abs": 2.146065588965524e-06, - "max_relative": 4.4880118389860785e-06, - "max_ratio": 0.038418718898414785, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 1.0661650651742904e-08, - "mean_abs": 5.1139682926727714e-09, - "max_relative": 3.7964741977241034e-06, - "max_ratio": 0.001036753284290047, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 2.9802322387695312e-06, - "mean_abs": 2.9802322387695312e-06, - "max_relative": 5.139325096923377e-09, - "max_ratio": 5.138438987844168e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 3.0200959031390084e-06, - "mean_abs": 8.762374907993661e-07, - "max_relative": 0.0001466117482140252, - "max_ratio": 0.17428169824314738, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 7.230537531155434e-06, - "mean_abs": 3.773210884418078e-06, - "max_relative": 1.8484811674911637e-05, - "max_ratio": 0.1293563947770333, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 1.581117151788769e-08, - "mean_abs": 1.0832932002896705e-08, - "max_relative": 1.694447630166402e-05, - "max_ratio": 0.001351166732180352, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "left": 3, - "right": 5, - "metrics": { - "0_energy": { - "max_abs": 1.2516975402832031e-06, - "mean_abs": 1.2516975402832031e-06, - "max_relative": 2.158105151315915e-09, - "max_ratio": 2.1577331273382837e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 3.021258759616785e-06, - "mean_abs": 9.514052733353382e-07, - "max_relative": 0.00014438667293904412, - "max_ratio": 0.18998665090521874, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 8.03511220237585e-06, - "mean_abs": 3.231909721734816e-06, - "max_relative": 2.24881964015619e-05, - "max_ratio": 0.17570631941403955, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 1.9280515324484465e-08, - "mean_abs": 8.579979346756637e-09, - "max_relative": 1.9592061365366535e-05, - "max_ratio": 0.001909262511515301, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 3.4570693969726562e-06, - "mean_abs": 3.4570693969726562e-06, - "max_relative": 5.963336323294381e-09, - "max_ratio": 5.9623078438844146e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 3.799431247841767e-06, - "mean_abs": 8.736820588846802e-07, - "max_relative": 5.220489665077357e-05, - "max_ratio": 0.10770858027384109, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 1.7284083222435243e-05, - "mean_abs": 7.827526790515904e-06, - "max_relative": 1.542878404516959e-05, - "max_ratio": 0.1309521884652673, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 4.760439320863896e-08, - "mean_abs": 2.509930795161509e-08, - "max_relative": 1.540961840164147e-05, - "max_ratio": 0.004028756813412307, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 1.3709068298339844e-06, - "mean_abs": 1.3709068298339844e-06, - "max_relative": 2.3640895445847535e-09, - "max_ratio": 2.3636819344083173e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 3.6259248403780475e-06, - "mean_abs": 9.17398632047095e-07, - "max_relative": 0.00011741689010772874, - "max_ratio": 0.17111553341544167, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 7.114759327464526e-06, - "mean_abs": 2.628289404103966e-06, - "max_relative": 7.255286860349191e-06, - "max_ratio": 0.05957295186446658, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 1.9595705263303342e-08, - "mean_abs": 8.52400939209285e-09, - "max_relative": 4.731002824113286e-06, - "max_ratio": 0.0016745795854173449, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "left": 4, - "right": 1, - "metrics": { - "0_energy": { - "max_abs": 1.0132789611816406e-06, - "mean_abs": 1.0132789611816406e-06, - "max_relative": 1.747037490160431e-09, - "max_ratio": 1.746736327897405e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 3.290223560270533e-06, - "mean_abs": 8.041648595329363e-07, - "max_relative": 6.517579561001305e-05, - "max_ratio": 0.19868143753148934, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 7.147174594379635e-06, - "mean_abs": 3.3849157402874062e-06, - "max_relative": 7.661087616193025e-06, - "max_ratio": 0.05887465114312625, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 1.9684984461920685e-08, - "mean_abs": 1.170259162649014e-08, - "max_relative": 6.703107127813843e-06, - "max_ratio": 0.0017014994071021157, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 1.6689300537109375e-06, - "mean_abs": 1.6689300537109375e-06, - "max_relative": 2.8788520255419266e-09, - "max_ratio": 2.878355518238011e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 3.3309182398966186e-06, - "mean_abs": 8.264881629869528e-07, - "max_relative": 0.00022356821447730763, - "max_ratio": 0.17257859387711083, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 8.682585519004249e-06, - "mean_abs": 4.844359711252287e-06, - "max_relative": 1.3533537055391348e-05, - "max_ratio": 0.1148659954471302, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 2.3913863972380156e-08, - "mean_abs": 1.5318228923339183e-08, - "max_relative": 1.1449661347607239e-05, - "max_ratio": 0.0020513269486576867, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 3.6954879760742188e-06, - "mean_abs": 3.6954879760742188e-06, - "max_relative": 6.372763083503082e-09, - "max_ratio": 6.371664308257512e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 3.8669147395253844e-06, - "mean_abs": 8.413805578314643e-07, - "max_relative": 7.331934592466621e-05, - "max_ratio": 0.10484243242327972, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 7.916760472070905e-06, - "mean_abs": 3.1147095480206963e-06, - "max_relative": 7.653043425012089e-06, - "max_ratio": 0.052615763883340605, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 2.1804603320824123e-08, - "mean_abs": 1.0092492480195253e-08, - "max_relative": 6.043192585390032e-06, - "max_ratio": 0.001870776870014795, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "left": 4, - "right": 2, - "metrics": { - "0_energy": { - "max_abs": 3.516674041748047e-06, - "mean_abs": 3.516674041748047e-06, - "max_relative": 6.063247759968554e-09, - "max_ratio": 6.0622025497615815e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 2.558920101591866e-06, - "mean_abs": 7.963307079658875e-07, - "max_relative": 0.00015248590797911364, - "max_ratio": 0.20080905567073987, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 3.321078906992625e-06, - "mean_abs": 1.5894322017490698e-06, - "max_relative": 4.0606384140641834e-06, - "max_ratio": 0.03172699898198549, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 9.14702527957112e-09, - "mean_abs": 5.259374560283765e-09, - "max_relative": 3.579800836111131e-06, - "max_ratio": 0.0007849082532307691, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 2.384185791015625e-07, - "mean_abs": 2.384185791015625e-07, - "max_relative": 4.112645750774181e-10, - "max_ratio": 4.11193645462573e-06, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 3.1207533197630255e-06, - "mean_abs": 8.403453724640612e-07, - "max_relative": 5.225748720673966e-05, - "max_ratio": 0.09793277618149758, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 1.3544191451941856e-05, - "mean_abs": 5.322241773581599e-06, - "max_relative": 6.953803036106228e-06, - "max_ratio": 0.059020454491416074, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 3.7303859695692054e-08, - "mean_abs": 1.800687441469642e-08, - "max_relative": 5.245679212741918e-06, - "max_ratio": 0.0031999183725013947, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 6.318092346191406e-06, - "mean_abs": 6.318092346191406e-06, - "max_relative": 1.0895369142763335e-08, - "max_ratio": 0.00010893490591537036, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 3.2605700186483233e-06, - "mean_abs": 8.368412163934266e-07, - "max_relative": 9.9140822278612e-05, - "max_ratio": 0.18383399529031766, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 8.555791906061927e-06, - "mean_abs": 3.5528820367762095e-06, - "max_relative": 1.2385105362876509e-05, - "max_ratio": 0.07905172709619647, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 2.3564644811846502e-08, - "mean_abs": 1.2046217676061352e-08, - "max_relative": 7.646050185409828e-06, - "max_ratio": 0.0020068943337864928, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "left": 4, - "right": 5, - "metrics": { - "0_energy": { - "max_abs": 3.159046173095703e-06, - "mean_abs": 3.159046173095703e-06, - "max_relative": 5.446646292853109e-09, - "max_ratio": 5.445707375209556e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 3.391698790267128e-06, - "mean_abs": 8.152480790116906e-07, - "max_relative": 0.00012070849007633732, - "max_ratio": 0.1695978442400181, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 8.361368086795551e-06, - "mean_abs": 2.466124053012041e-06, - "max_relative": 8.67610953561439e-06, - "max_ratio": 0.06667498764916598, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 2.3029156307613485e-08, - "mean_abs": 7.685625896987347e-09, - "max_relative": 7.463206617115103e-06, - "max_ratio": 0.00197613697331279, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 4.947185516357422e-06, - "mean_abs": 4.947185516357422e-06, - "max_relative": 8.533739932856425e-09, - "max_ratio": 8.53226814334839e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 2.4330501062763688e-06, - "mean_abs": 7.706839581742934e-07, - "max_relative": 7.449196392872802e-05, - "max_ratio": 0.1483188708243597, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 5.012745159405085e-06, - "mean_abs": 2.3900289757541572e-06, - "max_relative": 7.4032950267375415e-06, - "max_ratio": 0.06283557446679792, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 1.3806268378546704e-08, - "mean_abs": 6.1582937833767086e-09, - "max_relative": 6.36756999940558e-06, - "max_ratio": 0.0011684239617101707, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 1.9669532775878906e-06, - "mean_abs": 1.9669532775878906e-06, - "max_relative": 3.391954544445189e-09, - "max_ratio": 3.391369712459643e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 3.877306451016693e-06, - "mean_abs": 9.560547285213568e-07, - "max_relative": 0.00019851866611915524, - "max_ratio": 0.15325354178747644, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 9.7089112731652e-06, - "mean_abs": 3.5839522669056656e-06, - "max_relative": 9.134154947116843e-06, - "max_ratio": 0.06028569288529424, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 2.6740604286423775e-08, - "mean_abs": 1.2054285844509145e-08, - "max_relative": 6.102959975844337e-06, - "max_ratio": 0.002294272601670486, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - } - ], - "fresh_TORCH_reference": [ - { - "run": 0, - "arm": "BASE", - "metrics": { - "0_energy": { - "max_abs": 2.5033950805664062e-06, - "mean_abs": 2.5033950805664062e-06, - "max_relative": 4.316210277348705e-09, - "max_ratio": 4.315466229402158e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 3.925824630712782e-06, - "mean_abs": 1.1316701976644278e-06, - "max_relative": 9.947909213479234e-05, - "max_ratio": 0.21011716865236335, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 2.2983075097293693e-05, - "mean_abs": 5.13236174452351e-06, - "max_relative": 9.967756171134278e-06, - "max_ratio": 0.07660105918536045, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 6.3300744965189e-08, - "mean_abs": 1.6542216766132132e-08, - "max_relative": 7.027449006800764e-06, - "max_ratio": 0.005445401060680373, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 3.5762786865234375e-07, - "mean_abs": 3.5762786865234375e-07, - "max_relative": 6.168968624258463e-10, - "max_ratio": 6.167904680036443e-06, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 4.9024780111039945e-06, - "mean_abs": 1.3303387125287076e-06, - "max_relative": 0.00020759325003847186, - "max_ratio": 0.3528409108417077, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 1.358681530039263e-05, - "mean_abs": 7.393902649082622e-06, - "max_relative": 1.1642783076590821e-05, - "max_ratio": 0.10568174873739804, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 3.742125570874166e-08, - "mean_abs": 2.198987547199673e-08, - "max_relative": 1.0526286743058509e-05, - "max_ratio": 0.0031669581966787728, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 5.364418029785156e-07, - "mean_abs": 5.364418029785156e-07, - "max_relative": 9.250785157346674e-10, - "max_ratio": 9.249190161009998e-06, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 4.306604660442304e-06, - "mean_abs": 1.1957265343125884e-06, - "max_relative": 0.00022402680904011062, - "max_ratio": 0.2988872331978788, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 8.136632175137493e-06, - "mean_abs": 3.7477703602492894e-06, - "max_relative": 3.869418065681748e-05, - "max_ratio": 0.24697450699171744, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 2.2410181231558024e-08, - "mean_abs": 1.1691497407043304e-08, - "max_relative": 3.6568041555416964e-05, - "max_ratio": 0.0019085744922526034, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "run": 1, - "arm": "FIXED", - "metrics": { - "0_energy": { - "max_abs": 0.0, - "mean_abs": 0.0, - "max_relative": 0.0, - "max_ratio": 0.0, - "finite": true, - "passed": true, - "bitwise_equal": true - }, - "0_forces": { - "max_abs": 4.527575256929595e-06, - "mean_abs": 1.067519477960498e-06, - "max_relative": 0.00018370823246949622, - "max_ratio": 0.25518220696062394, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 1.6043919504049597e-05, - "mean_abs": 5.64965593369271e-06, - "max_relative": 6.79372359959658e-06, - "max_ratio": 0.053081286935481586, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 4.418869330863329e-08, - "mean_abs": 2.0680690620395424e-08, - "max_relative": 4.462850166656916e-06, - "max_ratio": 0.0038195128645091784, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 1.4901161193847656e-06, - "mean_abs": 1.4901161193847656e-06, - "max_relative": 2.570403593441026e-09, - "max_ratio": 2.569960283348518e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 4.097163397887016e-06, - "mean_abs": 1.3121784282338345e-06, - "max_relative": 0.00015755771831217906, - "max_ratio": 0.26779680374534254, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 9.584862855405163e-06, - "mean_abs": 6.71797738392864e-06, - "max_relative": 1.708047396272216e-05, - "max_ratio": 0.14497060260767908, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 2.407962315415131e-08, - "mean_abs": 1.855203801638585e-08, - "max_relative": 1.5579828714062066e-05, - "max_ratio": 0.00237131216706514, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 1.430511474609375e-06, - "mean_abs": 1.430511474609375e-06, - "max_relative": 2.466876041959113e-09, - "max_ratio": 2.466450709602666e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 4.6781486453539856e-06, - "mean_abs": 1.1865757921445304e-06, - "max_relative": 0.00017814919080574304, - "max_ratio": 0.25958145708885877, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 1.5851051300863617e-05, - "mean_abs": 5.758438917282918e-06, - "max_relative": 2.387734981019379e-05, - "max_ratio": 0.1524032736709229, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 4.3657489328524646e-08, - "mean_abs": 2.0098080416508528e-08, - "max_relative": 2.3294692249107447e-05, - "max_ratio": 0.0037181123020493963, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "run": 2, - "arm": "FIXED", - "metrics": { - "0_energy": { - "max_abs": 2.5033950805664062e-06, - "mean_abs": 2.5033950805664062e-06, - "max_relative": 4.316210277348705e-09, - "max_ratio": 4.315466229402158e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 4.120793080986118e-06, - "mean_abs": 1.206645155507266e-06, - "max_relative": 0.0002158360388633338, - "max_ratio": 0.19977655642001657, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 1.2800878155694306e-05, - "mean_abs": 4.861094871343328e-06, - "max_relative": 1.0350732105010215e-05, - "max_ratio": 0.07954446020100742, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 3.5256601655514475e-08, - "mean_abs": 1.5474512483416077e-08, - "max_relative": 7.793401669671431e-06, - "max_ratio": 0.0030329238013944862, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 4.172325134277344e-07, - "mean_abs": 4.172325134277344e-07, - "max_relative": 7.197130061634873e-10, - "max_ratio": 7.19588879337585e-06, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 5.5258943802982685e-06, - "mean_abs": 1.2796234949522904e-06, - "max_relative": 0.00017503752070820261, - "max_ratio": 0.2975067745541382, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 1.3362219120516272e-05, - "mean_abs": 5.676467307091926e-06, - "max_relative": 1.1252196638502153e-05, - "max_ratio": 0.09550307157189585, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 3.680266548802824e-08, - "mean_abs": 1.7130493982062758e-08, - "max_relative": 9.375820956005566e-06, - "max_ratio": 0.0031569260099769993, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 4.0531158447265625e-06, - "mean_abs": 4.0531158447265625e-06, - "max_relative": 6.989482118884153e-09, - "max_ratio": 6.988277010540888e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 4.373390538603417e-06, - "mean_abs": 1.1224270012547694e-06, - "max_relative": 0.00016574727123934367, - "max_ratio": 0.24151060121135348, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 7.394178226149961e-06, - "mean_abs": 3.0288296546202944e-06, - "max_relative": 1.2151915972206826e-05, - "max_ratio": 0.07756239840968897, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 2.0365290030743832e-08, - "mean_abs": 8.773099016806009e-09, - "max_relative": 1.0969876180184622e-05, - "max_ratio": 0.0017472876572367502, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "run": 3, - "arm": "BASE", - "metrics": { - "0_energy": { - "max_abs": 3.3974647521972656e-06, - "mean_abs": 3.3974647521972656e-06, - "max_relative": 5.8577139478303855e-09, - "max_ratio": 5.856704168474357e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 4.454404965770209e-06, - "mean_abs": 1.0822716146284088e-06, - "max_relative": 0.0001413014023672787, - "max_ratio": 0.1359720688692467, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 1.5614621201365253e-05, - "mean_abs": 4.717924652416124e-06, - "max_relative": 1.4614767888090017e-05, - "max_ratio": 0.11418947235887897, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 4.300630573883524e-08, - "mean_abs": 1.5187287509142635e-08, - "max_relative": 1.0441262706847604e-05, - "max_ratio": 0.003699586521690765, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 1.3113021850585938e-06, - "mean_abs": 1.3113021850585938e-06, - "max_relative": 2.261955162228103e-09, - "max_ratio": 2.261565049346696e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 6.283628756875714e-06, - "mean_abs": 1.2897524341905682e-06, - "max_relative": 0.00018531713913155803, - "max_ratio": 0.31497877774754524, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 1.313115274559351e-05, - "mean_abs": 7.1632861239222396e-06, - "max_relative": 1.574027912004727e-05, - "max_ratio": 0.13359569261523305, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 3.6166254845093615e-08, - "mean_abs": 1.95208834053564e-08, - "max_relative": 1.31723451621982e-05, - "max_ratio": 0.0031369967263049567, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 1.0728836059570312e-06, - "mean_abs": 1.0728836059570312e-06, - "max_relative": 1.8501570314693347e-09, - "max_ratio": 1.8498380322019996e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 4.250479454626088e-06, - "mean_abs": 1.2169380960256927e-06, - "max_relative": 0.00018613188063891704, - "max_ratio": 0.2712130465954496, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 1.2961817044576662e-05, - "mean_abs": 4.329289229745539e-06, - "max_relative": 2.8273183491474522e-05, - "max_ratio": 0.18046080303936543, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 3.5699864859434216e-08, - "mean_abs": 1.3419665789574705e-08, - "max_relative": 2.791482548394752e-05, - "max_ratio": 0.0030629533456062973, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "run": 4, - "arm": "BASE", - "metrics": { - "0_energy": { - "max_abs": 1.0132789611816406e-06, - "mean_abs": 1.0132789611816406e-06, - "max_relative": 1.747037493212571e-09, - "max_ratio": 1.7467363309484924e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 4.4901413449593974e-06, - "mean_abs": 1.2040938136605635e-06, - "max_relative": 0.00019091663067145355, - "max_ratio": 0.24448377220469686, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 1.581789891780261e-05, - "mean_abs": 5.753449204812553e-06, - "max_relative": 1.1646427203480092e-05, - "max_ratio": 0.09099683481350862, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 4.3566179941390004e-08, - "mean_abs": 1.9293950867689796e-08, - "max_relative": 8.93856794215537e-06, - "max_ratio": 0.0037477492973123777, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 1.7881393432617188e-07, - "mean_abs": 1.7881393432617188e-07, - "max_relative": 3.0844843121292315e-10, - "max_ratio": 3.0839523400182213e-06, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 4.911470574242571e-06, - "mean_abs": 1.3792238902863667e-06, - "max_relative": 0.00016551912435531406, - "max_ratio": 0.24192221213347356, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 1.6719993588765192e-05, - "mean_abs": 6.72102709838492e-06, - "max_relative": 1.0394280153489983e-05, - "max_ratio": 0.09474438335605129, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 4.6050758893689814e-08, - "mean_abs": 2.016729100399207e-08, - "max_relative": 9.478766625211287e-06, - "max_ratio": 0.0038972724345960473, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 2.2649765014648438e-06, - "mean_abs": 2.2649765014648438e-06, - "max_relative": 3.905887066435262e-09, - "max_ratio": 3.905213623537555e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 4.688271758368501e-06, - "mean_abs": 1.1938721353818803e-06, - "max_relative": 0.0001738727830055782, - "max_ratio": 0.253350296774, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 1.3530556705276808e-05, - "mean_abs": 3.4256812905500113e-06, - "max_relative": 2.2173229172746646e-05, - "max_ratio": 0.1415262891671298, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 3.726630642617024e-08, - "mean_abs": 1.0612924193336926e-08, - "max_relative": 1.8616068704990023e-05, - "max_ratio": 0.0031738039568059723, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - }, - { - "run": 5, - "arm": "FIXED", - "metrics": { - "0_energy": { - "max_abs": 2.1457672119140625e-06, - "mean_abs": 2.1457672119140625e-06, - "max_relative": 3.6996088091560327e-09, - "max_ratio": 3.6989710537732785e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_forces": { - "max_abs": 3.836393950518158e-06, - "mean_abs": 1.1824680998002758e-06, - "max_relative": 0.00012974215508172618, - "max_ratio": 0.2060756186204351, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_virial": { - "max_abs": 1.7140533647541645e-05, - "mean_abs": 4.038336444029462e-06, - "max_relative": 1.0428096054443312e-05, - "max_ratio": 0.08147766843054059, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "0_stress": { - "max_abs": 4.7209024224559304e-08, - "mean_abs": 1.3809508221095315e-08, - "max_relative": 9.150594092659245e-06, - "max_ratio": 0.004061122356892835, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_energy": { - "max_abs": 4.76837158203125e-06, - "mean_abs": 4.76837158203125e-06, - "max_relative": 8.225291499011284e-09, - "max_ratio": 8.223872906715258e-05, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_forces": { - "max_abs": 4.8009702418028155e-06, - "mean_abs": 1.272185179419331e-06, - "max_relative": 0.00015651893489550722, - "max_ratio": 0.26603121027427434, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_virial": { - "max_abs": 2.1732738748170277e-05, - "mean_abs": 6.43367546914063e-06, - "max_relative": 6.218779005804291e-06, - "max_ratio": 0.056684480551665306, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "1_stress": { - "max_abs": 5.985702727223652e-08, - "mean_abs": 2.085710104601472e-08, - "max_relative": 6.122652883739036e-06, - "max_ratio": 0.005065695940939568, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_energy": { - "max_abs": 2.980232238769531e-07, - "mean_abs": 2.980232238769531e-07, - "max_relative": 5.139325087414818e-10, - "max_ratio": 5.138438978338888e-06, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_forces": { - "max_abs": 5.123225150782673e-06, - "mean_abs": 1.265274831119383e-06, - "max_relative": 8.433965946043052e-05, - "max_ratio": 0.21632957633965655, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_virial": { - "max_abs": 8.91721820917013e-06, - "mean_abs": 3.827077020185982e-06, - "max_relative": 2.5245116688026845e-05, - "max_ratio": 0.16113339453682496, - "finite": true, - "passed": true, - "bitwise_equal": false - }, - "2_stress": { - "max_abs": 2.4560097084541654e-08, - "mean_abs": 1.1748530601056448e-08, - "max_relative": 2.4719142293956574e-05, - "max_ratio": 0.0021071909327867564, - "finite": true, - "passed": true, - "bitwise_equal": false - } - } - } - ] - }, - "source_sha256": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "2bf062b9bbb84e2fa4c3fd2132f3ca68e4c9cb91a093a70a600f1c1eb045b3a6", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474", - "source/tests/pt_expt/kernels/test_so2_edge_cohort.py": "e950f552d1b7012e58e7ff2190e1eeec565d9572a63d65111a527331a14c9737" - }, - "time_change_percent": 1.2845048345455856, - "first_alloc_reduction_percent": 3.621617066407956, - "first_reserved_reduction_percent": 3.9682539682539653, - "steady_alloc_reduction_percent": 4.538675335313314, - "monitor": { - "samples": 3242, - "max_temperature_c": 46, - "sm_mhz_range": [ - 172, - 2902 - ], - "sampled_device_memory_peak_bytes": 1816068096, - "scope": "250 ms samples over each whole process, including compilation and idle; no foreign compute process detected" - } - }, - "runs": [ - { - "run": 0, - "arm": "BASE", - "status": "completed", - "n_atoms": 64, - "first_ms": 124931.33242195472, - "wall_ms": { - "median": 12.157610966823995, - "p90": 12.462712894193828, - "min": 12.077634921297431, - "max": 12.85580382682383, - "samples": [ - 12.30828114785254, - 12.720479164272547, - 12.85580382682383, - 12.233138782903552, - 12.471918947994709, - 12.312327977269888, - 12.269356986507773, - 12.151514878496528, - 12.147377012297511, - 12.461689999327064, - 12.172183021903038, - 12.12242990732193, - 12.155541917309165, - 12.13379087857902, - 12.17744406312704, - 12.159680016338825, - 12.122099054977298, - 12.16399809345603, - 12.206007959321141, - 12.209655018523335, - 12.141965795308352, - 12.086872942745686, - 12.12665787898004, - 12.140112929046154, - 12.153697898611426, - 12.288042111322284, - 12.118241982534528, - 12.142166960984468, - 12.125856010243297, - 12.077634921297431 - ] - }, - "event_elapsed_ms": { - "median": 12.128463745117188, - "p90": 12.437004661560058, - "min": 12.052000045776367, - "max": 12.829216003417969, - "samples": [ - 12.269599914550781, - 12.694144248962402, - 12.829216003417969, - 12.198111534118652, - 12.44604778289795, - 12.286272048950195, - 12.243552207946777, - 12.12559986114502, - 12.121312141418457, - 12.435999870300293, - 12.146592140197754, - 12.096575736999512, - 12.12940788269043, - 12.108575820922852, - 12.151904106140137, - 12.126655578613281, - 12.096447944641113, - 12.137984275817871, - 12.179967880249023, - 12.184096336364746, - 12.116031646728516, - 12.060064315795898, - 12.100383758544922, - 12.114336013793945, - 12.127519607543945, - 12.261695861816406, - 12.091520309448242, - 12.115936279296875, - 12.100288391113281, - 12.052000045776367 - ] - }, - "memory": { - "before": { - "allocated": 5105152, - "reserved": 10485760 - }, - "first": { - "allocated": 498199552, - "reserved": 528482304 - }, - "complete": { - "allocated": 498199552, - "reserved": 528482304 - }, - "steady": { - "allocated": 397536256, - "reserved": 528482304 - } - }, - "finite": true, - "precision_pass": true, - "repeat_noise": [ - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 1.9669532775878906e-06, - "mean_abs": 1.9669532775878906e-06, - "max_relative": 3.3913080896972957e-09, - "max_ratio": 3.3907234805913915e-05, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 3.2472080135903525e-06, - "mean_abs": 9.086119398717349e-07, - "max_relative": 0.00018046946259340423, - "max_ratio": 0.25613949444882667, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 1.4868033937354141e-05, - "mean_abs": 6.87211094825403e-06, - "max_relative": 2.0866547746516262e-05, - "max_ratio": 0.16035772450332592, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 4.0950030418679395e-08, - "mean_abs": 2.4099972201197233e-08, - "max_relative": 1.760091727443201e-05, - "max_ratio": 0.003522698834367644, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 7.748603820800781e-07, - "mean_abs": 7.748603820800781e-07, - "max_relative": 1.336609867764783e-09, - "max_ratio": 1.3363793465169632e-05, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 3.4381458107191065e-06, - "mean_abs": 9.57708538940986e-07, - "max_relative": 0.0002881588388941582, - "max_ratio": 0.22048259242000248, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 8.837183596455134e-06, - "mean_abs": 3.2278098796640406e-06, - "max_relative": 3.31957329098556e-06, - "max_ratio": 0.0281749405332579, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 2.4339663107914022e-08, - "mean_abs": 1.1119843221349054e-08, - "max_relative": 2.4972382310130556e-06, - "max_ratio": 0.002074957801518164, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 1.1324882507324219e-06, - "mean_abs": 1.1324882507324219e-06, - "max_relative": 1.9529435350242573e-09, - "max_ratio": 1.9526068135747806e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 3.0112414037830604e-06, - "mean_abs": 8.47281389920046e-07, - "max_relative": 0.00031869762431633333, - "max_ratio": 0.22389208582286926, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 4.162781728545006e-06, - "mean_abs": 2.0412725297970347e-06, - "max_relative": 2.3590569982844715e-05, - "max_ratio": 0.15057470416519836, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 1.0359651938379733e-08, - "mean_abs": 5.7499078493749465e-09, - "max_relative": 2.05692886172861e-05, - "max_ratio": 0.0009948512161845266, - "bitwise_equal": false - } - }, - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 5.960464477539062e-07, - "mean_abs": 5.960464477539062e-07, - "max_relative": 1.0276691180900896e-09, - "max_ratio": 1.0274919638155731e-05, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 3.5522310923852274e-06, - "mean_abs": 8.616659386452332e-07, - "max_relative": 0.00011671996665938881, - "max_ratio": 0.18674204523360033, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 1.8787712357415387e-05, - "mean_abs": 8.5284128733666e-06, - "max_relative": 1.3903422899363783e-05, - "max_ratio": 0.10684667564722757, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 5.174573826025042e-08, - "mean_abs": 2.958305038261025e-08, - "max_relative": 1.367745887868352e-05, - "max_ratio": 0.00445139234303787, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 5.960464477539062e-07, - "mean_abs": 5.960464477539062e-07, - "max_relative": 1.0281614367421408e-09, - "max_ratio": 1.0279841127053563e-05, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 3.3015296452276743e-06, - "mean_abs": 9.65899596495438e-07, - "max_relative": 0.0003250100860081021, - "max_ratio": 0.248679050070836, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 1.0974315697964698e-05, - "mean_abs": 4.4703845860391865e-06, - "max_relative": 5.636302303914145e-06, - "max_ratio": 0.04783822145800495, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 3.02258229695207e-08, - "mean_abs": 1.5748254031707164e-08, - "max_relative": 3.342210486846823e-06, - "max_ratio": 0.0025927652648572246, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 2.562999725341797e-06, - "mean_abs": 2.562999725341797e-06, - "max_relative": 4.419819579265424e-09, - "max_ratio": 4.419057525458714e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 3.5791410368801735e-06, - "mean_abs": 9.350705137221166e-07, - "max_relative": 0.00033143966601398425, - "max_ratio": 0.23284365017622433, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 8.807908145946897e-06, - "mean_abs": 4.18877440017118e-06, - "max_relative": 1.203522953124509e-05, - "max_ratio": 0.0768186955334506, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 2.425903169317456e-08, - "mean_abs": 1.3138067292675911e-08, - "max_relative": 1.0916529056499548e-05, - "max_ratio": 0.0020813606593784754, - "bitwise_equal": false - } - }, - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 5.960464477539063e-08, - "mean_abs": 5.960464477539063e-08, - "max_relative": 1.0276691180900896e-10, - "max_ratio": 1.0274919638155732e-06, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 3.862759925254977e-06, - "mean_abs": 9.054389725245369e-07, - "max_relative": 0.00017714111412548637, - "max_ratio": 0.24822438249525894, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 1.8602137436651844e-05, - "mean_abs": 6.575257495194325e-06, - "max_relative": 1.6520854282879152e-05, - "max_ratio": 0.1290823255605453, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 5.12346216841042e-08, - "mean_abs": 2.3314165421019016e-08, - "max_relative": 1.631586062223091e-05, - "max_ratio": 0.00442853766536586, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 8.344650268554688e-07, - "mean_abs": 8.344650268554688e-07, - "max_relative": 1.4394260114389972e-09, - "max_ratio": 1.4391777577874988e-05, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 3.229503974466752e-06, - "mean_abs": 7.989976509997776e-07, - "max_relative": 0.0002994390146746574, - "max_ratio": 0.22911353502298576, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 3.950119011553177e-06, - "mean_abs": 2.412937835871709e-06, - "max_relative": 7.0391372774856934e-06, - "max_ratio": 0.05974480959259562, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 1.0047790039878143e-08, - "mean_abs": 6.1546335728595095e-09, - "max_relative": 6.500982136492226e-06, - "max_ratio": 0.0009894857076380235, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 8.940696716308594e-07, - "mean_abs": 8.940696716308594e-07, - "max_relative": 1.5417975276507295e-09, - "max_ratio": 1.5415316949274583e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 3.5413705319342625e-06, - "mean_abs": 9.303543591227444e-07, - "max_relative": 0.00027089951508552947, - "max_ratio": 0.19031286352075447, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 8.079219341539101e-06, - "mean_abs": 3.1017506052684793e-06, - "max_relative": 8.632980035629049e-06, - "max_ratio": 0.07088534903314236, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 2.225205290862231e-08, - "mean_abs": 9.712742385372262e-09, - "max_relative": 5.794325184387772e-06, - "max_ratio": 0.0018951070514409266, - "bitwise_equal": false - } - } - ] - }, - { - "run": 1, - "arm": "FIXED", - "status": "completed", - "n_atoms": 64, - "first_ms": 124219.04061594978, - "wall_ms": { - "median": 12.398104998283088, - "p90": 12.507841410115361, - "min": 12.301146984100342, - "max": 12.588670011609793, - "samples": [ - 12.507717125117779, - 12.371439952403307, - 12.403219006955624, - 12.423819163814187, - 12.397339101880789, - 12.340521905571222, - 12.43073190562427, - 12.466670013964176, - 12.451761169359088, - 12.378974119201303, - 12.508959975093603, - 12.417846824973822, - 12.401136104017496, - 12.301146984100342, - 12.357622850686312, - 12.374595971778035, - 12.417035875841975, - 12.403189903125167, - 12.350850971415639, - 12.398870894685388, - 12.363173998892307, - 12.449918081983924, - 12.588670011609793, - 12.385715963318944, - 12.34121317975223, - 12.388502014800906, - 12.509260093793273, - 12.357803992927074, - 12.371790129691362, - 12.347134063020349 - ] - }, - "event_elapsed_ms": { - "median": 12.367520332336426, - "p90": 12.47305612564087, - "min": 12.275168418884277, - "max": 12.562368392944336, - "samples": [ - 12.472000122070312, - 12.345279693603516, - 12.367744445800781, - 12.397695541381836, - 12.37183952331543, - 12.315008163452148, - 12.404352188110352, - 12.44057559967041, - 12.42518424987793, - 12.342623710632324, - 12.482560157775879, - 12.391488075256348, - 12.36729621887207, - 12.275168418884277, - 12.331904411315918, - 12.348992347717285, - 12.391231536865234, - 12.376640319824219, - 12.325216293334961, - 12.373023986816406, - 12.334400177001953, - 12.424192428588867, - 12.562368392944336, - 12.360128402709961, - 12.314784049987793, - 12.362655639648438, - 12.48310375213623, - 12.332480430603027, - 12.33903980255127, - 12.321056365966797 - ] - }, - "memory": { - "before": { - "allocated": 5105152, - "reserved": 10485760 - }, - "first": { - "allocated": 480156672, - "reserved": 507510784 - }, - "complete": { - "allocated": 480156672, - "reserved": 507510784 - }, - "steady": { - "allocated": 379493376, - "reserved": 507510784 - } - }, - "finite": true, - "precision_pass": true, - "repeat_noise": [ - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 3.159046173095703e-06, - "mean_abs": 3.159046173095703e-06, - "max_relative": 5.446646302368604e-09, - "max_ratio": 5.4457073847217706e-05, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 3.1636909980647943e-06, - "mean_abs": 7.96394071748858e-07, - "max_relative": 0.00014595640502068608, - "max_ratio": 0.10909625746085425, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 6.467106907770415e-06, - "mean_abs": 2.3535028535409056e-06, - "max_relative": 6.74490231331375e-06, - "max_ratio": 0.052699910686379976, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 1.781191956429229e-08, - "mean_abs": 6.819793128531668e-09, - "max_relative": 5.469390445885312e-06, - "max_ratio": 0.001532257917230382, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 0.0, - "mean_abs": 0.0, - "max_relative": 0.0, - "max_ratio": 0.0, - "bitwise_equal": true - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 3.0790839034011697e-06, - "mean_abs": 8.704951882931855e-07, - "max_relative": 0.0001609382102145368, - "max_ratio": 0.18178804931306822, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 1.1611256943822035e-05, - "mean_abs": 4.979022273859317e-06, - "max_relative": 2.0691207318763643e-05, - "max_ratio": 0.1756171725308677, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 3.169781435745887e-08, - "mean_abs": 1.2235066751228584e-08, - "max_relative": 2.0508577780209694e-05, - "max_ratio": 0.0031215353558468896, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 2.2649765014648438e-06, - "mean_abs": 2.2649765014648438e-06, - "max_relative": 3.905887076070601e-09, - "max_ratio": 3.905213633169572e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 2.9753927925924017e-06, - "mean_abs": 7.886328368521961e-07, - "max_relative": 4.9940103418234445e-05, - "max_ratio": 0.11074049048212564, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 2.280334225268632e-05, - "mean_abs": 6.932224802500306e-06, - "max_relative": 3.0009057241043987e-05, - "max_ratio": 0.1915421141920729, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 6.280571882705255e-08, - "mean_abs": 2.5540199302667e-08, - "max_relative": 2.569587474687198e-05, - "max_ratio": 0.005388562331391321, - "bitwise_equal": false - } - }, - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 5.364418029785156e-07, - "mean_abs": 5.364418029785156e-07, - "max_relative": 9.249022022890082e-10, - "max_ratio": 9.247427634433196e-06, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 2.990632353316869e-06, - "mean_abs": 7.957689285205868e-07, - "max_relative": 0.0002651763011623085, - "max_ratio": 0.15349091978470727, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 5.303985849636206e-06, - "mean_abs": 2.787250357029326e-06, - "max_relative": 1.0835452811799306e-05, - "max_ratio": 0.08326923750940592, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 1.4608413111127927e-08, - "mean_abs": 6.980488893078979e-09, - "max_relative": 9.984028456785468e-06, - "max_ratio": 0.0012535509348947788, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 1.1920928955078125e-07, - "mean_abs": 1.1920928955078125e-07, - "max_relative": 2.0563228694672411e-10, - "max_ratio": 2.0559682213950576e-06, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 2.6453553978456057e-06, - "mean_abs": 8.643875422746176e-07, - "max_relative": 0.0002575738113708474, - "max_ratio": 0.19710720880902646, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 7.519411159506717e-06, - "mean_abs": 2.981587394880315e-06, - "max_relative": 7.10441447810012e-06, - "max_ratio": 0.06029889364115624, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 2.071021071303747e-08, - "mean_abs": 8.609019121717798e-09, - "max_relative": 6.894680777532616e-06, - "max_ratio": 0.001765546498492741, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 7.748603820800781e-07, - "mean_abs": 7.748603820800781e-07, - "max_relative": 1.3362245260241532e-09, - "max_ratio": 1.3359941376632745e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 3.1974552250346733e-06, - "mean_abs": 7.739347731184945e-07, - "max_relative": 6.84882826521186e-05, - "max_ratio": 0.13918149345119568, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 1.7802545383638346e-05, - "mean_abs": 4.362613464012652e-06, - "max_relative": 2.46031560780845e-05, - "max_ratio": 0.15703727355181346, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 4.903235882591783e-08, - "mean_abs": 1.545427646340761e-08, - "max_relative": 2.284328599208962e-05, - "max_ratio": 0.004206844961303074, - "bitwise_equal": false - } - }, - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 7.152557373046875e-07, - "mean_abs": 7.152557373046875e-07, - "max_relative": 1.2332029363853443e-09, - "max_ratio": 1.2329903512577594e-05, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 3.4228048955142754e-06, - "mean_abs": 7.863306853405269e-07, - "max_relative": 0.00013088189286850622, - "max_ratio": 0.1390238705982766, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 9.792460804902703e-06, - "mean_abs": 3.3164386323959583e-06, - "max_relative": 1.1872735985570117e-05, - "max_ratio": 0.09124088693985201, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 2.697071916496485e-08, - "mean_abs": 9.511418680260552e-09, - "max_relative": 9.203742205342233e-06, - "max_ratio": 0.00231436296104415, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 1.4901161193847656e-06, - "mean_abs": 1.4901161193847656e-06, - "max_relative": 2.5704035868340516e-09, - "max_ratio": 2.5699602767438223e-05, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 2.5334713882330107e-06, - "mean_abs": 6.902550626399403e-07, - "max_relative": 7.382360167266479e-05, - "max_ratio": 0.11041073973751817, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 9.716531373271664e-06, - "mean_abs": 4.5390762410452764e-06, - "max_relative": 1.4399999524329939e-05, - "max_ratio": 0.12222035220874042, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 2.67615918175812e-08, - "mean_abs": 1.3552713361033737e-08, - "max_relative": 1.3349641734147784e-05, - "max_ratio": 0.0022814270401352527, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 4.5299530029296875e-06, - "mean_abs": 4.5299530029296875e-06, - "max_relative": 7.811774152141202e-09, - "max_ratio": 7.810427266339144e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 2.8646219973893494e-06, - "mean_abs": 7.015759708745248e-07, - "max_relative": 5.732217333753957e-05, - "max_ratio": 0.09528239944255006, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 2.1871057589883947e-05, - "mean_abs": 7.662054952043787e-06, - "max_relative": 1.5763068948032005e-05, - "max_ratio": 0.10938039568129745, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 6.02379895998928e-08, - "mean_abs": 2.6873931956725508e-08, - "max_relative": 1.2981430620981175e-05, - "max_ratio": 0.005168258046222853, - "bitwise_equal": false - } - } - ] - }, - { - "run": 2, - "arm": "FIXED", - "status": "completed", - "n_atoms": 64, - "first_ms": 125799.81218092144, - "wall_ms": { - "median": 12.254007975570858, - "p90": 12.347013526596129, - "min": 12.185728875920177, - "max": 12.451760936528444, - "samples": [ - 12.451760936528444, - 12.291829101741314, - 12.292080093175173, - 12.296758824959397, - 12.297330191358924, - 12.262884993106127, - 12.228679843246937, - 12.22724700346589, - 12.345089809969068, - 12.34573102556169, - 12.317137094214559, - 12.26913696154952, - 12.233559042215347, - 12.193053029477596, - 12.214985210448503, - 12.20905315130949, - 12.282682117074728, - 12.232027016580105, - 12.286479119211435, - 12.244370067492127, - 12.228438863530755, - 12.36017793416977, - 12.21710816025734, - 12.358556035906076, - 12.31890101917088, - 12.245130958035588, - 12.185728875920177, - 12.211597990244627, - 12.244248995557427, - 12.235753936693072 - ] - }, - "event_elapsed_ms": { - "median": 12.227823734283447, - "p90": 12.321485042572021, - "min": 12.159104347229004, - "max": 12.415360450744629, - "samples": [ - 12.415360450744629, - 12.264800071716309, - 12.26473617553711, - 12.271455764770508, - 12.270751953125, - 12.23641586303711, - 12.203200340270996, - 12.20150375366211, - 12.319328308105469, - 12.320256233215332, - 12.292032241821289, - 12.241344451904297, - 12.2074556350708, - 12.167360305786133, - 12.189151763916016, - 12.182751655578613, - 12.256511688232422, - 12.206239700317383, - 12.259424209594727, - 12.218527793884277, - 12.20297622680664, - 12.33459186553955, - 12.191679954528809, - 12.332544326782227, - 12.293343544006348, - 12.219231605529785, - 12.159104347229004, - 12.18569564819336, - 12.217984199523926, - 12.209759712219238 - ] - }, - "memory": { - "before": { - "allocated": 5105152, - "reserved": 10485760 - }, - "first": { - "allocated": 480156672, - "reserved": 507510784 - }, - "complete": { - "allocated": 480156672, - "reserved": 507510784 - }, - "steady": { - "allocated": 379493376, - "reserved": 507510784 - } - }, - "finite": true, - "precision_pass": true, - "repeat_noise": [ - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 7.152557373046875e-07, - "mean_abs": 7.152557373046875e-07, - "max_relative": 1.2332029417081074e-09, - "max_ratio": 1.2329903565786877e-05, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 3.2385857338113055e-06, - "mean_abs": 9.092064427145228e-07, - "max_relative": 0.00022596061167403088, - "max_ratio": 0.14011150322171637, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 9.258415912150042e-06, - "mean_abs": 3.9971433023601304e-06, - "max_relative": 1.444438783499084e-05, - "max_ratio": 0.11285828100964093, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 2.549983507335596e-08, - "mean_abs": 1.2216466218457293e-08, - "max_relative": 1.3320334276970815e-05, - "max_ratio": 0.0022041143435479658, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 1.1324882507324219e-06, - "mean_abs": 1.1324882507324219e-06, - "max_relative": 1.953506732421144e-09, - "max_ratio": 1.953169816750353e-05, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 2.7195005145586038e-06, - "mean_abs": 8.366441915976427e-07, - "max_relative": 0.00021936606086437867, - "max_ratio": 0.16789828490568873, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 6.919836792462775e-06, - "mean_abs": 2.885176994217432e-06, - "max_relative": 4.954334982627175e-06, - "max_ratio": 0.042049998885312724, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 1.9058843173797024e-08, - "mean_abs": 8.830040519263184e-09, - "max_relative": 3.851167630655554e-06, - "max_ratio": 0.0016348636149906299, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 3.635883331298828e-06, - "mean_abs": 3.635883331298828e-06, - "max_relative": 6.2699766504699685e-09, - "max_ratio": 6.268895597382222e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 2.7090551348862846e-06, - "mean_abs": 8.195372191213227e-07, - "max_relative": 7.469505899550625e-05, - "max_ratio": 0.17302833032377618, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 7.6347980546565e-06, - "mean_abs": 3.11533769527096e-06, - "max_relative": 4.3267624858064126e-05, - "max_ratio": 0.2761676262712549, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 1.7588065561846122e-08, - "mean_abs": 8.047141763085604e-09, - "max_relative": 3.6189679011481375e-05, - "max_ratio": 0.0017503001547146614, - "bitwise_equal": false - } - }, - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 5.364418029785156e-07, - "mean_abs": 5.364418029785156e-07, - "max_relative": 9.249022062810805e-10, - "max_ratio": 9.247427674340157e-06, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 4.022603885545095e-06, - "mean_abs": 9.833570512549998e-07, - "max_relative": 0.000255143868685143, - "max_ratio": 0.17528675748961484, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 9.361600912249912e-06, - "mean_abs": 3.80086732847889e-06, - "max_relative": 1.1563065156540037e-05, - "max_ratio": 0.090345684817436, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 2.5784030611986086e-08, - "mean_abs": 1.2054085951835117e-08, - "max_relative": 1.1166486380218711e-05, - "max_ratio": 0.0022286791872524457, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 3.337860107421875e-06, - "mean_abs": 3.337860107421875e-06, - "max_relative": 5.7577040534517926e-09, - "max_ratio": 5.7567110388431455e-05, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 3.1641990290154354e-06, - "mean_abs": 8.74002191027697e-07, - "max_relative": 8.538334577130119e-05, - "max_ratio": 0.14359149244426625, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 7.0292276017625e-06, - "mean_abs": 3.809336141993549e-06, - "max_relative": 4.469513301101349e-06, - "max_ratio": 0.04112643081957306, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 1.9360130960183186e-08, - "mean_abs": 1.1885304907970363e-08, - "max_relative": 4.044364671704443e-06, - "max_ratio": 0.0016384467728254289, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 4.172325134277344e-07, - "mean_abs": 4.172325134277344e-07, - "max_relative": 7.195055172670455e-10, - "max_ratio": 7.193814619946813e-06, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 3.2048392029082606e-06, - "mean_abs": 9.089657930135461e-07, - "max_relative": 0.00010630216182784798, - "max_ratio": 0.24624501028892629, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 5.559962241719063e-06, - "mean_abs": 2.7951922455958666e-06, - "max_relative": 6.405853374666516e-06, - "max_ratio": 0.05259841857027804, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 1.5313431751817763e-08, - "mean_abs": 9.255750557185744e-09, - "max_relative": 6.2744007685854106e-06, - "max_ratio": 0.0013138518982400394, - "bitwise_equal": false - } - }, - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 1.1920928955078125e-07, - "mean_abs": 1.1920928955078125e-07, - "max_relative": 2.0553382361801792e-10, - "max_ratio": 2.0549839276311463e-06, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 3.3171053317460064e-06, - "mean_abs": 8.361984208463125e-07, - "max_relative": 0.00035285677798947197, - "max_ratio": 0.24241664434560256, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 5.74896923399848e-06, - "mean_abs": 3.7575176754203434e-06, - "max_relative": 1.2942611300316943e-05, - "max_ratio": 0.10112449125063193, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 1.583400105475974e-08, - "mean_abs": 1.1033798990020693e-08, - "max_relative": 1.2267660151699603e-05, - "max_ratio": 0.001362108966275992, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 1.5497207641601562e-06, - "mean_abs": 1.5497207641601562e-06, - "max_relative": 2.6732197391026183e-09, - "max_ratio": 2.672758696605746e-05, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 3.932146000806824e-06, - "mean_abs": 9.655348704451505e-07, - "max_relative": 0.00019345931614685497, - "max_ratio": 0.18769611929951177, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 4.054637941619532e-06, - "mean_abs": 1.6984614552573163e-06, - "max_relative": 3.518368849277478e-06, - "max_ratio": 0.03237443169525763, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 1.0334061052632432e-08, - "mean_abs": 4.023288165874254e-09, - "max_relative": 3.255817142590016e-06, - "max_ratio": 0.0010016145593793198, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 3.993511199951172e-06, - "mean_abs": 3.993511199951172e-06, - "max_relative": 6.886695665270293e-09, - "max_ratio": 6.88550827909195e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 4.463629726281226e-06, - "mean_abs": 9.373090818880214e-07, - "max_relative": 9.923577997016855e-05, - "max_ratio": 0.1228490593628531, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 9.795469799844803e-06, - "mean_abs": 4.468108131822696e-06, - "max_relative": 5.551249811377623e-05, - "max_ratio": 0.3543239288673778, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 2.5615728646468782e-08, - "mean_abs": 1.2360874242669538e-08, - "max_relative": 5.270761551923672e-05, - "max_ratio": 0.002549183914250601, - "bitwise_equal": false - } - } - ] - }, - { - "run": 3, - "arm": "BASE", - "status": "completed", - "n_atoms": 64, - "first_ms": 125718.05966598913, - "wall_ms": { - "median": 11.771477526053786, - "p90": 11.858010827563703, - "min": 11.702988063916564, - "max": 12.02712906524539, - "samples": [ - 11.856026016175747, - 12.02712906524539, - 11.778540210798383, - 11.875874130055308, - 11.759805027395487, - 11.795803206041455, - 11.770044919103384, - 11.722513940185308, - 11.724489042535424, - 11.774613056331873, - 11.833012802526355, - 11.740819085389376, - 11.772910133004189, - 11.77318999543786, - 11.709119193255901, - 11.702988063916564, - 11.746088974177837, - 11.734567116945982, - 11.991452891379595, - 11.807334842160344, - 11.722153052687645, - 11.738163884729147, - 11.705441866070032, - 11.749215191230178, - 11.82985701598227, - 11.800782987847924, - 11.764724040403962, - 11.795892845839262, - 11.790983844548464, - 11.761438101530075 - ] - }, - "event_elapsed_ms": { - "median": 11.746016025543213, - "p90": 11.82440643310547, - "min": 11.678048133850098, - "max": 12.001152038574219, - "samples": [ - 11.82153606414795, - 12.001152038574219, - 11.753151893615723, - 11.850239753723145, - 11.733344078063965, - 11.770463943481445, - 11.745152473449707, - 11.697504043579102, - 11.699328422546387, - 11.749792098999023, - 11.807840347290039, - 11.71571159362793, - 11.746879577636719, - 11.74777603149414, - 11.683487892150879, - 11.678048133850098, - 11.721311569213867, - 11.70911979675293, - 11.965984344482422, - 11.782464027404785, - 11.69696044921875, - 11.713055610656738, - 11.680512428283691, - 11.72390365600586, - 11.805312156677246, - 11.775360107421875, - 11.739168167114258, - 11.770655632019043, - 11.76591968536377, - 11.735936164855957 - ] - }, - "memory": { - "before": { - "allocated": 5105152, - "reserved": 10485760 - }, - "first": { - "allocated": 498199552, - "reserved": 528482304 - }, - "complete": { - "allocated": 498199552, - "reserved": 528482304 - }, - "steady": { - "allocated": 397536256, - "reserved": 528482304 - } - }, - "finite": true, - "precision_pass": true, - "repeat_noise": [ - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 2.5033950805664062e-06, - "mean_abs": 2.5033950805664062e-06, - "max_relative": 4.31621030263183e-09, - "max_ratio": 4.3154662546765674e-05, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 3.147650076584796e-06, - "mean_abs": 8.603994276999242e-07, - "max_relative": 0.0002335735431599308, - "max_ratio": 0.13520398706021303, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 6.80767550709227e-06, - "mean_abs": 4.109026575802341e-06, - "max_relative": 1.6397802932454654e-05, - "max_ratio": 0.12601537942025434, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 1.8477332914580702e-08, - "mean_abs": 1.0724167956678953e-08, - "max_relative": 1.6334103979623607e-05, - "max_ratio": 0.0017741230626752307, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 1.1324882507324219e-06, - "mean_abs": 1.1324882507324219e-06, - "max_relative": 1.953506726596435e-09, - "max_ratio": 1.953169810927653e-05, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 2.5379241321843438e-06, - "mean_abs": 7.794191991076597e-07, - "max_relative": 0.00013409975738400837, - "max_ratio": 0.2127020018387337, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 1.3101228760525885e-05, - "mean_abs": 6.598115515954461e-06, - "max_relative": 6.511329058758599e-06, - "max_ratio": 0.05935114635468757, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 3.608383721681596e-08, - "mean_abs": 2.21087418396642e-08, - "max_relative": 5.908172781517606e-06, - "max_ratio": 0.0030952640902238695, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 3.993511199951172e-06, - "mean_abs": 3.993511199951172e-06, - "max_relative": 6.886695629877325e-09, - "max_ratio": 6.885508243711184e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 2.4977684063287597e-06, - "mean_abs": 8.333219193151312e-07, - "max_relative": 4.86503637119551e-05, - "max_ratio": 0.14599793484675763, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 1.3497438032139542e-05, - "mean_abs": 5.8741474928927474e-06, - "max_relative": 3.705160075924161e-05, - "max_ratio": 0.23649272030712531, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 3.717508988490548e-08, - "mean_abs": 1.8166305397200166e-08, - "max_relative": 3.633735657585368e-05, - "max_ratio": 0.0031895247015927483, - "bitwise_equal": false - } - }, - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 5.364418029785156e-07, - "mean_abs": 5.364418029785156e-07, - "max_relative": 9.249022077068207e-10, - "max_ratio": 9.247427688592645e-06, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 3.4793615668604616e-06, - "mean_abs": 8.944955001184927e-07, - "max_relative": 9.523617544742061e-05, - "max_ratio": 0.2050014795333228, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 1.2076273368855084e-05, - "mean_abs": 4.457574338078017e-06, - "max_relative": 1.5856462121876832e-05, - "max_ratio": 0.12389086040081705, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 3.326087120308907e-08, - "mean_abs": 1.4789296282687481e-08, - "max_relative": 1.500818536094625e-05, - "max_ratio": 0.0028541231161992044, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 1.7285346984863281e-06, - "mean_abs": 1.7285346984863281e-06, - "max_relative": 2.9816681616471906e-09, - "max_ratio": 2.9811539219422073e-05, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 2.8314796480799487e-06, - "mean_abs": 8.626311686077415e-07, - "max_relative": 0.00011779719322420614, - "max_ratio": 0.18684372961259885, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 6.176719145045695e-06, - "mean_abs": 3.3852992677872883e-06, - "max_relative": 4.085862628173192e-06, - "max_ratio": 0.0372428810466072, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 1.7012123994242234e-08, - "mean_abs": 1.0297557701545503e-08, - "max_relative": 3.841895405339083e-06, - "max_ratio": 0.0014592964761872493, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 1.3113021850585938e-06, - "mean_abs": 1.3113021850585938e-06, - "max_relative": 2.261303042646286e-09, - "max_ratio": 2.260913154651434e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 3.2393551663290054e-06, - "mean_abs": 8.716324432951617e-07, - "max_relative": 6.231520647418034e-05, - "max_ratio": 0.13971142560500446, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 1.2360706387326559e-05, - "mean_abs": 4.279959207912724e-06, - "max_relative": 9.148954419526426e-06, - "max_ratio": 0.05839613168929839, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 3.4044266020855085e-08, - "mean_abs": 1.522050843726693e-08, - "max_relative": 9.041439341445294e-06, - "max_ratio": 0.002920908268340238, - "bitwise_equal": false - } - }, - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 1.9073486328125e-06, - "mean_abs": 1.9073486328125e-06, - "max_relative": 3.288541182957585e-09, - "max_ratio": 3.287974289277385e-05, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 2.592615622631911e-06, - "mean_abs": 7.564083415398845e-07, - "max_relative": 6.414690706583804e-05, - "max_ratio": 0.09667148947492088, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 8.860800189969265e-06, - "mean_abs": 4.887425170679243e-06, - "max_relative": 2.479902596920097e-05, - "max_ratio": 0.19376154912813906, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 2.42176339086686e-08, - "mean_abs": 1.3151681929735789e-08, - "max_relative": 2.4608956849824416e-05, - "max_ratio": 0.002398163107222813, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 1.7881393432617188e-07, - "mean_abs": 1.7881393432617188e-07, - "max_relative": 3.084484305152266e-10, - "max_ratio": 3.0839523330436627e-06, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 3.625460117007151e-06, - "mean_abs": 9.327679536264011e-07, - "max_relative": 0.00012700374026739514, - "max_ratio": 0.1416401409026633, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 1.249435895012141e-05, - "mean_abs": 4.515817730359966e-06, - "max_relative": 4.141486254455477e-06, - "max_ratio": 0.0377498901677343, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 3.441237633045047e-08, - "mean_abs": 1.6181567711638645e-08, - "max_relative": 2.8541161180102658e-06, - "max_ratio": 0.0029123172518844605, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 1.6093254089355469e-06, - "mean_abs": 1.6093254089355469e-06, - "max_relative": 2.7752355523386235e-09, - "max_ratio": 2.7747570534358507e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 3.0667251564864273e-06, - "mean_abs": 8.911129659484873e-07, - "max_relative": 8.952571473061782e-05, - "max_ratio": 0.20739389932047447, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 5.729165823531446e-06, - "mean_abs": 2.286177272819372e-06, - "max_relative": 1.2881337258779671e-05, - "max_ratio": 0.08221891705346894, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 1.5779457844533606e-08, - "mean_abs": 7.561837022699167e-09, - "max_relative": 1.1631414054412233e-05, - "max_ratio": 0.001343865463753086, - "bitwise_equal": false - } - } - ] - }, - { - "run": 4, - "arm": "BASE", - "status": "completed", - "n_atoms": 64, - "first_ms": 125241.41405685805, - "wall_ms": { - "median": 12.372727505862713, - "p90": 12.433126498945057, - "min": 12.310835998505354, - "max": 12.634046142920852, - "samples": [ - 12.432294897735119, - 12.368594063445926, - 12.634046142920852, - 12.38698000088334, - 12.310835998505354, - 12.453936040401459, - 12.386198155581951, - 12.311727041378617, - 12.356341816484928, - 12.320392997935414, - 12.422116007655859, - 12.365347938612103, - 12.3799960128963, - 12.361051049083471, - 12.364396825432777, - 12.358275009319186, - 12.385726906359196, - 12.335462030023336, - 12.440610909834504, - 12.394814053550363, - 12.375356862321496, - 12.357903877273202, - 12.357603991404176, - 12.399453204125166, - 12.3388790525496, - 12.373644160106778, - 12.371810851618648, - 12.405694928020239, - 12.413860065862536, - 12.36395607702434 - ] - }, - "event_elapsed_ms": { - "median": 12.346944332122803, - "p90": 12.399241542816162, - "min": 12.284576416015625, - "max": 12.6080322265625, - "samples": [ - 12.397439956665039, - 12.34124755859375, - 12.6080322265625, - 12.361151695251465, - 12.284576416015625, - 12.428383827209473, - 12.360320091247559, - 12.28553581237793, - 12.330719947814941, - 12.293279647827148, - 12.396672248840332, - 12.339167594909668, - 12.353952407836914, - 12.334976196289062, - 12.338784217834473, - 12.333344459533691, - 12.3602876663208, - 12.309663772583008, - 12.41545581817627, - 12.369440078735352, - 12.349823951721191, - 12.331968307495117, - 12.331904411315918, - 12.373503684997559, - 12.313088417053223, - 12.347840309143066, - 12.346048355102539, - 12.378399848937988, - 12.388928413391113, - 12.338751792907715 - ] - }, - "memory": { - "before": { - "allocated": 5105152, - "reserved": 10485760 - }, - "first": { - "allocated": 498199552, - "reserved": 528482304 - }, - "complete": { - "allocated": 498199552, - "reserved": 528482304 - }, - "steady": { - "allocated": 397536256, - "reserved": 528482304 - } - }, - "finite": true, - "precision_pass": true, - "repeat_noise": [ - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 7.748603820800781e-07, - "mean_abs": 7.748603820800781e-07, - "max_relative": 1.3359698454168e-09, - "max_ratio": 1.3357395448627214e-05, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 2.940772304782513e-06, - "mean_abs": 7.987600347710011e-07, - "max_relative": 0.00025426214659476497, - "max_ratio": 0.187016616999559, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 5.58746404721866e-06, - "mean_abs": 2.557516237850561e-06, - "max_relative": 7.080051561957943e-06, - "max_ratio": 0.054409328451275864, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 1.5364273936446793e-08, - "mean_abs": 7.322776153119929e-09, - "max_relative": 5.974741480455591e-06, - "max_ratio": 0.0013217011109670166, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 1.7881393432617188e-07, - "mean_abs": 1.7881393432617188e-07, - "max_relative": 3.0844843130806355e-10, - "max_ratio": 3.0839523409692974e-06, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 3.659094718777567e-06, - "mean_abs": 8.730414914753792e-07, - "max_relative": 0.00012127513141225042, - "max_ratio": 0.11731000006168305, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 1.1607867948626449e-05, - "mean_abs": 4.89501878333767e-06, - "max_relative": 7.108283927054294e-06, - "max_ratio": 0.060331612191260715, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 3.197077351468902e-08, - "mean_abs": 1.6385335608436424e-08, - "max_relative": 5.410408520733576e-06, - "max_ratio": 0.002742447199493105, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 3.7550926208496094e-06, - "mean_abs": 3.7550926208496094e-06, - "max_relative": 6.475549584849906e-09, - "max_ratio": 6.474433087422955e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 2.713625150363441e-06, - "mean_abs": 8.337065295719684e-07, - "max_relative": 0.00014835832983871043, - "max_ratio": 0.1530218077636317, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 5.107650959179644e-06, - "mean_abs": 2.038622628652842e-06, - "max_relative": 1.3817301644838751e-05, - "max_ratio": 0.0881925858687249, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 1.263006546071456e-08, - "mean_abs": 4.915432523838299e-09, - "max_relative": 1.2490666401295765e-05, - "max_ratio": 0.001242760665778508, - "bitwise_equal": false - } - }, - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 4.291534423828125e-06, - "mean_abs": 4.291534423828125e-06, - "max_relative": 7.399217605385355e-09, - "max_ratio": 7.397942094624302e-05, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 2.9086142632195333e-06, - "mean_abs": 8.382738898287528e-07, - "max_relative": 0.00011656952971164183, - "max_ratio": 0.12754634258355133, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 1.044810936257079e-05, - "mean_abs": 3.728531659339149e-06, - "max_relative": 5.579032055700338e-06, - "max_ratio": 0.04359066883143348, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 2.8776528087498532e-08, - "mean_abs": 1.4077153425850076e-08, - "max_relative": 3.3095958804118824e-06, - "max_ratio": 0.0024775845462237517, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 2.3245811462402344e-06, - "mean_abs": 2.3245811462402344e-06, - "max_relative": 4.009829607004826e-09, - "max_ratio": 4.009138043260087e-05, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 3.1483239055773993e-06, - "mean_abs": 8.9117455955486e-07, - "max_relative": 0.00012753271065296226, - "max_ratio": 0.16032829591678938, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 1.1069163089238998e-05, - "mean_abs": 5.313540983234135e-06, - "max_relative": 5.6224254622519745e-06, - "max_ratio": 0.05124872711903977, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 3.0487054786948464e-08, - "mean_abs": 1.7210885175294895e-08, - "max_relative": 5.14832946140267e-06, - "max_ratio": 0.002580118273696127, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 3.0994415283203125e-06, - "mean_abs": 3.0994415283203125e-06, - "max_relative": 5.344898070034843e-09, - "max_ratio": 5.3439765166030743e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 3.2420113915687665e-06, - "mean_abs": 8.629926189999276e-07, - "max_relative": 0.00017566128984399952, - "max_ratio": 0.12341458882679383, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 3.949601765640409e-06, - "mean_abs": 1.608569554840184e-06, - "max_relative": 1.1897446782931626e-05, - "max_ratio": 0.07593909689657997, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 1.0878123707369625e-08, - "mean_abs": 4.428898853977402e-09, - "max_relative": 7.812247190641476e-06, - "max_ratio": 0.0009333140310546827, - "bitwise_equal": false - } - }, - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 2.384185791015625e-06, - "mean_abs": 2.384185791015625e-06, - "max_relative": 4.110676447436308e-09, - "max_ratio": 4.1099678303468346e-05, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 2.6217950406248747e-06, - "mean_abs": 8.002386016203964e-07, - "max_relative": 0.00030506254718772703, - "max_ratio": 0.17657691394181632, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 7.943367612561758e-06, - "mean_abs": 3.693105918646368e-06, - "max_relative": 1.78710255162443e-05, - "max_ratio": 0.13733664063960158, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 2.1877885586496504e-08, - "mean_abs": 1.0664017696725234e-08, - "max_relative": 1.6122339679001177e-05, - "max_ratio": 0.0018820300786676128, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 8.344650268554688e-07, - "mean_abs": 8.344650268554688e-07, - "max_relative": 1.4394260127709633e-09, - "max_ratio": 1.4391777591190054e-05, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 3.51564199263521e-06, - "mean_abs": 9.009632097739528e-07, - "max_relative": 0.0002376357398415713, - "max_ratio": 0.18188724101158707, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 1.0495915084063334e-05, - "mean_abs": 6.478767795420954e-06, - "max_relative": 1.8703953429239588e-05, - "max_ratio": 0.15874994250601276, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 2.4946369121467415e-08, - "mean_abs": 1.7127615396635733e-08, - "max_relative": 1.614055794210935e-05, - "max_ratio": 0.0024566673873793548, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 2.9206275939941406e-06, - "mean_abs": 2.9206275939941406e-06, - "max_relative": 5.036538565994372e-09, - "max_ratio": 5.035670179106743e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 3.5644034888093756e-06, - "mean_abs": 1.0046139619068288e-06, - "max_relative": 0.0001698529394024543, - "max_ratio": 0.2141681109971593, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 9.609568919266565e-06, - "mean_abs": 4.45278253055317e-06, - "max_relative": 9.731724596241e-06, - "max_ratio": 0.07990708651496747, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 2.6466992292251135e-08, - "mean_abs": 1.4571681848953643e-08, - "max_relative": 9.176450577635529e-06, - "max_ratio": 0.0022707974215662946, - "bitwise_equal": false - } - } - ] - }, - { - "run": 5, - "arm": "FIXED", - "status": "completed", - "n_atoms": 64, - "first_ms": 126628.89281916432, - "wall_ms": { - "median": 12.313776067458093, - "p90": 12.409749417565763, - "min": 12.251382926478982, - "max": 12.537193018943071, - "samples": [ - 12.376609025523067, - 12.308210134506226, - 12.365988921374083, - 12.413057964295149, - 12.32566311955452, - 12.251382926478982, - 12.308702105656266, - 12.278364039957523, - 12.409381801262498, - 12.381598819047213, - 12.353586032986641, - 12.31885002925992, - 12.277371948584914, - 12.36214186064899, - 12.295766966417432, - 12.282281881198287, - 12.299222871661186, - 12.270760023966432, - 12.360468972474337, - 12.2759398072958, - 12.270639883354306, - 12.288684025406837, - 12.282321928068995, - 12.425120919942856, - 12.34108186326921, - 12.537193018943071, - 12.325582792982459, - 12.25936901755631, - 12.345761992037296, - 12.252215063199401 - ] - }, - "event_elapsed_ms": { - "median": 12.282864093780518, - "p90": 12.3847074508667, - "min": 12.225983619689941, - "max": 12.512543678283691, - "samples": [ - 12.332991600036621, - 12.281696319580078, - 12.34115219116211, - 12.388192176818848, - 12.300288200378418, - 12.225983619689941, - 12.284031867980957, - 12.253952026367188, - 12.384320259094238, - 12.356672286987305, - 12.328448295593262, - 12.293631553649902, - 12.25222396850586, - 12.336928367614746, - 12.270400047302246, - 12.256959915161133, - 12.273632049560547, - 12.246015548706055, - 12.335200309753418, - 12.251744270324707, - 12.245792388916016, - 12.263551712036133, - 12.256928443908691, - 12.400896072387695, - 12.315520286560059, - 12.512543678283691, - 12.271391868591309, - 12.233663558959961, - 12.320608139038086, - 12.226079940795898 - ] - }, - "memory": { - "before": { - "allocated": 5105152, - "reserved": 10485760 - }, - "first": { - "allocated": 480156672, - "reserved": 507510784 - }, - "complete": { - "allocated": 480156672, - "reserved": 507510784 - }, - "steady": { - "allocated": 379493376, - "reserved": 507510784 - } - }, - "finite": true, - "precision_pass": true, - "repeat_noise": [ - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 1.2516975402832031e-06, - "mean_abs": 1.2516975402832031e-06, - "max_relative": 2.1581051466584974e-09, - "max_ratio": 2.1577331226824716e-05, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 3.6795701916503276e-06, - "mean_abs": 8.937403724081314e-07, - "max_relative": 0.0002218968775192406, - "max_ratio": 0.29024003055349096, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 1.1688049809777112e-05, - "mean_abs": 5.584106061187446e-06, - "max_relative": 1.2412927798536686e-05, - "max_ratio": 0.09698601625731429, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 3.219161304537921e-08, - "mean_abs": 1.8129739128451706e-08, - "max_relative": 1.131624168575636e-05, - "max_ratio": 0.0027623699492510738, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 4.708766937255859e-06, - "mean_abs": 4.708766937255859e-06, - "max_relative": 8.122475288463915e-09, - "max_ratio": 8.121074428594633e-05, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 3.374214090356986e-06, - "mean_abs": 8.022241451179543e-07, - "max_relative": 8.481239566849856e-05, - "max_ratio": 0.17497677053596025, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 9.541675158430962e-06, - "mean_abs": 5.3520039798243205e-06, - "max_relative": 1.4372883569365458e-05, - "max_ratio": 0.12198985678957508, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 2.6279997050043802e-08, - "mean_abs": 1.6062888706827882e-08, - "max_relative": 1.3990455049356052e-05, - "max_ratio": 0.002224075399145608, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 1.6093254089355469e-06, - "mean_abs": 1.6093254089355469e-06, - "max_relative": 2.7752355457777184e-09, - "max_ratio": 2.7747570468772078e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 3.5095089003789326e-06, - "mean_abs": 9.038578985716417e-07, - "max_relative": 0.00018319730371471984, - "max_ratio": 0.19588992001712088, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 9.017253526089064e-06, - "mean_abs": 3.0380436752531893e-06, - "max_relative": 1.4519989206795836e-05, - "max_ratio": 0.09267837987471444, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 2.483561765964648e-08, - "mean_abs": 9.836672715716656e-09, - "max_relative": 8.067845589296882e-06, - "max_ratio": 0.0021308303134986908, - "bitwise_equal": false - } - }, - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 3.337860107421875e-06, - "mean_abs": 3.337860107421875e-06, - "max_relative": 5.7549470577559926e-09, - "max_ratio": 5.753954993819924e-05, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 2.818763775280786e-06, - "mean_abs": 8.61009049439009e-07, - "max_relative": 0.00014399831601205298, - "max_ratio": 0.19595766968532993, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 5.840822273839308e-06, - "mean_abs": 3.4841950076130382e-06, - "max_relative": 6.683077658102929e-06, - "max_ratio": 0.051358706973837355, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 1.6086985733104742e-08, - "mean_abs": 1.0853180030597829e-08, - "max_relative": 5.532765030913541e-06, - "max_ratio": 0.001380428060579523, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 2.8014183044433594e-06, - "mean_abs": 2.8014183044433594e-06, - "max_relative": 4.83235871592157e-09, - "max_ratio": 4.8315252929613635e-05, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 2.8415859425479084e-06, - "mean_abs": 9.043560394161876e-07, - "max_relative": 5.2693441080580316e-05, - "max_ratio": 0.12687443233292295, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 1.1104528619299003e-05, - "mean_abs": 5.912194377683595e-06, - "max_relative": 1.4405505709407896e-05, - "max_ratio": 0.12226673722019572, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 3.0584459700944144e-08, - "mean_abs": 1.913106527814291e-08, - "max_relative": 1.4205513248947762e-05, - "max_ratio": 0.0026106089217927887, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 8.940696716308594e-07, - "mean_abs": 8.940696716308594e-07, - "max_relative": 1.5417975254320656e-09, - "max_ratio": 1.5415316927095598e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 2.911699425567349e-06, - "mean_abs": 8.534018255708145e-07, - "max_relative": 0.00012803805876278234, - "max_ratio": 0.18657539852383245, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 7.236126109866348e-06, - "mean_abs": 3.3979011244935877e-06, - "max_relative": 2.12731469551189e-05, - "max_ratio": 0.13578194111589456, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 1.9929977668198262e-08, - "mean_abs": 1.0384995751591353e-08, - "max_relative": 1.9028338427526605e-05, - "max_ratio": 0.0017099393759693316, - "bitwise_equal": false - } - }, - { - "0_energy": { - "passed": true, - "finite": true, - "max_abs": 5.960464477539063e-08, - "mean_abs": 5.960464477539063e-08, - "max_relative": 1.0276691174564272e-10, - "max_ratio": 1.0274919631821293e-06, - "bitwise_equal": false - }, - "0_forces": { - "passed": true, - "finite": true, - "max_abs": 2.744388893916039e-06, - "mean_abs": 8.448484555718486e-07, - "max_relative": 0.00012603935051434895, - "max_ratio": 0.11757530189942561, - "bitwise_equal": false - }, - "0_virial": { - "passed": true, - "finite": true, - "max_abs": 7.308003678652142e-06, - "mean_abs": 3.0443718373092863e-06, - "max_relative": 7.236894346690665e-06, - "max_ratio": 0.05654407760619928, - "bitwise_equal": false - }, - "0_stress": { - "passed": true, - "finite": true, - "max_abs": 2.012794524108852e-08, - "mean_abs": 1.0890898884065216e-08, - "max_relative": 4.341268855736482e-06, - "max_ratio": 0.0017397874496624037, - "bitwise_equal": false - }, - "1_energy": { - "passed": true, - "finite": true, - "max_abs": 5.781650543212891e-06, - "mean_abs": 5.781650543212891e-06, - "max_relative": 9.973165860518985e-09, - "max_ratio": 9.971445817388346e-05, - "bitwise_equal": false - }, - "1_forces": { - "passed": true, - "finite": true, - "max_abs": 3.748617604770743e-06, - "mean_abs": 8.949216583712764e-07, - "max_relative": 8.728442936403831e-05, - "max_ratio": 0.19662633077944616, - "bitwise_equal": false - }, - "1_virial": { - "passed": true, - "finite": true, - "max_abs": 1.8756828744415088e-05, - "mean_abs": 8.023873440269705e-06, - "max_relative": 5.816841497965407e-06, - "max_ratio": 0.05302082939684836, - "bitwise_equal": false - }, - "1_stress": { - "passed": true, - "finite": true, - "max_abs": 5.166067759340698e-08, - "mean_abs": 2.698633391440333e-08, - "max_relative": 5.7044920017537554e-06, - "max_ratio": 0.004372041668037314, - "bitwise_equal": false - }, - "2_energy": { - "passed": true, - "finite": true, - "max_abs": 1.2516975402832031e-06, - "mean_abs": 1.2516975402832031e-06, - "max_relative": 2.158516535604892e-09, - "max_ratio": 2.1581443697933838e-05, - "bitwise_equal": false - }, - "2_forces": { - "passed": true, - "finite": true, - "max_abs": 3.0522936711463444e-06, - "mean_abs": 8.918387139449091e-07, - "max_relative": 0.00018927185452382247, - "max_ratio": 0.13300152496608025, - "bitwise_equal": false - }, - "2_virial": { - "passed": true, - "finite": true, - "max_abs": 3.496542490211141e-06, - "mean_abs": 1.577094147923545e-06, - "max_relative": 1.244098685834877e-05, - "max_ratio": 0.07940815473083772, - "bitwise_equal": false - }, - "2_stress": { - "passed": true, - "finite": true, - "max_abs": 9.630292879120317e-09, - "mean_abs": 4.75344163040151e-09, - "max_relative": 5.728141736537804e-06, - "max_ratio": 0.0008201686919741789, - "bitwise_equal": false - } - } - ] - } - ], - "torch_reference": { - "gpu": 1, - "process_count": 1, - "self_repeats": 3, - "worst_self_ratio": 0.2115126973181738, - "caveat": "accuracy reference only; GPU1 timing not mixed into GPU0 performance table" - }, - "test_summary": { - "focused_cuda_passed": 60, - "training_and_higher_order": "dispatch guard tests, not full training validation", - "local_input_alpha_gradients": "24 edge-count/distribution cases, bitwise equal, finite, caller tensors unchanged" - }, - "limitations": [ - "Latest cold-process matrix covers Neo N64 only; no multi-model/PT2 acceptance claim.", - "Small-path residual reuse overlaps the earlier internal inplace optimization; percentages are not additive.", - "Earlier opaque two-cohort N64 path regressed 6.85-7.81%; it is not the reported small path.", - "Cold-process percentage differences alone are not significance tests; the fixed-3%-noise interpretation is retired by the controlled timing follow-up. Full model outputs are tolerance-equivalent, not bitwise guaranteed." - ] -} diff --git a/doc/development/ecs-edge-cohort-benchmarks.md b/doc/development/ecs-edge-cohort-benchmarks.md deleted file mode 100644 index 52a47a0d1e..0000000000 --- a/doc/development/ecs-edge-cohort-benchmarks.md +++ /dev/null @@ -1,211 +0,0 @@ -# Experimental SO(2) edge-cohort inference backward - -**Update:** the cold-process numbers below remain historical measurements, but -their earlier fixed-3%-noise interpretation is retired. See the -[controlled timing follow-up](ecs-edge-cohort-controlled-timing.md) for aligned -autotune choices, counterbalanced same-context normal-API measurements, -process-level uncertainty and negative experiments. - -This opt-in experiment targets first-order input and alpha gradients of a frozen -DPA4-Neo model. It is not a training optimization and does not change the default -inference path. Enable `DP_SO2_EDGE_COHORT_INFER=1` **before importing the model**. -Use `DP_TRITON_INFER=2`, with TF32 and AMP disabled. Other model components retain -their original precision; the checkpoint is not globally cast to FP32. - -## Scope and implementation - -The checked layout is `F=2`, `Cf=32`, `lmax=3`, `ROW=320`, three mixing layers -and two gated layers, contiguous FP32 activations, and `apply_alpha=True`. -Unsupported layouts retain the existing dispatcher. Weight gradients, higher -derivatives and extra saved-output gradients retain the existing training path. -The switch defaults to zero. - -The existing backward traverses a full edge set for each layer. The large-edge -experiment instead traverses the whole reverse layer chain of one cohort before -advancing to the next cohort. Scratch buffers scale with cohort size (8192), -while saved forward activations and the returned gradient still scale with the -full edge count. This is not a claim that all full-edge storage disappears. - -For `E <= 16384`, a single-cohort `torch.library.triton_op` exposes `wrap_triton` -launches to Inductor and uses the internally owned returned gradient as the -residual buffer. This avoids the opaque Python multi-cohort launch overhead on -small systems. It does **not** fuse the reverse chain into one mega-kernel. -16384 is a tested dispatch boundary, not a proven optimum for every workload. - -Only internally owned residual elements are overwritten. Caller tensors remain -read-only, and GEMM matrix input `gz` never aliases GEMM output: independent -column tiles may still be reading `gz`. Saved and output strides account for -full-graph extent even when a cohort has a partial tail. Alpha backward remains -separate to preserve the forward-output lifetime contract. The single-cohort -residual reuse overlaps the internal inplace optimization discussed in #6058; -their percentages must not be added or presented as independent improvements. - -The five GEMM schedule parameters, gate/point/recompute schedules, weights and -arithmetic are unchanged. Four native `wrap_triton` launch sites additionally -pass `saved_edges=0` / `output_edges=0` explicitly so optional Python defaults do -not become `None` in compiled native calls. Static and dynamic native tests -cover the disabled-switch path. - -## Measurement protocol - -The baseline is unmodified commit -`668b60cc2a9559f79abb9c33acd959833376344f`. The checkpoint is -`DPA4-Neo-OMat24-v20260627.pt`, SHA-256 -`8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d`. -It must be provided separately; it is not bundled in this PR. - -Environment: RTX 5090, driver 595.91.07, PyTorch 2.11.0+cu128, CUDA runtime 12.8, -Triton 3.6.0. The main table uses GPU 0 only. It runs the normal ASE API for -energy, forces, virial and stress of a 64-atom diamond cell (`nrep=2`, approximately -10114 edges), seed 0, position perturbations with standard deviation 0.02 Angstrom. -Timing includes neighbor construction and host work. CUDA Events bracket the -whole API call on the default stream, including host launch gaps: they are not -the sum of kernel durations. - -Three independent processes per arm run in the order BASE/ECS/ECS/BASE/BASE/ECS. -Each process uses new Inductor and Triton caches, eight warmup frames and thirty -measured frames. System/driver caches are not purged. First-call compilation -time is recorded separately and excluded from steady timings. P50 is the median -of the three process medians; P90 pools ninety samples per arm. A GPU 0 NVML -monitor checked for foreign compute processes every 250 ms; none was detected. -Clocks were recorded, not locked, and no global driver settings were changed. -The monitor covers compilation and idle time as well as execution; its clock -range is not a claim of constant clocks during timing. - -**Primary memory includes the first call and compilation.** Counters are not -reset between loading the model, first execution, warmup and the thirty timed -calls. Report the worst high-water mark across the three processes for both -allocated and reserved memory. A second replay resets only peak counters to -measure steady allocated memory; allocator caches are not emptied. Reserved -memory can therefore retain the earlier cold peak. These are full-model CUDA -allocator metrics, not SO(2)-exclusive storage or total driver/context memory. -A compilation scratch allocation still consumes real capacity and is not -subtracted from the primary metric. Sampled device memory is an auxiliary -measurement and can miss narrow peaks. - -Numeric results and all per-call timings are in -[the JSON evidence](ecs-edge-cohort-benchmark-results.json). - -## Results: cold-process Neo N64 - -MB below is decimal (`1 MB = 10^6 bytes`). First and complete-window peaks -were identical in all six processes. Each arm's three allocated peak readings -were also identical. Memory columns report the worst process, not its average. - -| Full-model metric | Unmodified baseline | Opt-in candidate | Change | -| --- | ---: | ---: | ---: | -| **First/complete allocated peak, MB** | **498.199552** | **480.156672** | **-3.6216%** | -| First/complete reserved peak, MB | 528.482304 | 507.510784 | -3.9683% | -| Steady allocated peak, MB, secondary | 397.536256 | 379.493376 | -4.5387% | -| Steady reserved peak, MB, cache retained | 528.482304 | 507.510784 | -3.9683% | -| Wall P50, ms, median of process medians | 12.157611 | 12.313776 | +1.2845% latency | -| Wall P90, ms, pooled 90 samples | 12.414686 | 12.432651 | +0.1447% latency | -| Wall min / max, ms | 11.702988 / 12.855804 | 12.185729 / 12.588670 | distribution, not a speedup | -| CUDA Event median, ms, pooled | 12.128464 | 12.314896 | whole API, not kernel sum | -| First call including JIT, seconds, range | 124.931-125.718 | 124.219-126.629 | excluded from steady P50 | - -Baseline process P50s: 12.157611 / 11.771478 / 12.372728 ms. -Candidate process P50s: 12.398105 / 12.254008 / 12.313776 ms. -The single-batch latency difference alone is not a significance test; there is -**no claimed stable speedup**. The result is a reproducible memory reduction with no repeat -of the original approximately 7.8% small-system regression, not proof of zero -time cost. First-call compilation latency itself is approximately two minutes -in this fresh-cache protocol and is not hidden. - -| Accuracy comparison, three frames x energy/forces/virial/stress | Pairs | Worst error/tolerance ratio | Result | -| --- | ---: | ---: | --- | -| Baseline self, independent processes | 3 | 0.282621 | pass | -| Candidate self, independent processes | 3 | 0.184105 | pass | -| All baseline-to-candidate process pairs | 9 | 0.256570 | pass | -| Six processes versus fresh pure-PyTorch output | 6 | 0.352841 | pass | - -Within-process worst ratios are 0.256139 (baseline), 0.354324 (candidate), and -0.211513 (pure PyTorch). These characterize observed noise, not permission to -relax the absolute/relative acceptance thresholds. All compared arrays are -finite. During the full GPU 0 process windows, the highest sampled temperature -was 46 C; clock samples ranged from idle 172 MHz to 2902 MHz. No throttling -cause is inferred from those whole-window statistics. - -## Correctness and limitations - -Use `abs(actual-reference) <= 1e-5 + 1e-4*abs(reference)` elementwise, without -relaxing thresholds on failure. Relative error uses -`max(abs(reference), 1e-8)` in the denominator. The evidence includes max/mean -absolute error, max relative error, finite checks and the maximum error/tolerance -ratio for each frame and physical output. - -The cold matrix is checked against a fresh pure-PyTorch reference with Triton -disabled, and also checks baseline-to-baseline, candidate-to-candidate and all -nine baseline-to-candidate process pairs. The pure-PyTorch reference runs on -GPU 1 in one process with three self-repeats; this is not a three-process Torch -noise matrix, and its timings are not mixed with GPU 0 performance. -Full-model floating-point reductions are not promised to be bitwise identical. - -The focused CUDA test file has 60 passing tests, including zero/tail edges, -legal near-zero alpha, caller-input immutability, native static/dynamic compile, -and dispatch across 16384/16385 edges. Local experimental checks of input/alpha -gradients cover 24 edge-count/distribution cases with bitwise equality. Training -and higher-order tests check dispatch guards, not numerical correctness of a -complete training run. - -Earlier opaque two-cohort N64 runs regressed by 6.85-7.81% despite reducing -memory. The compiled single-cohort branch addresses that small-system penalty; -it must not inherit the earlier 9.46% cold-peak reduction claim. Differences -are now evaluated with process-level uncertainty, not a fixed 3% cutoff. Earlier diagnostic -workers produced different baseline timings; their numbers are not mixed into -this same-entry-point comparison, and the cross-day difference is not uniquely -attributed to a hardware cause. - -The latest cold-process matrix is Neo N64 only. Earlier larger-system or other -model runs with precision failures are not reclassified as passing. This draft -does not claim multi-model acceptance, standalone `.pt2`/AOTInductor/C++ deployment, -LAMMPS performance, new NCU measurements, or full training validation. The -large-edge runtime launcher remains experimental. - -## Reproduce - -Install a CUDA-enabled DeePMD build and its runtime dependencies, plus `ase`, -`pytest` and Triton. Use the same environment and checkpoint for both checkouts. -Create a clean baseline worktree at the commit above, and a worktree containing -this PR. Set the following paths to absolute local paths: - -```bash -PY=/path/to/environment/bin/python -PR_ROOT=/path/to/pr-checkout -BASE_ROOT=/path/to/baseline-checkout -MODEL=/path/to/DPA4-Neo-OMat24-v20260627.pt -RESULTS=/path/to/new-results -BENCH=$PR_ROOT/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort.py - -# Each --out must be new. Default caches are inside that output directory. -$PY "$BENCH" --gpu 0 --mode torch --source-root "$BASE_ROOT" \ - --model "$MODEL" --out "$RESULTS/torch" -$PY "$BENCH" --gpu 0 --mode base --source-root "$BASE_ROOT" \ - --model "$MODEL" --out "$RESULTS/base-0" \ - --reference "$RESULTS/torch/outputs.npz" -$PY "$BENCH" --gpu 0 --mode ecs --source-root "$PR_ROOT" \ - --model "$MODEL" --out "$RESULTS/ecs-0" \ - --reference "$RESULTS/torch/outputs.npz" -``` - -Run three processes per arm in the order specified above, with unique output -directories; do not choose the fastest process. GPU 0 must be idle at launch. -The benchmark refuses a nonempty explicit `--cache-dir` unless -`--allow-warm-cache` is given; warm-cache results are a different experiment. -`--nrep 4` tests 512 atoms and `--nrep 8` tests 4096, but the current N64 result -does not establish their acceptance. A failed precision check exits nonzero. - -The CLI writes `result.json`, `manifest.json`, `outputs.npz`, first-call memory -and compiler caches. It records global memory including validation, in addition -to the primary normal-inference window and separate steady replay, and records -source hashes. The public CLI has also been run end-to-end on Torch/base/ECS -with fresh caches; its GPU 1 timings are kept separate from the main matrix. - -For generated-input CUDA tests, use a correctly installed PR checkout: - -```bash -DP_TRITON_INFER=2 DP_TF32_INFER=0 DP_AMP_INFER=0 \ - $PY -m pytest source/tests/pt_expt/kernels/test_so2_edge_cohort.py -q -``` - -No weights or generated compiler caches are tracked in the repository. diff --git a/doc/development/ecs-edge-cohort-controlled-raw.json.gz b/doc/development/ecs-edge-cohort-controlled-raw.json.gz deleted file mode 100644 index 5b5065bbaaa1ce4d71ff8d353974c23dd0419c31..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1311322 zcmV)AK*YZviwFP!000021MIyGZzIXEE%;Xm0T0;4>*i!eevkJp;A{KsF812KxYrN3 zfMEz(RaxEKkwjgRnsM8h|Gp=xieF-uNERtITg{f;(<-tmGb1BToQRCf`sdAkTEr?Y z;?0l$yqTAu(|x@CInCyi>BG&B^1}^2N;f~=kRba}ijOkfe7Gs%Jl#zm(rr1tzn?7d zv9-RiqAV!}V?ymhEQ(Mn70W7^;FVI&Dy?hWJh^|oOZVwv5f^A<{fLAo6wWKFVkmuC zi9$MGgph0{eVwW(gDi{M;t@Zk*+aU!eg34+@!?adZhoxe-8_A`nNOc)WxAbzj$|y4 zu1e|gzWU*Dahv}BxcH%c%KV4LY_ga>{4h`dxc^~3rQ4t5-BY@KjEm3X$1gneq865l zP!xsNiR!3JRaYbx)vAovCtZfJ2r`PGq7%^yQOi=MLTFQ{$Q?egJwD;V|NfW%92xYUr81j9({RlMGY)br94;=Vv+^@beJpY1zn4#vJT8|{ z6*Tll(wKj11&80&*p5XrO1iBUUmjUi>$_=ODB`cx_|H-u;{D_5-}loh-Qlah|F_@j zkAF(jkAMDST#)|wGpji!+l?O=H{I7(3UuQuUr-^S3dR}CcoMPJ1g)3QU0H>?E{jrV zXQ(6+s-jS9UqX}1%GAPDEE8DU=V`^_m^{>JmL8y?MJ#_x54d=9AAd@>_1{My|IbmJ zE^g8O(;YOJ6@5}qQpF#@U>+xT{I%Q3!$X?=X7n%}{r<~Cyq}I%&m7ed{DL3);pSmF zyN`Fb@o|C{e)}JP7$w~G>B|o_B%S6zV2&p7?uYqemgaLjp}c#lCJ&!R4{7r0b1|Kv z!3TW!RI-ubagVdfeVl!{eVnCo(!#_)Z{lJKdCK%rm=8Cz<`*#*LI6N!=??b!bGoh4 z!}NagfUnMOF-Ox`dxQU#yLkKQZd#z1<=wRWsWavI&5vjo)3x|KOR>6*bv=2QELc7N zuYdbrV)VOz`(J+a-$(aTT%69N{mlrMC12KJeO%q5=N_U=B#htYrhan#&3 zswVYPIsT9TA;#vveHazf#bw+PfF&{xQws;t8_ZdI0@y ztqLo%D&x;7GL}D1=ZlX}8jPS(+l`(=lJV}#d;$Tl4D+OfP zNDSX2`f#)SH|}Zv+4#Y`=_ek}v{h{KPFhk%2=8nNRs(|WZ|^_kVt7n#@xj3jOA}lpjjY64(YN!x zHIVgXCAK8ycJ<9T_DfcJW1Z}2Xf@4v=wS`{9UagHqYo0QKt^YEKw@gv52vxwa;*@X z4-Y#JXLA8<(L~T^^2ZJ1*$0~~NwK41uo#J{u|z&N%1@0PANu?)0QlIrHl+x(M+Zwr zDcv&^!PK|=v(c0ri>=4+7`-F|h*9371rR-9d-}hLBK?n7JH1zAT~H!;3G#;4vJ)*_ zpX%Zf8=q{owPWl=PHN?XH}EV_;A~5_rzP;cUi^|fmd}z<4zjaGD=D+UBJjmcgwwv0qeS@|DUXq9`9-7rJ>Bbv&r?;9~&KeJHyQy8jpBa=HE0wcV^kKtMxUHskXn{1^vKM7a01ukib>D*un5kX`q#b9i zgCOt%AgVMj^cXPpG=Ewii zla>OSrghIiwm8zJho+5*>L*XF%p}Xq!ubdR!CBuYv^5;)O@B=rQ*U~i)W?=~kcNb1 z&;}$)E7jwM)>g0mW>Z`Ax0g#T{VB|gg5q)c0RPm}*4C77dT-fhJZ^Vfd^0=}7y_Z= zy3e}?vHDrtj^3t@y>zN=$+=*yB(Gsc@VR|#bZb%$3KYVwVqhc`0?@!X#?^2f^WC1t zetPxMju{rE^B}<5V8#%|+n%=khUspNYcIdDfHu%wshk6u_n~i&^v2Jo!O9I6Yx>z% zD>)9WBy`Sd=)07Ces9ftrRa4F8M=k%YiPB_XaY4roOwKr?Z(s#I3$d|`=Nf0wVZmx zSO6%656?4eR$RaSS+^wnl}zqpf&eK64RJ77&ul9nBRrG;x-ojjO?Qz17U@7uC1ad} z+;k7O5;^OHyY7qMq|1m6URvWXP)GJbwuc&IV{2ws8(rvUR&7%xtP_T`2j-x$zA5Tq zAbkMPptuZo1RhSao~kvZF8&E?*Raq2@`ygU?$fyth||mG4`4%WiY|v zn@+&JssJ7p)KSyr`f;0f0x-|{2~cw>Ko>w7vh+&z5EK4jBjoNUa-EB?EIfvO03N#7 zgAQx(K@9UORNbX-ozelN1FM6ANrIB*2ppY|2NOyt3&vxNV{Eg%t~ARKr0T`Eoe6=I zG*kJY;7S$TYPKP_nVNVZpx>p_&e{O50rFt#>6CDLCjy2iMqJ>$2Vg={{wNalEQj!7 z<_qYef^p8k891^hB@K2XUd}Q~P6}CIvJS^^CX7P4mor=0#r1K1DR(VFdrsGYL2@*!dt%t0%!cmg{JU8$2XnBRz>E=J*!-vf+u1-y>i!(m zj&%dfHQ)(xxzh^4pXy0MWi11pREZm3~L7nq=rX9ga+RQJED9N8Z@VA`9SDflb*pvqaId&nNFEss;bcT{CvLxA_tk(#oj~kWT(w9ByF3t*p zY03cEA&jCvI*|=-U&y!arn{WMAKcDaNicHNlf%o$fEW~R%zL(7J_er;4a9K35;?tg z+Mx2;E(Jr<1T(?^H6}E}mDEYeE-+TW1BBo~^ngY^`lg)e%{);qurS~k%)Y?*^NK~b zC$FXZVPFSD*&t-=teJ|I~gtnH~@IVuw_W-$Y?5KK!rQOh0A@XxTY&2tRUuLzJ zko3doZe+{dF~Jcq&ICdu`0de-~Ip=*mxTU=Ej7+^JN zXY$0jKbg0)jP!B}Ov8Ge4VtNBK4T14pJ&GX85Ow$6H*3^kOJ}n22u~L6Fr8-nYQhb z>{2Wy-p+$DBGks1@`-lDNIl#;^e5OdC;>!8D4{fbF1V`iQ@pIp;B07L=(5YPpyHM- zHb4OQc0LQz%jbkYCg}yjXRUyL=R_}PzB+1H@_8z+C;vsTR?F=e#C@1rzxrZZYIggW zW@S^J+Eg?MC$-=NZ2+=_RsGoQBAE3z|B5GrVk2gNo>>EJLqz$3)u~y?^y~^DnDDn> z*R_(LrF`Ak$vNnsaylSRHDSFhe*1YcU-01W`Cc%4(*ixY zAX>d){{#2T)R;30AXV(t*huj?Co>rH_^Rf+Jhdi@`|(wFq@0Fq9U;)W{fG2o*^28f z0VUX(HI=MfH@Mrkrh<^W#OYZ~A>W6uZ&VWA&RF)4q|zU>``fatahBqI`fz(6=S-yk zdBfuZHbIfvdG8Y$I}O+(i#>2<%S$3tOF3EXm%>wGDKSeci7CC77$bQrCrM!`JiC;N zJ4hC;PXunC2>4!>K|L*><`_3uLfi{rS&-`PV=H?*B#qSrs3i?r$;B$9Y3V`M3EZHnqaC8QMcNX}2t_?*l{7TQ}{st`$6*0@j<07(&<O4N)<`e%9jOEAxepWiDv`aWT+r(>Z0<6t=MTte8+}R#41{0@eOC|%b1Ho zNk=u1B*au(7b|5Gmk)bcC0m7Hih%J%$lk;tqAP^fr7wc1E9*pYDWkBJ=KT#Z#sHa< z4~di$5vHP5NwrQoQYZqIbx;_s&=UPONn#L5MtK>dNJT}GWK|eWqx(XqV5-U|SEVw< zx{%N(?J)#fd0VlS7f?c8kEkmLM7t1>DwK_slt{d!TxnIozQIJDugU6E6~b2-Msl(y zs!c6j1@HoxC7GNp)5Q$KR!|W*313w;c~f|$gR&fns8B}(Otrd7L^^^Eg#xZZl~r_- z%XYN!2MmLwtA7`_-EV3bWce4KLH)xsg^0#Jz@srVQ-X}3v(T>n5CjF;U+~$kvJdhbWGr}aEj8@A*w)i;84Xt=M;EZ zgcu?LIEun4B`yZp>N*Hn#8QdEmoR^*RpAiM*CY~%nF7RVX)6Q86BVGlF5rX!crnVV z1V_INWfQfl(IcO{s#1|^%tTd|By=oPK#vI|xwb`O?p2Elf2CBJSYoO~S$TIMmLH;t zx~kbxLTFS)Q6&L~0-Z6npyUJ`OoW3km9tfCWEDyS%AZ^WhzWfeli`#ng40O4E+T?^ zuL%lNg{nYA!iy#dwPkI}q*$RqSSXbid;n2Ws!MwzDwP5vDQ!!HgH$J*>bgk4U*35X zN<>+@aI8+CU)K8CSg;kVfd(=qvPzi?vG0KHqyTbGAiNS$i34*H)<#j5g+pNFNUDPW zS2@D}sH)&YZIhV-4%=6pjJ*NP21i3C3BoGV;WhQd1yCx_OI=XyBGWFVO2Nc3NY+1RO3-M81k!rp%Cg3Ax!@1vGNlV~ zCA?tA-q1x4PffsE3!0^3ba0gpZi8fssnSwQ6%oWxBwZS~|B|bkbv$4g+sx^igqK9> z)#eGfEStP}0n-UJxTVt$s8GoeBO!9;QzM)z5ZLn}7ohmHl?M7(`b3BEuQvd;3h^OA zM(G0ZOK`QB7Alp#Kqo=TNb3OZ>@*_JL^Y=;s1^vJK?M-0DSsJ|;00oM?;HjLdtq4M zlPL;O7~mKy7FC94r2gpWLdsH^D&qH8 zYcRBuf+juz3WKOBW}UTy({Y70l_`}409;618KL`-y=QH4uJm3i-XmKF1eoj_9hCw9 zm!zT=qE39G72>c$*0Quvx3_XK+w4vsZ1)C{fTU<)4!SHPrz?z$H6or`B$1RPQV?&(I|t^NODD@jvH;yIU_-j*9a$yVWpJ^yqOO5>Mpy7T%9hpu z_DoPFAsjOBq>e6wcBWc|QX`B>mEsfR%AhezrK%Hn0V({Ym7*GvohoEXDh8qiz(a%p za(Wmbe8q);l9$D+h`^=>;Y{#~1{gu`Myf!FMjYqxt{oF9(4mTVR~A)F7;+)4rEnQ| z2lI(q1r;H8VJfDfKIsUKSs%&rI%et`ez88}80Gvr}2$<(< z1x2IUfDu61eB#io1T!crA0%l}M_%h7F1wQ8sfs)Z_l4xqZ0&VXM)>rql$ZwXeL&AG zA4CLCL{b-4@^MjM)?lN$Jt_ct$2IOg6_>HVU-5!|MC4z>q*Y3YD-knWk%CKAQ8^B9 zz&C{h-O~%DT8XH<1wbIANtPp4OqVGzb4GaqKBtPWYD`=#Nw@#= z|M|~9{JysWjmz*}sz3{-;!Rv3at7OZjME^%_63&@Ridi2#*`ym0wqNB?Mvl#uu$nh zg?5Vcg+P0iIB#W287r@t;S?Hw1sMatqo@o(!-3BRS!mBE(^es1ih04^@OfV0QbN^h z@z&)OZ@rJ=0O<<}>6QizT3IRyag0icfIz3)4QYgt#)7Q{j7ShP3h_=AiXtGQrOTiT z@1!^&Da=CQ3m~cjuA0Ik?v(tCC@lT~Kcj3ADn`XAT?7vxZ;lTp5=8_FzYNQeP<%v| z26JFtDd8AH@MW{cVXGv$#=+D=26zlz0)Jx}l?o;qL^+r=ci}nq_fh-sK8gmCtw~F5 z5kMnc(5i-t6?HVRkj}yjSaqs7`>t$ZD&9Omt`HZ#D)mlEBHl?c0oA1g zZK*k0Hl~a~Zs7r3#5IG6YDxuS0NRP52WnX-AVQKH9B{tOT}qDKu(Wv(P;C*lU>=A^ zWK0DfEsU^iHn4n-w?X8h5eTZaEa8hVi-mO;QWNnmDm(C1#4uG!a2N>k18kvC2&Y51&0JaBQ&GR^D#;iL7W6A zNCW6fqDm5GV+0soEWo-eK53~46n!0PYf5=gEcynB@ILBL0>YRAL39v>j~rQ3R7DA@ zA}B;y6T8c3pmzvIJ&0)Zx}X|R4$RY~tuBOI@|tY&AX?HU&|!FXuoFOBfL6iEBLW&& zlQq^CrKu{8HDOFz`9errT?j>nVw7ON7PCq#4is@mc1VL z;*uG8Etz>oB{SDkn=YsDr}DP;h%vQ6oXM+BhCm}_?RZr{^XWP;59j&iT*tKaWDytz(s-)7^NHp4jV6O9m+^tfn@9GoD019ks()A z692`}`G{|O*~M1xqrm5zsf-zz*}onMay=5{THSN4?s;$3J)8@(rExI?SAuEEA|N~~ zLku+{VdtX;o5qN0-YX2k>5~eG%b<_8ur*ysfPXy^7SzPH@7aCp9EP9nQ zi@4K>m5Z`KR3qv#aaKbDtqE~8$TK3*GH~P>p_M?sV68N8z1D+_8h?H3)EQ}+N8rUd zJn$?c^jlTnV^u6%Ve42R;%CYu5~tRKw=Tw_0H(QUfCoxc*OI2|OQ)_UEM4pgOU@^4 z!A?A=d{x1k5e)-^K*tI=i`rMtf_L%qCHr%bWD6=*8w?_q`eKqQ-^d%l2Ck7^-<{>y0Jss;TRN$Sw-|SjIcQFNY zfGA<5XpX`mD0~D0l%AKKg^s!)NS)6x=Zz&QA`GyG&%ZT6h6q9+Ujna92;S52{;yJ7 znq^KrMCMwXbxE~Z*Q%!LAu?w^xFkwxMVox~@GGRFfD_T|0ZX`WU&{)nQ5Ia=R~K~= zo$yrFUKI!})1{P_zmHdWQP3_}Xc0o*AWedQNyPp!!u>_f$9HNfJ-9K(BB6NjEIxom zgLsxIRM!%-Yl+$6s{!xh$Rbrc1o%cF(9+6z=3k{mh>sB=th7LcBvdj*0(b?|Ng*;$ z1OgLlu4uRrX8%4a$)XaK0#UCkUn9Z=(Jzt&8CI2RPFu2Y_GMX<17``MD7+ECXCDy` zNR{M;?2&yZClmApftD&hM@Y$7y} zWG^qI+z+6|o0&`41J%i<8Wsak^3sG*0;Kp@STK1IF3X#mEc~O@Aw^Ixj8K^i(Y3@2 zEQkY37k$YuTuu-%i~^x!PzVe`XR4}j&cTZmqL#7}WtEh$8q}tA?pjKAzI>#vYS=x7 z4W%k!8Ws_XD0owXsyQQBRnqZ^7~n4;U-(l-PWjhBIBCnn%9q~aD8g$M)&*5zU0>Jt zrsY=tdMMfTP_k>y*jp?WUtibvExfMpS~d2TRb%u$SB<@sv*Xy>9b&ACbXCE(M8uJG zC9N`;84ONv8Jw`ryHHq8+F;t0;3H&s6X~EV>}!<3NWuHUgJrzZyu`)tOD}D~D-aHG zq$>FJ>ZNLSmDLWEIl(&#PG=S%)0aX#uLqW04=nrYn=!8SR@W2Dt|yiqllK5H>jIc; zWCex>2=ksP4ua<3l&MJS!b*U9+v%aoxCA*$jcD57C z#IO^~_||$h{YQG(x>X)@EAD-Wi>Fz1sxa>O@G0FsrdbIw-25oU!Wu&Kgt#LBC7~+ZYs}wb zGJU{ci@Rz0Q!wj0{`wL3kO$#XaDhgX&`_!mVl251Mw5Y+!yP*B|AtnLxV>-0Grg<0 zH6=XUelU(to5I~I(YGH4$*;xcMK=k=XcRjyd-*w~38+fTX)cu2pD zX6bR3<`{ZhOny$I$Jw-=+@;xQF^e$X->`_&=;@)trPXJXIp$^&XiF}llVugEF_x3Xm&Pi)nVh9XgcGS?KvjB74=f){$X)fZ>&xgq#re}L-Qxqy z>U{bHeaF1E22=fJ#JbR$6VLNviks)7YT8URbmR`&Flst6;!ZqsT+Ijk4-9x(#sn{Iq z1t7M9B`iKqtI-dm`^lU!5*@z9ZPow&n?~7JdNKlcN;5{8)g#6?!0S7Va}hf@`s>Y~ z(scAEs~ca{44y5ifufHMhX3$yf1w}l;_OrUn5s`{6w5L_E_j@+IPSiTAS)Ka=#S}B zYyoXPnnUu{(;fE@qr_Mvq|HM7(DZV$n2+GL8*~N&$5A<(&gUO7YDn!K&-vIsh}-zn zbOa|*u&ZUDhDdNn`g<%Fqkp8?^ka!>AANelggq=$`pvUB`8b_1_$Sah+%PR#UHve+ zoBs0gF8vHIe4iLaCiDB&D?Cj8>nUMWaRDMxJT1D(`3!-!p73MKFwg~P=7bTcnM}U9 zV}$6#VuV>}u2l)_61VV_M8={N+tC#10iI#OPyg4oeD5K`+xqW6{Pxd(!6W9-nDR5` z14AsJuAfu+6SQld8vRT>WxxLde=r?2$`NN@cmRvh0wleaId`FX7IbR*rRnYF6f!M_ zNG7Rq-D`8Wy$2xQ&Zt4@r~7+6xj}&0eWNuE1^;mKhu{4NtJKnAFpI&*Fy)4q;Gc{t z9k;ogegcR;6D`$>?$V_;lBP3>BN)vqNGO?wW7GsqyHbFK{=xc1Mk#d>Ac0 zr-#vR|K(qPJ8IQs^vh)Nd4dN=s64zg3>Lc1U;fRgVT_~pnQO(Kz{VIXC+wBx=m;~m zMug9`j3)x(_XsP3bWXzI@Jtx8f!9^NP>49R{eZ6tEdtMr23>YRF?SAxxJ4j9bfCWo zX83EkB%BpooJCp+gQtN4@d25JNa9NPTPK)DrZ+4y$YnJt4d7uY3}HXQXd$ra-Op^> zlTQz=)FG~EJ;ML^J0pg+F4kUwpWo*0;^KZrk7I zjUh=14=g-lI{{m06?r;k(_cmf%{M$O6V?d?JB7<`AflyDLwH(s;~q=9uPAQE%!-G=o}!?+9D=Qupa!>!wH z7}Lx6gW(!zfXp`x-R8qDoHbH<;9jm_v(qpz&T00afIIX;Z8t37w|V|efJYN5+b#iZ zgyRKks8)WwcBfh9`mk_i8%;Xn^-9k>oKt5g&Rkqz-$db@0ut%7l4LsS~4FgJG z|5u}I;piBk;E_02l=Z&(5b3#H3g@e<5HdLrL z91SKMRtqr84ps8TEz73OWfCses@@SW)Fr^bI?x*9{IgbhC%Q6?G>jHLFJR0Lq(q!1 zS3WCX^So7d^U`46z-fGNeydgZCD-s(-m{f+1`Ljxv+dqAN&%meYt`;(FdP?@0enw$ zUA*2_VQTz1TPxc3Sqa19(3Sx&l;F!cYd3C3!axA_snRn$G20S0Kw8PX3)BW~IX_mQ zqJ!&W{|7&nomao3O@`GEP!JF*UnrxdTm5Jj-(;oB7!y7Z5QVT@&Fn zm1Zuh#4s2Tcc#EXvmeSfy8}*ajFLT?vH&!<4HM3SUV++yw8|z!y3;Bm7~+)+s3UW^ zb({18PX>$PDV2>M07rX9XCPsWm5c41%+poGkj%6}F2LBKak*x9oDM=uKF*TYwV7t? zEvJJ(6Ks_jUt!8{q}WIYZCKi>U>GF`E@RztfHw z#Ju_A1c$=8hIg2<0PTW&f$vO&#kPMJV<;Mog5wOu{46_Sfv5?f4t?a4er$fkdRNqN z-e?o*Y#L7WOw@4Ph~3!@%RH-qmw=yOnOTq{vbk0>G#S>O+4^-T~DraW5P>~MW1-ZX5QwlN0zoF+@Q z9|O7q(}d6HA#YG63&(7@y3?s#ySp@5@H$*uWZTSZjsb z354L|n`M5-h?%G74p0h?2^HZC=*A4IUX~0($W?P(Z$KWA)}}r~oe>4YG9YEJ!jN$Z zf}>l0%^8zr*juj29XCY0YR(}LxMoo18CzxN2-9ZPDox0GKfs&gEQo?gIP05h^*Kjw z^Cln>&O7leV*`|eCjiWAVj@d6%aJ7}1(CI8PXvEpa;@%=WKK~wL8MZ!0~5B#%07tQ z5SM-EzOgci0)m1uz8vb>O+j)MrPEPID;WT;POC$U=n3=n}LfFp`18`RCTkZk%Hd{<-mD*Qo5j7lFz;7GZWEvuH9Xhj35Kf)N`mo%7|wQ&DlOq z`XFQwqHnPPZjZ={A_LC;S=I@nTTm+9uv)maT%)_$8VHuxpWp%6 zr*9`~RI^ZwLBOdhl}}B<%R{m(3h3o#%F(=#N#=wHxGEwIE<)X=t56URfaF+Sb{9{&$pX)b3{L!Jq=PUScfD`e&JX$%Q$b{{%FKe4?JkfcS&aP5SJl z?xv9uIU*E5)WuX&&~~GeS25X<66av@%L9-rm%$5oTZC*``R=5VEoX_LLu~zSJMSmQ z5FQsh7?uT`Q+84jyDQGiU;+TfI@{__8krp#aRG;*Chxaxt7wzBEXi@COxbA#Qd(Zt zaD;i4B0H@z6T72D#V!DtxSe_9*qsxmyx$6%BJ;2WeCB*0dYf!xyR`*X?FVyzOMY(Lw)`7C%eMF)mORfD;L-Fc9lfemt(rhgW{ zjHW%6IvLg6mL+ATn~v;P$n}c^V&c#kbN6R&7v(`RZ2Cyc`Ih47&T5gJaPZ-EU(Mdm z(qX1P#D28M^$}if?0J!X`Q!HXQ5|eQD|sG^M!n+XRGwM>xSo2h{mA)z?p@>6+fJL~ zroKV86;R>Kxte$$oo{sFRh5rX_=>E8#BETb|v_q$*Sm``nbz{cn`(;Rn_i-pT^{Xb=bieG|)d4V?(ad9ArRCX9C zrL|zs)7K`s9#((c-oDc7`O_XXRq&^3PjqJoveCxswK?AEd)3oXaHeOc!VnDgd%Wne zJ#=HE_1^v+!9rW#>5liE)CZhgm%sXPd;3atLs#moh zl?5XeHvagY%`C^JK^vpli|)O1ukxLBW6QN2%OAbBvxg(6T~56{hg=zznsWIULEaAo zPWrHt?|F28c%jp;v@iQr||oL9xAFDylzT zt~#5-CoYS9QLb{ps?s{+D2^9w4?=m?*F8a~6a(N?v~q1beIB{0F&zHd{?-1z9vI!L zQ=KW8@s{uX@6gji0|cxLrKeV-EJ7QT}S%)edtmS0ozk( zi|&)L(qT_*D&;WBdXlHr`DjXRtU;=tUAo6|S0MNXZ!t$MnwjkSxPr$GY8|$iy?s40 z=x1;^dc8EimT%!1wA$ap*9-OgRvyimH%I2QQy#Z+FJArPrmmQuJAU~= zW~W<_&4$tPlm&dpxH-50Cgl5yXv&6c3Pql}ftMYY8U_PBXRPwWj)3KP1Z>ArsI`Fg z-cBE0JaxV`3ktN>SF^W^>d3met^Delt}NiQ z$(0Y$e3@Ghr~}|09!*ht#EEE1Q{RbS_ z{AW+8!m(X#2f!m-po?n-w)~R&Ax3BcZ+m4y(!NVJ$ z*(OEDt@!uVPAPG|Wpp*>7YQ%rsd^41e~SZ9`gU<6HZdC;qxX052r@c2CDkiUJ~cCw z=%bU@`3G-5>lLfYJ4rPlXS!V5B^tDIJ712(2is?sOX=jj`={igs7FJI%-$}_;|^j{ z=i3GkD;GX{tQDQQWB)vRpqm{XMr1e2&~a<|eY}|HYzyRS%x@patdG-COZl%VO|9hK ze#s+6D9zbK2nN@joPMwjU-P7>-abmif z8iO7*qHz$EE!&}^*6n4Fn%Z-fZm?W^bLQ+%;4I-J}n*0((`Um6s-ujM(k_^oHfj^DhOJvNF? z-mpJ-^`rmz1MT+UR2Ue`4_{VNeXd^_VfJ?M6%Re>Sy<**X!`InCy`=cJ?UWA)W4pr zH>&ja_f@`LGOTykurzLe$LP2%t-=jk;miw>-va((TqlRF8J(wkgtgKNzn*B@_a3)n zBly*lu^6y(q(`2Lw_fjIpM&<|b7u!96?+A%^*RCx2MG4q6HL!1S!PW9{+`T67dmMN z{#vl&OoD9+2!qMus5)gWegy$q3^@fnzZft5nBNkRtIJoX?!Y&DHs~I?0pIDdHa5Gs zpiVeUzu7!8d?7Kv!tMPSq1{@lW^Z4QjPIMQggr}<10Tgflr1PzCmgKb=1t^4Qrg#7 ze$S6|`bFE4C&c$nR>Gd;Tm~P;f#iN^9)_xI71_{0w7-i&x!f99NPx`>`=bEowSy}nea2`kZZF*t~ZKybkCcP2PFaI zKDi#L1fW^g$d`dY4}({?N36%cGQgYs%c}M8M5=Y?t1j{yVT;S2f1^%b)IZlD;d;zH zT>Y^c{AshdH|nFZuXh~US22IjX9#T6qPe}D zeFIeOEkX%mBLk%NcJ;^;`3ISQPhX*>n>t|k_VqOxYVVf(o}6D8SY$fb)bkx=hwpv1 z`cPfix<0#nW!;__|D<*O^J)N4K(D{2c0RkFrrvyozgIcE*Xwh4vU5Lph5y`|8aNYS zv+uM~Z@V&V$WKi9QcOk;cltN^!=D@$iA{toxa|`%14`X9m3&6$R2E^PFeR~ zC!~osUTq}LQkCKxGM#-1usZ!P{-NuseG;}~Qfg0zLY}x(bw1JRu{c1Shwp(}Nz9`WY?wi30v^nRn+Cu?|^p(WQ!@x*eSW*mF@TT^;l39 z;%vL!X$%F(zUM~2`Jw!MtNv;%rOLiALZ9VOelcKAPp>$&+IR^A<+@5k3F~qd+4@4ZbAQ5P2Fx-`ere*KF6N?bBdGS zQBT?BTz&dFzC6!c)Fme$*YdP``*=8V(o&q^JiGFFH;l=?!a|>V(*C(pCRK z(U)}MZtc8WJ>@gJ`qU-;71ukPScTWeh*iC!JEdMsb@VcIcEjjsa|EO}XFCEzkEL_# z4bXaTS6{inRAmDZ_|liDvm1!1r-(CO7qNA8nLg=E{WFTt@e7Kx>2Q7WVfqbUcJ6F1 z)V5>Ub0UX6X-~d8+k13;7#kJ#_KS`SIlMVOGn_eD`RB7j~H?GYj+l1O>++6& z3yHKcdz_U%?fCp4cHioKwlgCD_%hHs1U;bJhok7w?RhV}=tZbKfG^*AKWYE!r$&hL za^gvfQ}UwDoo!*6X?>8nGEIHbmi?iAKxfxLyb11QdN+8bUN84%_;Ve_A~c0Psw&?o zH`*srJvMH`U8((@R7Y*j7)ti?p1|787|xusMBlB<4?Wh~WOuuh8B3}6ck#IG_(QC` zZ;4)y$;jMG+{~#*;~%}w>GJEwVjRe3&#g2kugB}9G|zK2z^tt!9n^QO250C45O<#*W%BoLTSZXlep6if*xxwzO+S}Jx zOpx|UQ#qM^$+S6jyZ!1VSngcq86>k?uFY|4^{-c*!9fza?AzMRsYmClJpuBu>q($a zE}t$lCvUbt*9rCT@*DdZXumj*JZ`U%XE@JFq903RvpYr1si)}=X3f3z1aSBIWwf`a z99lZ$6vN(qp+e~Fd(X^KYx6zjFE5p8(16|cl-(R+PB~0}U8ZqL0e;`P+M0K?tm|O* z%U2y)2P4EeH{M#cC)zuH-+j9Q@5A%R|4a*zW^Cj}V%P8OvphBlJ)jW3|Bd7O`$unI zRsb3WvwG3-58P^hZVA#@`)vRGTSfN0l^J^T>}R#NkMg)gv!!!Y6)=a=l3vc0`8O&X z?KKpy#h%RL&|URv4=ht&^#xBcKizIQzl%p+HOXHHtLUjw_PGj9BqoA2}T`#XF1M$p0Q zU<~&8r8+_3~N(S2}by|*tj`9X{I%TUzN*(3{}N^)&h z^eeveQ<^=byW99wO%`+9yX-xbb^bZdQgu5|_wivdDQ_QV(@(Q_Kj$@T;*Q_nPajrS zZzomauf@CD@~N2cKr!rUQrBsQ4{popLp}M#O`z3yhi^^qA18O{TbwN>bu1URpX2;< zn%_P>l%IJd)y~S`ESfD@4uj5gElfuYvuE+Gv^;ms#J=Wh`kIlEz zV>}IAsPUv0IA%|1x*3GH?U1-e|A0t0zx(r_{_^jC{?~u~!|!kZ=fD5PFK#-|W9|#gGXYe_Fz4g7G=5>2Whxah(uhK(#_>6D7XEKDZGvnfz z-mcYCzDj4?1oi0C?R7AQVQYS@k zL_aT6)(5js#Z@$`6{|rCZlqXqe)}B@{op`Lf!D0gHkO0pTS?lhE36!oR8SI>e-&sA zif?&8uD{CqD(fqnTpj1tabB6>w~k58vnM(>)`hPT605^I=*3qK-w#gR7%#qx zFb~e$7!q`GxsblRjj-w!Iw;SVa5lo(b>;oAr4-)a{C?BS@_Y*@Rw|-hXg@~Qc(ThV z|92>LI$Y|c>}eYAJlXGA)`u^LTcP}k%i-R+?_pt9p0V`9!zr#R2!_>uI7#{nELX8# zG3M$;uU_=Z6W@*0uc6Ra^_@MDu@c68mB{$uq>WNezj95GJYU6)61@cEb$fVl-bMww zkW@%t2hG~Sy-s3Do-ffXrP3#HAh;M$Z|otyN}gGsZ6!q+3UnIZm)dVE!F+$RK76T= z!rB?jVM~RY?Dw#cBG0!fE`yW%9NwM+1ncz`RgNnAFu|!|D}~aEtAbx;eFc-N+q}BX zD=++pWql2NF2Zg0mod=S2#3`X`?uWJ=-}ZSqR7~<(ZR#_LlMzsWIXyhXxwY0;OLC` zV@YdhGQ&2?(#H1B_q=zL&bTYt=#8D+!?q{eAisy@Ksw_Nd?UO%t$-d}HRRS?zC*De zvG%RRT2%)w!`hA7`|nWLhu3$2CaxAy^{`3Hb$$j(nC5zhT*I9@bJWqU9YmdaPZ$-=SX@JbwR#zQ5Bsp*X)g7 z=k*7!8wzXR7`MJkvYF1eni4jSK^S%fnskA_XIUScgu%;1d05i{RD^^F1trUxj`JmG2rKIS)Hu1B>Cl&v>FDdM-gs&Gt89HzXG|x1P?i%Hs;m_BJ!J9K z8P`s{Sif^Y3|+Fa^gZlKR%hIIZ>$a{iah{}uG)T7WMx&@!0&-#Cq>`0un*21fIx02 z=s-ZGLx6YhI0voHw#q`@OL5wQE%=rC9(K~I z^Q|KC@#U+f5;t(UC43hz2vFx+CMTiwQeeY`4zKh*EBFy7tcZ0*!oc_H1pC(e8m>aW z3jGQySFd>`h*yI6Dnh?TKwr~s_8x2VN{O4Zy*Da+oemy;tc?ivwR1IRE6542QiP+< zcfyVGuW4T~t{kGfGCDeTudrbVBx28Z7s_f>j$cs9p)|H@@8`g}z= zM$_xh{@GH{)~JDNEE~M`J*WHi`L;T1tL$m6Lqg>AJ*;f$^Q|X_piXkGDJCb>T;qMhOV-{%K8c>SGRd}n^%VT4NLtR1AR@u*;|-l zH!_aFe2w5(9dUAxf9<5x+0Mw>DCvE*9Ld?rb2bws7n36Cm8^V?4w^IOq*YMn#MLfZ zAL#g=Q_|*q3ow?*ulAcuH*CMT_WpZVfH7xWZVbY#Wj1WN(P?e2+J4-My3^~urFz(M zqn6Hp58M3B8Q+ftj^s`Q87+*qS7Bd;eFc=O`@Fi(D_Q*Z#eR*9F2j%Z9YX?y_$m?e z;fLgqbYG>12j_FN*x13^57e*Q+ry8>vEE-uj^wKyi)7B1kOnytyVbBqtu2!C-@__^ zIo}Rw=iO-~<5DU`SD_!Z$|z}_3s%G4{y@sR?_m+foNqxrSXzmUhMgheZBXB_tPd{~ z5j5;{Mp%XsS2VfG`idb}FM0KnS3>wL3;i1UT!i23t#i>|BOX3{Kb0i^H9C0s7AmLA z*XZEk1vggvi_3oW?w&i-$vA(*wduoTF`eC}*=#z))xYw!bU&Saxt*8ONABn>%_miQ zSd12vd)z;oKHPoz&1jYuaq=*lJXGm1Jv5(})4S?pJ(vRPzvAZq*~qFH$32B41Dj0!#AA@MFdoXDd%4(~mlg)&*H$c^e6+vqyz$kD% z{vFq8%%{0k{AH4NS;r8Y}M^Zbljdm6dHJ8x5 zQ^6}uI*9J+23H-3skT}+-$FConhOwwHqDptDW0owH#*gA-NJ2zG4ec#wi8Z6BEbQ96j(I( z!8@hEIf8P8aWr3&&It%pkruWU*0cF*rWybngd!_|5~{sVDz5~e`K6`q?(^sbo-N25 zYHqZ_5x)qSAP3co#s;p54O$SPS1Zvd;+u`M8iU@|6>d=zx-T&w1i`iP^IU%k*pe3i zX~lqR7&Bo6x|6bmwghSLAfc(9R${q$4}qeYR?18%L||nzPRsU^!Njl(JkL^dNn!R3 zx{mP~XIj}n)gZe-vUv|nbE6M7VD6zaONH>Pu@JN;$hDONBnk2e`w6NW4-`*hvNh&e zi1w1QEEg{wPh>l*99Id8eiAQHH0prIy5J48YpKh4CiFlfC}={ccBVrxFcZU9+g=$M zhJ+;0cWGpINuyf?Q-^V6l;&>$iu5xOEQ1u}1Lg*SglMzjCT(+_kozT!U z>ouM)R5!;OxMrQ<9V9JQNG?7lZ~1N$Iv9YqdKkQdQMS**?6DXja@koDAAbjIvd!?@ z`-H^PS)q75&BHy1YA_KcnoLCVBs^JQDh({GGYBq%b^ujeSGv_t4HXysFbJ{jLGw;Y zgAQTRyGyJr%2_fJO4E%waA2sk3-~*9MrnaScpm;XzI!^R*?U+3 zwFb^gMHsF(u&B1D&t|ZhY}mW9FiEiNZam&e3pw$gDBt#h#U4CE116_K0X!S}$)*gz zZ~NdHbO&SCMz!4nA`rix5*n^~)H}-3s5%S}l7m+J&>0|f2J>tIrTDuu`39khAk-EF zV6@6IBv{7p?otzGh(Hz~-}cHw?TB3qAik4~mv|@((YVlo2fU?5gb1|IEuO&T0Ahi4 z?2498f;Nz2)RA4MphQ3vAa-b#7Vru1(Y)AaV3I9-DaOF&73;1;aflz92ub+1-;PhA zK%^9ap`GLM?AIhP!6;}+=YY^%3px0u)5X9UZnTk_XRyT}_#&$mzh|m@I7E+;F)#|- zYCqHkpNpk{86_T5{HdWTcid1Vl*45U`=wkOq{4I|tweR@x2rqm`449KZ))rdeVd%U>}K5zx){g8YAk7TzG_lJgctL`8j9%cdT!!uPUhXB?AD20f9 z3&_A_v<7H1jKA%uHJ%KcfUW``LMI3hS8Cu)fv>6?kLR|Z^!kRN%t$-ndx3px+fN_Dg0J$}v+toG*PX>}9 zg5xqEzN8sG0J88vYAGu4FYY{r)^R{JS^t=>0Jj=Zfeyl7Fhv3cd((Xj?j6qpa{_j^ zm!Qy!Sqy-*78gkb$*|d3fMEv@S`C|8st22)XDxyoQk|;7=SnzjTqpkm{V@y? zFuuSf0R&)$6<}G!r5ey4n5Ejl3UFxHt#iCZtjT39vBEHSk!*&r*XLM)j)S&wj3GMC z0!R-H9h9P@b^tCA9ZV@Mgia~|Yzh8@Q8NShkZGrr3QP@OV|viusF@rw-h)ha69bT7 zwu$z%%Y1Y(+BS+{ALKG-%ONk7>XHqdc_Dd>-&NC+x92dCOkSr7h3M?7!d>dUf z?;scKnt1Ycs|tXuvoelUnc;)j4n;g5X|oS2|Q6tD0A^AuMPIqZwN;Zp;@y zp?x~5csr-AMOxiZZl0Icv}n;$GeH2?Y9d6UrFC&I1D2_~@jxAz(Aict?c_Yu z?dDs2mKa?MBy#+AHrSUTRMc@K0>KKpaZveB~YrcaI7-}cL zR@=!Tdpj94pg@ z%wrqk3>e~|2`r#XP)Ighj*~flQ61nngd9FkE*&ku23G(=0&6dIbB}g_t)Sv2bVd#P z15!eD%o3rPCpF5}faY~x+q@c@2wQ@d+BU`B8uIEF$j2Uu!v zggevh?t_vY-*_(N=0?{*pkxQIL}7N1=qjgJS|dPg7x=}q&|k2ij=+P1bDRoS;5*z$ zNFf>?!~sWZDoo7~2XdHgWj98q^uTl2tMf}MAOHskS3p>~^5mQtxo;;m(r$fn`bd7pA*JOyQbiz(6lL`hwsFt!YlybkM9A#K2vG z;?T537I;m_9SRHt>coZTD$o*6fV2@azk&g-2k|KowM`sAHf;Qk1>far49Ep|1Y%XY z%zr_;U;>z1?pW6^K9mvQ5*j7wTrLA51Vx~rwA46=E^xhq?*ekeDKpvXT&Ea zsS4dGFQ8O&@(iv@cSOH^bt)`WLxtKK9p4w41eaXOxq(>d4ODeWW}V;wF>ruD9TR6S z1El8VvzMq4bOMYM*bG#aev=BJ^Uwq47i2c65I8f?1xA5UHv40ifYH2EKmv2Y3e|JG zfI&+>`a?CWtF;NvfiU031hu&n4&K-|01EUntlxfWlgThlp`f>lvkk4YV7wf|OU}Nlm22Yo zkHFDn_bi@j$?5D4J9M+A!7D3*b8$;v$KwVuaUG(;I4rM}m?lJ6qKRNu56$efoh|79 zXYS3CBUhSa%?+iL_&n@?V{Mg;iP?>R4+wOMfBU_L3IiVfF~$voMYu+DveQ^xD?!J~OqZ zOQGQSgt);0Y^R}>4ydj`HQ~2xr>O_@rt7oc&v(bN25rz6SoK?qep9lN&%xEqqFrBlD0w+6CZRI#9H5>n1 zO!A!lgG~;Eh;8F^x)b=6mNrvsJhu+-L9qI0A1J%=1qzs)^h8}l&+J zS9BEc<4w}<*%rnz3y$wMxZ`@A_=?ragSb{sn@3nkWW zF($FLN8iXEw9iC<_w2cB7Fhk$D9kFw%*<=?7@vJ&A|JL>r5+gLwNWtC7)%l?!>!jw zK@p|G)85SVIW?aZsM1a_`$j(Au^&+z+ip|<;m#|f_hCHn5YH79)czK5y-&vy=S0>E ze`aVr$_^}I+x>Z$KQHI3MSD;*9xadyd%ZcRZ28k_`*YxIX7t9q^!&(nuFeG9wkn4c znbEVztX7GWmt_TlYHu7Els{(S8!VbUeJwCR<508j<%4E0oz09qJC1-^&(O-!)bA{8 zYAO5fg?Wlk-x%dGJh2zbr#X#*s_lD1vZn8=b{N1RV9)YtccyF@w5|>R+;#bcY z&E82~vEdUO;6Yn-limC5kQ3h}O|l)Two?eihBA`k(7S3)qf%tH@z5 zhuuG0I4cTgVcz(f*Lw~0y7m;TY+y3wPmzMdZiGg(K1)|CG&DTiF={G6U{f=&xDViP z)@?^A_W44cqQ40;u(ed2m0^pyvQIxKm7NN#a62fTY2{#aUjZQeHJA+c0Yhw)3ep5y z<{pAV&TrYf$!f5>yzM*u^O0EoJA5GUf2-p&!=;?xU=ZD;Efd=utoRtu-bOi1lV<<# z*CJ@}LQ-YZYwq{xs6}|1}S=dW&Z5BWl7?9Id zY=2nH5$r_vgW>D-=odvWfgO{4FftCfYDJJe-04GU+oG%wU^ecP1X~^rz>5BEI3hvg ztK8Aj9V@msvcjp!-i+9`&E2hNinBM0ON<)o5DIF?imgPls=@w5bOs%ymh(8e04wW3 zEo^I}h&!E})sVJwnH6+L0<21@&{dGhy>H-sZ=XAb5-*(8dQ#0P)yfMh5`mlXD24t)%I8n4Y z4%6{D_Cu?kM$AGpBeF`%)V%Do+PHGEtEBPOv49J7TJ`LAfr**b2owN0kejJeV-c-W z9W<*{W%l{EHMYGHsIWqA@o#7wyKUoz>x|oOM?i-L!l@tk*ftO9qUk55J>_m+#x~x{ zc=!B0+lp;M9|@0f7Ap1G3#&y((ifu;IH;6b?~a67~@031M^$ zh}qew!S{IW6O684!a$rz_1ow?(YaHCFl7Dp!zUfEV?j-!9be~ogGR*-^*;6dC=crO zQtvMgdh^D(gATX-`r&$X5#07nGePru9`a`2u-}HJc~Fd}NHx*vt+pd*?4y&IQ@WY$q3Wd(mLywP&hiuYxsN zY=@UZ1BDwz*G^a~o#UODRI*l*!oxVv$9AvGIQWha`N|k(^n+vhb#a?3Q*Lkex>#0p zKP76-&I?)iV;4bE*v+^zxnX5oQ;%zJrceCfxj=ttK^lU8MfWgv>oH~!NN9CLaU5j} z5$9A7E*0+&vxr5PUH$7WZV1c=Yf58B;0pH>LH5yHDlcWuyg zY=W9%cjn(iK>6=5f`C|{gYibr_mqD^I<=FWmB6|Aw02fLc1EFzFz51YYm3c*w044=_J>Y?GWKYRN)J13zLaOC*u^7#dwR|yVkO+v3x?n6Fed{m>fv5Tim zpvJd0u*UbXAJ}oZQj4!B;>O?zA5K6U%$7D3BfE%$hA}jl#{cWQV|)OM4dDgF@*r^LO_4w*3o+weWXg}j4GY=g{pI(W&sc4o~GJ?v&X za8l^jV5`|V5e=Fh)r{VOjOK+`GBi%wx!{+wUnH1rJDMuEWlM8%NA19MVK-!}7X1=z z2^S`xjmABID2*H$+U;m0w>7+wajQ?4CI^NUPTYq;hS($_M`kt{fAY*R?d_Os`u7ceJ*q6vKQG(xY3kRE8J0i!0>oR?>@7q2DwuWd{fsZL(WP5NbytJ zoyz_r2%^l+tl(V1EeDJvQ+?kF+xy!&Ol!LvVCSkA%cx*%LK0C12%Ft2lAb3sY8 zb>rp71U!Q#D*ln*Xo|lo9@2Dy3cL_VkE7l_911C8#^mEchMlxc_Cn<0dw;bJ#=)%V z_}So1#S2~oMYHjd@xJ7&;BaYrqkzI0qp09svB4ccbto! z!*0?k!hAbvLW%qu%C8^Zzk^ev7qDyVQOMJ$+2U$tUp_wMaRf%T$hnBWiU9rZHPHWm zJ`kw9Eii$o%0PW;Alregq+p(5H|Py-(+r_lN*q0}y^X<zJ}GH2c6}h!KMV#CJ|MQacS8rl;U0 zSf|Rsn@+`nDLBhwz@^;+)J1={Pxs-U4q0tk{U%9SsN)#+FnlYqp+ms5+iG2%i^6Pc zO32deM-I2ZSjo)lA@=z{;x%dL)stUs^Qy|_e6lKi(*pmo znruPV@u%t$vrVKDfAkFdVR+92F?}xAqb#w9r+vEI>D&~Ly@9v2s~od$W=G*{QF2w- z3wAS@k@=v;4!+HB&nE71N>1X*RK2?3)p zCZo?@fzHj&*`{js4Hv_WuxsZ|<@~OLGCYxd$59`9MPgMniVjw(3kwT#k)<2z$72Qn z{BkZdURir8%xV1r(s2(NV#I+w1b1$AFDW(|cKWU2z&S5ekak-2@l;UaVx1cBvR*TM zFh3Ps*Tla`Y!B=NJIV<}c!n?a6UwdI^m!2SmAnR3!;b(ih7=G(ZHJ$=2xgbPb!@g# zIk2TP>ktP}b#ciTd-f8uDE^`?Yx@n+bG#}5GCf+n`6hSEgY=z>M;T1dL7%@N{OxG*Q;L&3S zX~!1N0&$Kr%lVIhyX%yM{=`&xft>GK8-t_SA;h-tkNQ0$bb2YHJ=ZlOC=spVONx6`3IG6(cYCqpo`gRged*$)sI`f~gD+fGvBnNb0B7lR?kW}Yf$ z@&%^h<966QBXC7qL~tvSn*?vvb`bVXTf?sPL5zeZ7=X)}(RM+DF%rzh>Bl=GAc}>4 zQQIYr8MEDxCE3>&k^$IQ9gt){w_~3pcE_dKb_*lpbVg2`)bIq-O7;8IFla{{4wY&< z_s}+FguMVYexnN`MkYo+Ax``vC6wSX-)uIj+r{w9rAuEQy%U$|^z2rJs-3AJMI&`w z@+qCp9B@Z_z5($LW+(u!SHr@Hi{C5IS{;LBh-x(`Z~FPsrc`F&!Hev-Z$jzfbk3of znfMf-E=J4N{TCNkYfH;26bFI}GrtN;tot<9x^$j8s+Ar*Z)?}uVQS9cAFC*}q6&?0 z_i+XUH3n44hh(O~lm@Fj)n(D#ipMc+a9w6L#E!;@xLn)=W^3RQKDI{sb-IroBQmuG_Rdv1t3o)+ zvIDTWR2WFLXewS80bL4)4CRlrcI>W*KF>*4u5M^C3u4m=mauIA87Aakx@5fV@G$@I7ml+DW4MArR1!KT&vX@!F;5bAay;k$DQ^mc^ z7aX(wVYWTZ8>xidsKQDpMS|Y$F?CNvnY;&LY-gmSH%+v z;0W{@W=6CKi67ZJXB)*OsoqWEO^0*Q@lDy z7WydFC2nx5I$8!aJf+HXRW*MY?5)fgp-enUY>NO0XqRCO*Hk3#5sk}W1Im&OG&gmb ze3sNqXAH+C#yk=$l-rqEEwvGORIeN0&2x-`Yh=gotsUzKm)d0hcMubJdf1XwiZn;d zfN%=z=i|+H_+YNkPBhRJR)3M#>V~L+pzN0@RAwAe6a2kFdi^>a2wYja$@Y za7s8|cN*C=#>~`>PP4A4=BM}E;ylZ z0`Pwxfpna=PWk*h&NsHN0L5wMn2bzH(~(Mv{uyGD#O*Puz|93}NMDzR!IZfPo?IiQ zI`&i-CK6O1p>KswF=YO53LfAixHlbBDR0Hmgn>}7`hph?w+E)O-Pq<^BWJfYY>cw| zrQE%4@ZsbGNKpudAPHt2#AVGCYj9;t61)7lhBh_00!oc>ooc$iG!)J&&=c9L%@Gj# zz=x``BxW4W;&p=NmYDnv$zqZ?4-SAWnGEbNeCi(tHXIOa)?2uZdt_M|W<^$i28)_v zFXjW|N?h#7x3XQrtQLfKN|N^sjBkU&7TR_Y#4*~UJJVtdHh2YpS}zE!Yc4BFoWr|6 zSQX(8#Q4m1>>Z?T+ZTbekF!&l$BDq&RQZH-go!6d(2iRpRrG#w)a}vJT3S6=VxU%W zN2AZbzC;C$T+D{g?E}1X+%dfI1R(Y$XRP%*wmY^C)Z8*OYX2MxDu2l;$XZ{q)x;Nk z(;W-N1d~AV)1Kz8(|SPqOG9EZZEL0fAJ`i5?Ij-TXLAQ)j2Jp`*7qRTA^WkFXN$uz zV6+zrrTAmz!*PpO9)(a2(rIOSja>U%^pP$vKsIHP6&QTyP)kZ_~5AVgPWI1Ip@5#~Z^)5FzkZv!?nbKjB12I0VbM(;B zZnGeMeSafMWjTNhHRRc+z4&;Y|EP}tD$sp!pv@i+n-f=ww>UnFlwyxnK6uYgA>}t4 zbEWJ3*eRq~u8Hx>@GtjqL6x&HeC|?4clbL-NlnDIJf>T ziGkLw%B#@1>FW`e;Q8at8?e|?zm1Z^hsEv6XcdSuP`T0hB z$A|3)^~^&7U)KOx_8EVPV&h^n$~Y@po>C$xLqm z^~6;$gYskxdGbMo$Z||Vx}z0P^KhXpj7VC{l0+Y2Y?tF5C>uH}j52S_o2qE2zwKIQ z4JP6&n-Nkts-_KCId<%RRx7Yj7foVp=14K<-0WLK#juV7lKR8NEA(n`y{qKPKRkr9 z{i*BcfOd{0<_-m0q7qUnKo52n++>q;Ozg&E38*_*LXFV`&dQ?Fm2XV~^D!h5_2;@d z^HY}*MYx|JJtai>`Zr>fNV{h*ObTPJa-@jxUE}=N{HrP7S%1md+c&45BTmrCQ4`_L zhkJ%Xmf>6WR7RFu=?C-o!F|`5bphm?-2`hu;UB?xr z06${dj0v~TrBKSCtKZF^G@d^daUYY{&;tRoadLZq%gt?QV`SLme{XT*U@sBABU>!W zhT7SobZ-BK6e6muuOhfa_Ws~A;sb=K*(Sz|ey3o1SiMDIImh^;Q6e26CdF*fU&de* z^cf-*$NsZb6p_J>`u43JrG~~LiE;1eKJosY^S*4lY$oz6oSx*?(lz1mB~CpLz4&#u z(K0nQk{)g<6IZ(`nyjl(rNT-~R8kyww&!OEfH`QfEDydm9eqvONy!CMNa#DS@D?4EyvjBT?c&k;M>)P_gd5?d$!d-!r)Rud~8 zkcCbrM(0}_dpTv|uOIIH@e{;B-rmOa%&^!)6HByR2O#dcfb(l#G`Ud;*6^q?orSnn z3fN?rJz##4LEWE;6~6D9S%%?coAABt*)b0CeX?j`2g5CxNTPaU2l6QTes~aF5^sbc zDPWkcy2}lkVtR-Y*e9kfcEvMHfC+hk07g~X`$9E5L?G@Mt&H@ zMxmAboav__s~Y(3-L#~hs6U@qgZ20v*_yS?MzzxdqPF{%iE;>LlRVd{PqK$-V>x_i9 z=bKvP+?_7Dt<0@HLo$S#PNV=W1Plyv?4z*ca+s0BivkxXy|Tha0mj8(w(bL$GcLEK zCMtU>9*O4(BqZJ-H`e0ez|n#m&{9lUumY&c;)v-Jg(AMmSjsp{ z@9XM1cz%-Eat^NXR1t<7BT`mRso?Y@F#-XV3q=MtaUEmpzB!4ZTpMpU6PT?4Zv%kL2gec&OD|c&=w&GYpn9X~pmN9URmYhsM) zwn<_w+kSI3#1fx#j2%x#_flxsOEXMOIrI{A%H)ykux^s|1`eACUHSfH*)PySLr!|k zfS6}k$;MI$l{oeaGyHtd@wd=sGXCt>%Mp2E<&)MkpxI(6?uQn$AW4CBl`Hi}0wEVM zcp|@a~p8~N75lLt@C?&u?Kv%JEL3!+dn%(Ay-tt zs-PHMxNiy6lKp3Oe0sK{O?{>@pX=&y2091IiP@o4VXn-X+Ha{{RaL%;(&O<1B+o8NYeVGu{MlNHnTx*sBS<`gK`NYU0>5q0u0 zWmHN^mPq;foJxGIPWGHxK+}M+ENasB?XQoY9&p^=rGrRF$#)cjh)RVOU+0ANgMTU<}b>UVxE8O0MA|9O>2Dg)q9rM@ac2CW80}oYx2KnES|JE5T@qUe-xywy&a; z1(|m2qtFZx?J{=|99854rR;$3ms}l^tZKqL1XWtsc(eWb;la7FMgwVMyy$uZ#_3HY z5MF-2s-dwCE;W7wvuYo9h3Z8rOg!ucreyVwmwjDB2k*g`oY{j_MXslT0F%J{Y@-Pu z9zc5Ja67s%7>XLr)ob97Zik4bDygvJJD83nStNM}#D+MPLeZTd%@Ix+h+|gViGg)e z!u&tXm6%qDxigAWrjc81Mhh%(2b~zVF|I@HyCTIPNu3LTQEs|PrFTwvcsPBM8d7$x z^A3XH9wKqK$L*F@fJ8X#!A|ozM#Z9&sw==E*z}^stNCzdKQB_k9whu5r`fYW_TcLk`=k zuSPE&@t&1MU6}@9y-Ym|;^td6?gRjV9OBW>GI}bo4#$l`_?}Y%p-|*d{90o!#?V+$ zhAV{_Tg`iNITAAk1tB`TSEYB2niWEQjKa4Jb*|m7EDN*^*K+&%Z>(U5O0~bS1wxG^ z$aut8;Bh=&cvKg)#2OZ+%)Us1&eMI^VC@>^FdqlU9P#3khqc~Rq>l%8M!>)bnq@hq zs52EU(5P~ZaXS2w)DD)BJtzRWSACOK8W}N_7vvUGpKIt~@@U*PI^Y`X9K(V4eP3yQ z%{0S^2MI;*m!CZZUh;845~j>%Pk4E5%VtDQN+Z-#NxFVnNd*sDvkcoZ+QZgIWiKbQ z%f%-C1VfH_F)KE>0!8#e#FT@=TPxj_Z&dg$0Nh?aeUY~-s6z5y2KPAfo#2i}6_b?r z@WtDykpJQlB5sO?0UXYI3%N?ZVNlA^+TkjGoa-l}-}wh={Qo;7sQxW`AUtUH$>ghF z?17X~I^}1W-_rOlpW-Co;;oFwkssTLGba9~b{$2^A|M6Fcrer8!DAKd20Ns^kvYVM zu-(NO{d7e;F7(uu+-!-+4dB9ur4L?Eh)tYML63hphb40T zwiK;h^*{+94o$m;eW34RoNh!dah3!LN6I27vrNlf%GlMFaxkW#u(ZjjBF=}6pZI|tpx_ro0?+hh{J>OjF{nap1GUorq{ZTA-scX zzJ_-XpAYnKbn*DXH6qt*xiqvHQm2-<^Gbw79p|)_9|U`xF(jr^JGci6kylOnemWBO zzyQdzKcEsVtboDDaBp%)wI!Er+Bn-zBBT=Id44?@sSp=*IzX8AJ|E>Cw_f3J4y9DZ zGYN8W#w}h3NN##W6#~CN+)q8MhajKoYrx1DAz8(STR3+Fjmi0&tt9VwIE(6-gL;Qy z1WcAKQ_JeEmlFdhdPdved}U3k;@C|^7S6ykYs;z6Q)0|PWSWD7v;>rcGItDvOPIpES&?!IYR2StL(cGj zWVIZwKpeL#jEl&6SV#RGPQ_nt=;7@aq1eI;e4n$D5B9Z4b?f?N**B4{*)c6n@h#W+ z9y4Q4;Td1zhw~AaS5exCj#kR1+lBL^lfK(=l|e*K-&wJGW#nqjHwUZq^N%D z6W->0K|52FeH(@;>_lhg?6KX}q74U3lt|}Yy zGOmg2BB6MKn=d`}>i(iA-h3XdRFpxo5eN9ZiM$y9aC~BPlfz33e`w}ht@th}w-(wy zQoj9lLflfNAoUKuA8-nboumAcw(N z2kG%&#CN&@&)29wiwu#O2DvBa=fd?#21yYNA)JZ+xr$u|1?v@?em`1EQ5rM1$_G}Y zz`+JiQ2FDCgcE@Lk!UIxeh_V@X7KuZW~}L`f>KOA6&Maz48D7g6{xH;DGR+qoH|Si zwCOp#1C+-yPt1nVneAQ6uu+&amc<)xz-Fq{o&yX>}iMTei6hmuh4cNNFXl; z-u{*Xu-I=s^rC^oBGn7Bxfp%$GV|Ue=W#D-G*I|2T@xXMmN(?ddpo9t%+W9O1jP+X zR=x?9=t>cC$RIrJ-yNxx=Ow?7)FVnQo)+UBlmdh~0%P1m_Xq9d_$!6;)xsy@E#i{< zR_`UedXRN3&ACd5BxI8ZCixf?4N=W5OC?wzxM)BT>kP?DsLDUqtiQ;L z>b7h1mG-%S&t^h)3-3o%s5oi@7_AHM9UTfX1`&pdL1co_@t(U;nMfW66zg3iMe=**&n{ER)X~zx1IHhmK#IN z@!y(+{SVGS^Vkf?nLF3_Bn%*!;S8FjFEJUF$#az}$yi?q(StxWSf3@gZ`&Ga3~(v$ z?4E%Is!V(gsw1>r!8A<+@0+_km5aLtUieIlgLiGp;0UM0Er{3^iqbCXnJGv zbrE<}x2%q#DEp{E1TS)rj6QIVas z0T-6|un8vUfHTMThIHB^%@n$r>{6J^`?#Y3H<7B~yORt%q02B}jhs?NPC_HHb>ow& zBzM(EUs@DpP& z=p$W%W=OR!J~S;b?6m%aDG-bcmcmqmL^z05I0)$p`|PsGgeGxKq4DkEJwNfLKIFrh zX}*ZJjBrzP1Ktt7I&gdDiGU3)7Q)L_m8lVVB3$->t~Nv3$s1xzLjp7(Dh^SqUX@h3 zws*A!yIte5B@;atLSazZG5yW2sCU2*)E!r}S=i#p!m6PS2O?m!3K%>i{e^NJo@R1EQ2%AD0_MRSAC3RXt&hhQ#iwxIUMG zOC*5Du)6Tvv!6pbWT6Jbz!`cJt6&wmmrIK#ZsK|`#d4T%KXC$eY>MzwQg6z!Q1a|o z0R7C!BD~y&MyKS01rWvEvYLFqfGFIhW>#$b6G1NnF^^gQ70KZOoUVe8T^+6yIfCOZ zKuA$==}Wx{&|L`j36u2+7UbzEpXgA8p;_k;x~9`eN2osV)r@Q4rceQuN9XrVWVd9q zz4udueSM+-{V1&cB}bq#)otNCoZo$&JrNG%s(_>PW<_Jei9%3l?A!Tu zM`#NS9T>Mdf7fi>69-<>%8+@6n?5lc$hR-Aw8FyxKo9&GS9!V< zCiU*?159)j5{|!o-o1l1%Wj&Z>IOv2u4JzyWb!v3PvOoK59!0G!Tuy?GjmqnR1Csk zak%96I}SzW6j}|CF7Jbhu-F><NUL#kY& zR$5F6sVOp`7H-E56-`kNIg31vW=ZpB?`e^(n?J+sDNAcbU&XLYLFkb^GPxqkK~gas zk{O7SPa0W_ro=FYsOh^T0|lHnu!nbmfSft2PiPV6IR-vgwKJPlE7A1&r{e|*_=PiJ zAZ;4W>8uNf5HdB#w8i>@Bx7qj4{yn*5B5M z<8@xH{pyyMWL76?3G=>Bz<5fZHt)%yBN4Lv!=ITtaUh~x|JtAOILQE0eHYwkd*O*3 zq1KKUaAG%1GWu0cp+Q7+)r0aoG%8Eyj9pPy)02PkH?(zu0gcpLzNAn=)1;SmyZ#mg z>MN6n2<>s_A>sbKcQL57H>A80Ta)ZF4wb<}#~RKRw$_e*$1&w9o8W?NgR|GL-E-2J zgQT#Ovd^l#&Fj$Y_9NgPU0IwjJ06BE#0n9+?TRSK;7nT6lSV(4IA)76_dAeRGZ1Dt zE!@(e+!m~&!wMfQe|@_kLwsVZ9QkoU)?|n6c3)Ga9~_lI|2aAOC1y?0maf-d08to6 zT&mIh${%(=W%g52(PPJzNuByfK+0lokOCbk{IN0ss78!4QxKQHm7N%I5+E z^yP;)Ie<`(s|G-!HHJ$7m>O2=bY2_Q4?2w!WJyA}lX`Oh5mPHEn(Pm`6L3)oyEO$6 zTtXAQWPO}tJ_PSmeh*BuyuoK826=KpopMIFZ2tjqx{s~!>9z0ILA8Oy9C*N3Swoz#FZQnw?%4BBDXc1x(v@@DzvM;9VNJkRlEh^n5s(P>jWHc1 zjAL`K?b((zAbM+MOhcN^y(np$s%B`7y0?r77%oA{A7{1@Rlg!UPs3mPf- z5#A}wJw*2yW`Ya3`Phcdvm)m*_SK^h{8;GHZOqr=UidxL{mi za63p{qZ^O54kOOW4>vwr-aTVb#1@t!brmlqJazGfoqsfjhNay#6UP|v?Fhu=rZ}Zz zyg?uw;ZDbxYX0h;Vf#4*s`*_t0h-1XPf_5WO$kI2EDy&bG}R@5Mh1;xp3Z!#q;~HC z%ny;4@3;w)Ij=Nv4GzwMMJ}`!`!Y)tR*6S0=;8{yAgVu>au_uiy?x3327gOMCcK%~ z`3Vh`hQBjZ2;)LfJx+R}41A$6#My85aL2w(|N9^v68()KyHo!W5+0~CtzHj#7-Y

    }`CGG6Nn>8~W$^L3~dO+t=vJM0kCz-Px3C{V@4pRcJH$BXSk z^8bk+fk3dQJ+7Hu=DLh#Q9Ax}PoVafJb`4y-^%gwYwv9heGn_HYrg#2)+!U$iDlv} zZ?lhMX11A+GK&4!*9zr2`KBUU`JMvy25E2vS6!aKcJ%Xlde%Z!!gXSk3R4g)ffoQq ziF|}E@|sXYUwjzzfiQ@?6UIR}m6N*&Eacg_5RMrFZs%BX4cK)78`bS=oA+I=SZ?0< zc@sQvot4d0aXSJIh}kIJ*)9B(of7VI8VA{5Fbne44Pxq>7%K*i93B|wl>-}w7RW$r zhRY*ICogMg=TxI}gV`Vgh(%*BEHg*c0)Pe`eYuYQ(5G>`hO8KK zMtgtv2@D8P(oo(yG7M*#NU4JP6CKkvsZV%db6`cb$dnuxMNJLy91oKLLShaVR!l=2 zYrs7pc4lQaRlL)t@0zMxfO4p-t`HCKf|1CThm@u9H&~ZfmAvIsn$? z8G?-gSQc^@tRMttt}tE1{*Nz&MUtCYk>~>J77AmC;2_b%Y8!V;#0oQEPC_WaA8irU zFJrWgIO?@q*!GO2Lp>7V*KQ%f4KJqp&ev{H<*{3*JK23$1L1@M4PrcUlJD}vx53}>Dzev&R_)4A#-zJNktISl@`io2-)#+X|Bqz6 z{zjSBgy(STloSObEP;a_g>noGYbvYP_hgD60G$W>>Y~#~S8$2qAJ6Vc)reR}gnGSl zgwjT~N0dA$Z%Tjcl|wJii{XpBHR!`^Q_GreQmy4J67p-iZy9 zb1cf~A@(FrAL)i~s268C5wXDv4n68;8o&S8FzkPD2tpAfPg9a4-Xurbb@+LBLe%xe z@Pq6DX8(38>s#wV|BfL%7Bcl)WU6ffXxFhmPvQO2ltQY5xWJvcW~+wkUbRJxCVjL$>7Bh~z}FwE>Z+(E@eB)lrjO|5wVZUrj!J z?&-1>mr8<3*fV}UhQrT@BW<&^5cOECV-EJWQHqRr(0FECGA(mjH~IDiR5R5{v2t|4_nl1tYcUwKJ~)NwQ5ceKg`$6DB|PvNUK2o z$7O1C5sD}p!lcPda-E{q>_+t;xgM}f%aR4$484IBvOFC)caiMMED6)R?aP*2WXcT* z7yJ4n7rG(+mDwV3X)iW3x-#G(6>IOjRE8R4l1PU8&Pyd}9nQBLbw1NE=05qE4+jPD z_aU}MlKc>_6oC0EsHZ4ca=TB@00tCfKc@sX;$T)yxj8K;zW7VL&UHA`?An3`ogFuo zN}e8%#39_DnBE&*T9E}Hf_O46WwTl3JMNxFyrmOE-W`z3s9{ccMh(k2srKX#Ho zxXNg{Lp$^GRU&<%yQ@+S4la2{9;@zSJSFPc!oCF~5K}FJ@Wa24RuKD2H%)RKm+HJn zymo+-lwT#?6s-?$`EbinP$e9QlT_*h@`5v7J-qPWX|{e?Mu-l&l3c@l^J7t;tJ>Ps zR>Z0OXgY*{QWq)B`A*3B8s*2nhLvQvE8KFY7$suI1o`=-_lC{UR}-p}6fM(=BkyvB zVAeYea2*NVi17wz;fmW1N{!YwJd{2rg8zIN*8h?*5QuE!f6;`zhhd zx6+#*SWyETw&;g|^Mj_o>Yg#g0^y^x35va_4ZX_x51*VfXlY^p*C2EIx z_@js`k0fjcJdU?9?Gc?$P%@D~so1p*!Dm)V{ShqOoUPvFi_7OU2VIr|mSq0w6Aum$ zGH^42U_rqKq)^&Q3IiCTc9}Qe=vQx6O!QZd36RaR67p2TSYR7d`*@d)6pS-X^D^gesmS4JY!ln0&I}e3?U=w z37du0&eE+TfHVB8*g4XpdS^_7HOhb3;?w)aQ|!6&$t1I zj=AypmXrGNUyq=c_-AU(8O=CA9l1@c+;#<&xaNV&l=Xzo6{t1@V|hWnF@r-A=)*Kz zMk*CN-ymY~I+n_)Zo~K-XGNyPQ$?6XkeEs9A&P7=45qGCWEkozANcZhW!wT z;sVO=p*B5f3JLyFbhTo$a&aK~=SP~{%ywKU{j;(tZt!-UDNREJyAppi?`oIE`h~Hk zv)K{@MqV%I<^BidoWV#9mm+6H+jj+_P0nJ$sGflXX+G11>f96@_c##Nx(vl7p#VvR zepUE1%Ah2K>hKY;?FO-SHew}uw$sRzfawsRlc=U0*6G{!x?-IZ=K#DtOpa%{Igm=# zqT+=M5$*#@YOvZY9LL!WQIX@oUEJydQhAfC0SSxa3$|a0S5LN+=Q$!rov;~34WAC0 zf1-SXM2J)8R17rk2H~xN9T~@kl{xv>5AVrgR4}DrJ7ebKh!H_TwyuiL289VuSP(0w zruf53U|+#(bGSojQcJS8Qzv?L zd+4z$l?JEC<`Nubf@`48_zZF=ymf2l5+5&y5>C}OR0HrsON?2(bCkJlESJl*8S;ZH z_=J@aQs}R@_Ix_=Hc;XocO@83Um_Xs-v@wDyvF|dCsQ8Cn6O(Zl!I|iCkIS<5iu!< zI?FmrRJsK09n)iJIUq!12EYsMFihH&fa1f3ah#6*#YKTmA!owVWG4|$HUkP2%FGJy zX*rgrc80w)#$k9dh{q{i{*)4C$x6((G}V zKt{)^`j(oQ5K~QMwF2*U2+VNYcbt zt^u3=;3;XhS2>-N_=|8!EL?*&?3mJlWH1_OIY3$T&>8KewaLEM086jqUE%Y^MxZ19 zSHtt_rSDkjxC*ZFTmvCYAS+%mW-*~NKz>+VqMef6Tkau|OLC(xJN$^KD>v54iovSk zfB^>w=r2q$0N|iHaAx^dO*ssNsl3ekL_U+FJy)p3q%ltnOMBF|n9E_w#0Tu~I$<>1 zST=DWQZ!SUAahSq@7iXVF&U$+zx8fr8CmTR*F{(u)6j$x$xjS`#f;am9|a$8$oYyQ zr@>2gTyg63TIdCP%yIE?wnA`Ku@lc;O@=DTYN(FLDCQj`XwYiTlDCod})~&bMkvaF}{hzhJ*#{ z5mRs3?t#EQb0tlY8p_f*D7I#$cDy`66zZ=g&zk_Ev#< zqjLCpZp2R_GUflw7fDBW5)K?$2cQ2dP{_KD-<%KA3Z~*OZ{8v9NqwRt=wc< zFSkV_eL3?brSd^B31@94MckR=>34&UFpwp~&bgC}b)iAF*SCgm2an6%)E1Wo!Z}5) znNfm*K7oPUG}$4=%0A_iuPv&{kh){t$R%TP=`yV`l7WR>Zj3}4)H56N#nkbac&cU}r zOlENMi@TR#YG(`7|MRL2*P~^EWTd}5cXmXO*ChT55Bdc&;dp}ixqpdcZt%d z`__}>-BJM#Vj#efB5lz#uBeJ}7mNz@A2nn&lP#hu9?vHbM}3X6MquCe+Hjr_`0o2A z|Cha(BGRgCTb9eEChCOeEbU=<@?3d%GF0dSvdj&KZ6b^55;E|CA_0iMkQ7Xpki+2Viw z@HCZjv|x~O?iBa)Lp(1_7Y`R0WUrXGYkfd1&vmh|ctMnZ-Cy<1$p)T{30UQ-<#~~GZDmX!|-&qUkXjg_uc3x7~ z3{Ud=RzpM&_5cBa^qx5QSlkn6&7Bo7;$Lc0yRJAj!T<6-6B9SN zB*~*Y#yY$WOoCTL!fF*|^j;$-J)oQvTsUTX^N9A6Q48m$1K+lYc`L{<^TO|IQ}M^R z490>Kb%(F>>=kyYue5;o0G-)_SPS{7fjagZv^F$5GRXV%2|_!KePs%zuQDnJe21rU z!MqbPivX!7cY)|Utl!$%4{GETYnBgo2>)|{2 zs%6F=$Xxs=%PkC(jT#1HM{L=z#ZeV&_pN#Q`uL7@qb$jsx&G^iXUR@cuvVpSxQTDj zq9!2>!s%KVn(0y3o6-P8*NM7ax1u8=@M!ta2KuflM55(qsx_1$t6cM#6hhpY^8`hN z{SQJH^ld4gAaqoe?wgd@7!kuu+Q*bAs1sON^5aKlrGO=*C_6?Qyn!vro}f9Aa!?L| zxUI*ca3qb=(i7UzWJS*?dtXZ`*+HEtq+?=8F#7PoUw;FNuqTX#W21vf)DX;G(CR10 zE5toTK}3%cdT#QP=r?JW6*ZabEa)WgE(?$IE~*B|wBrZ|nui8Df@@ow z3T!aM`EcVf>t!0$&qLfIzhJCm9fY&Hs#^bD6%yq$1EkuB-YH62Sl@JcBq<-&{XAv; z28TX;dF51&*r8_^T}}ilV2E3Gb&fz33hJQ{b_aqHX_6fll)WsqG|P6ZAT(o2+q!P{ zHEuad5E76a$C6JuT5xRo+!g|lEq<12pc@m*WKzR)Fwi94P# zY(0bKF~sv&`hjHUAe%D{o2n9ur?&#Ypsc70=?I=8ug-w`8LY%ihqeXzuW_NeBF}d5 zi6bUg?z~vCc$-_rVb2rju!5MR?XC*`ht=uPgz$n` zLo1wcm(r*(jN9SljhzrQbU@1R|5%xRC)2zK41*zMlL4ed=FDmm&tf>=5Df++RGymi zjxbZwuF(|K;fNc?(MkRZBYgh9ymMzMi;=aMh(wkMxeV;-Es8M~0tz>lX;A8?>`7$_ zFoS1|P7NdeYTv#5kspoGDFcQRE%9s@s21#VIgQ7gAC2LJyZdOy@oX2^0;@Tc9o*-3 zQHsWkTYB?I$RLgKEyw;L$3X7QH<)1tK&0#%UX!!9acjbutFFrz`oUt^UPC6t_HR?W z6MHIMqI)kbm%hW6-h&2-lP+KP6p#^`g-JdQ64e-az`CgE6kqq5qSSjE2{VggkqIQo zjt3Cc+Frq;^b~M))5DvYTsM&KBYeWP3Yn(na4{>PsPVJTU)3RBo+(Dkj7^zlh_2Az zdgZHj`A&|oThpeJ+G995!Zq+h5*#u<;;Aw3Qdma4g!d&hJ0_v%QU}94d+GNzY+B5k zq1%N?5T!3u$jAQ@?FCh(a;3w6AFS3Yf|LH?QW@ZosDFR`uq@A2&9^v=5Z6KBrc&c} zGo>Av^2YeEV2^XqZ$@t*_7L0Pvjvbt31&B^E9E{?nJGnO#2qM6BK;M$B4Kf!>HGCP zbDT2MF~2&8LB-mGNfvL%CiSH~6Jk6&36QYP&y6bJdvPR|t+(i(V?g6Cxde$b1&*mU z{) z=29&~%EXDWkZBitT95d@ueadb$A)CN2vTifRZ5Vcc+&G4#XzP&DBZ%prt*83 zWx2~Bj{F3il9?1SnpH~Zjw;8a88kYf6+#hTgHbDrEwQKF?GVgNg&K_6jTMft5TQ&2^(| z6%lF=i+Ny*k5YvOAnyG&&N~WelgvBh_gJ7}J+fB}#J{Y$^RJ{I##kn|a3j7|chOA_*Et)0H$Fzl%ju6k%nMpt$eof$TXi}-YN7z4Lp$N4y9xGco z!#JcoVRBG3s3L1C1=*5nh{Q5%S^JHItw|lh+LzD`z*SqndfkMp#qp!6;U-N0aFcIP zm>Vx!rcf*4js~L}s)7{qcCY`)iq5pcU>a~OURwprfHNP((%VqA5n0S&v(aL|MHHEl z8SnUEqJGk%r|2X_EY6T%Pllj=423H@G56$(-VPX*4aRs^=-%;(af#y&KOS(*@`95H z)5OE$4JVO=zQ`wjY39Fvo5NCO6-<4$tE7RU=#uWR;-}vOH<;+5rEYQ-F{BOIgM`6z zmbvnHg>K>0w2)ET0tf~#&JvP#+<%k_si?NF!u7Fpr&XTZOmG~BxXDixyK;UM5_6g0 z=)&$e#0C1`bIfC?A9HwAocy`RX@@x#SqtULxw^v0C|PPuf4Z1UbETJwHuwc`Wc{X| zH%&Jqa?7DUs9_A!AL=;|g3zt@@;qX=AF=Vjepq(CsHZfQ4`rAWh%RVZ$ zf9?}B{*q4+#J?mo9>=B^w%rtLKE=L!0o#RHQxX9_y=*^VwORK;#>A@Ml<}gXX5kvk zNzBKgO{m9=L#V2!9W+xZLQ-(ABp{qV#0eW@X&k0;@JIlYHnPj&^a(^cj4&8$#MXyO zH3JV*%SKo;ldGbPvJnZrBpM8c5zcEvXo|kU-mh6hsHM2!LhE#6>&KC%VAAGq+&Yvb zrhEKLNsAwkZm?&_+k|wOpw|xOG=yG76jQNM_yswl#G5G08a_vT7ruF z)0r)kY9kwCS3fb>WSBw5)+H29@rCUFyV(HP&ycDy!+;HI?8Htx{mlW2kttAx2_9u$ z5!I0h$PylDSpq2tJib54w~mgUc~WRZaA~148R0#Wh1M~AEJ3aOSZ3!T;`TF@WqAcb z4BHoaxDsC*e(6%$M;H?gxj)GhYTlR>xf0+5-mgPhR<3m3KCJzG2fW-RHAH^64kocr zQy39+7JxTq4V(@TH-A&hU^+v|Sm0E-n1xvYxg{e~#}K1urX57pM?qS)d`EEc4kJt3 zvAd8{+$VlFjI$jYYxIH}P5tv6j8QNa>ir9G(Aqm@4p)-(>=qQC7-`|C-rkhxcNpWx zR`GrAfqh9NYdfR@Bm%V=@=E(13Ziocj$OSD(CUmrTjOsx4CM)`dCgLhc`^}Y0{pu~ z^&h5N44WA4*8U{k;LvP!%VfSEeF}$cdO#}?3MUbNsa+!VH;S*!uVwLFZkqTPOd-eH zjX+^Or0gyyFZdiQNIwV*0CDD1$e{BkKw7@TD<ggy$Vi6AurE)udqM-~1(bOPuM=6cj#GRiNnq_xkr?`1AIy)PEk zkk3C+7dPCVJ&7#I4cH4~K)upWH*kBz|o2Xi1EEyK$}Huq};CRH)RsiNlpg=yQe!HIzf$*{>c zweo+Y{h{*#X06}iQW@N0a0ZI!Te--%e%+`hfAaaS5+4Sp&kL9y~=Q164WH@Z) zA;OHS&Wpf*SECKUx6_7j3^SO8lI#%ER{920EuxT)RrB}%y7b@2)7H{xi#+|?v&FBVYmKyx!Li=t&nh7NDKb2DAJUHi9G5euedpp z_2=3+?4yS0homa_h%am2H?RPVTvw)B$}QgRcO-T)kIQb=j*%OaL&zu&zKOSEO)(pz z%izXQNb6#^kHE5Yb{ng(9>X9>DiR#s+=3(6v35eAoIFMXIuT>kB8=$Q4=ee2gCHnI z6YDW*tKmWgzZiXa|2b=7%0n(OW(+15bTf(;P!YF%Jj82+!U*IdiItQAHu%!6EON?N zn@aM0!-XY5J+tFTy5@?`DVDt4fsK_>@J~8gw@I?oc=LF$gK$Q+td6UOI}zB5SsuV0 zwc4N3QgKESt?STUU%5J)_7^e=@w0C_^w+@jyIGJ3h6w^9QNcrBHw$pn>!0f{9PI}F zE68b%AB%$Pc$uw%-oJkMRK4Mf_eE?J-ouJRfkJFYz&VV;U&t7sK8n2wZVwaD7PlO{ z&`w#P=9qIV&I5&2-YE`4JK@#Oga)GxjQ=X&Q}@i2{bI+c$hj2yxx|KkeLWriZH*jouOlU~Sqe>*&AEikS1GlO1%>xT zh$;xreibMU z2zDBr;zR~V1O(_T13+R@9IQ6dQ!x;3!D0qU$spd4QfByAjKuTFIauM)p9;eeF9;YT zH4?Kix%a6_0se{4>**(gmrPczB|~c0ZKNPW1%}wc)v=K;y|H1j1+M)BlDA(QQq_7V);%GB#Bc+ z8oU@fA&#>D*@5f+z*xrP7sD{fA34%e02mWS%+dIsy+M|?fyq^b$SP(dXiPORTN%`g zNKh2qjYR-q5dQIPg680H+m-QM({)@5M6ex^-}Y+e^DR6>I_4x@!Sy$IQ;{n8 zS$Vh&U#!BZf$i)63cFmAV>PY(BM^kO2?VlZN%EeCF)s%vnw|`HksvUKxH%<$H*B30;UepP}8RT!vYV9LUv%T@bDuH=ZDa z2}gPm(iu}9n&BE^t}t)LQ<@e%k}~auXO`0ao1gItNU3Pk7q)_h0&%ZjT&KiB2++u` z#+DEjK@EOz(}7CHU=QiLJhbdEc{|hK6@g%|zoHuG9%WS?Ia^H6s9zHS?>pvGtYz3u zm^{VQhttYFZMn4-@zU^Rut|#yA*v1gr;i&Xz8(n3ZROno5^*$_oa>nq8<_ny0_5ny zS#qmDb3~XOx*YYL<2(uz83;JS##kmu!cnjJby9o;L-hcpWav!Jb2uZwHpi^}~r#OE95aR zruF{-{dxW^KOj;r0r)@XZeTC?0*A_w15XW$T2Cr_U%9tH>)n@MCZ-D-31cCDHzV z{cwo~CQ$BYInLtVeb>B>fmk3mP?MD5Sz5?Cxj$PeM5{!{Fc^ygpp3BMWrC$Sbr4dO zTTe;fMubTV?$`iO+h@>1o*;JS8uR6u#nZ0JZ*L)xo?^fv)^n4Rf~p?A3K(dPsQ|8` z9cx>^c+qe%J;E--KZ@iL*dS;%oO(!`pRhOe5`Y?lI0Q{tuDdZ`N%r`W1WQUJr!R(X z{);HU;WP@G3M+49&8XAnb(K!%{wW6}yu6ualNgB@-MNP3e^EqVfdn614x3BVEAaAs`$yj=z{c}D_w#2%MysY zSLH6rdH!jff#{1ifI2&eT?3^BV@U_oXj}`^#;fN-qKD%KhD9xGO(AAP#S!j4;dmHr z`)tQb>4ddA)&A=hx;qW>$accJ!kGxV{Grxd#RlBK1GD)3gPpW*6Na3}!h;y+Y{_PGk2#WB{VA8X;&2vNF&vY0*wsET zgkLNN&v4=Xfp3kbcd$w32ZFLkkEzOIzBfgP<4S4}b!fo=m6w1#cK`s+dV746w}WlL z5y{Qp1>k~KvMaQ4iOLjQJEA5+`Od;dh=KjLlM*N+rN(ul`;;BZ1TSs@JQFm30GrUB z!FkRAN;hc!Cs%O_CA5L?JbVZX?Fh1AlYG+2(72Og)DkGsPYy%htq>L(d$)~p@3@Sq zog@rbF+W6(ZD+YTuUeV3E}Gv#h{fUcq}N4f@#SsR$HRVwEpgvOY$|a6P7=MLiuAcoc7F8`=w0VkpsgR6fNJeuV6+LoT52l#FBefK5jFW)t0Imz%a2y*u_T zju+&sIlO#;kJAz=nIoKi!i2}Q$Tegif9S*pK(YY64dWi1N1+i>mkdWdd8Iiin16)O z=bHndb}N~@wdp($wDwS0h<5i^AMM9RM^@~*!fxM=7zVa1xA5{~8b{`RF9A0KdBUX` z?rBHs2JpWmZSxyb92B0dQyKaXa^=Zzl(iA ztCJ#;iHC}Mqc+G8+SM zTD=ywokwtd~qLZz=GVsdW6jQXO*EH z(6&II)8P6Frh$>kj@_Gu&hCc(=TCKz60PtRI3uK2A;em`ywkTiB9$zd8UN)SltH(i zk@L%I@KZR!mrCB^`!+z&)V|1w_+B?sV_n-y_#yZ`oKEBOFCG0NnI_~2-|5SiRS*-t zdp0rhMK%E+&Ce!!4`@$1bwYwesZ0gAe?OK=D!N?D?q8?kynIqWy^bXbs^ZlfA?{?5 zpeCEb4G%yICejx z34G;w*GHQT!90dk)JQmNfQh+XDMAGP7?J%ENTg<@wX;t^K)5Qwk7efBGK?tc=REin&vk_S8eF;-3pR0nPsOHixgPh)-!)>O zS!>tA=_h+e>eu}S6%{v%K2Gtt{;VWXTVA@jog6Q%Oe(Lg3;QOvsVlYP2+Ghk=8XfU zCWdylo`Kg-xhd3bMJ|ZJ-GVA8L)P+mF)0$N9)iS*SRe4F#*z%BF&AB92D<)RQ?UQR z6bKR}z9(zt4~8RKa}jF$#qEp~E1-78%*_|BjSWQQs6zLWzVV@lxFvXK*j;wS8oCCu z6w4w5NVAECN5N2rOHcZ)p7P?1@q}41`mQ+T5 z^`tJa1=Z`^qYf8>OUyKSQkr)<7M2lfijH~%(S?H%=mC6e5;Iru;~`=dF=zvz<^jQL zs5fM`01aowur?0`{`xu{>=~Inzm`1B73wqm>phfb=1-QDC!4oDt|Ac19fFS${XN`Y zY65#cu2tjeDfKwg!{Dmut}kNe{xk&>>zNl1YRFqXYF}*Eqh%`ZSRH!RedOeDf1k}l zDOC2o^NEuD*et3DnkSE={Lb3sdt_?I-L6qX-~6zTzjF=>DvF88ckBzut`&ZgL#|GG zIH4S`!Anti@AUX^r^*UXCgHZUJ9uQicIeLI=Q#GE!MwXk`ohaXduPAdQ;o5Fxu%D) z7xL%`cD{-xUa3ru-wr_-6NrukQbk@&$H`l8fx5pUTU4>~(4T(@oaX`_Hv#`TB&sMq zD@2mm-vc7$bPa!iHR#u(Dq%kW+Ylov{E`6JlfoJzF#@jxzT1=M(S!w6$HcCRk=r-M zjmfeN1qW~5@nAbc4#Y?!g(AMwt7YhYJ8Tgfy;;H3yl5#!ru>r%=xlhSK9ZX4b0;j%S zkwsDz^U#nKxidFzf6%$-409O7E9i z8Ioc-lyBrfzrkuIChG9a=8bjOgc72uPA|ZLsZ~;u;b5;-Q>de1_WCc%2T$Jkw_w|B zUI*uiF&Pahq(EB)IX((gp7#FEht7a>8#JT;ZqC@{dc^A#zG;}6hCon~ZR{rrHOVTr>C-|Ls-+o#2SJ zGhO1u>=2A5$M!@E#vtjw@mP<(BQSoL)GdW|HL_8B=sjhtf?**!Fa8V*UDbwOc&C2+ zXnWNiN*RJvDd6}05qvVh&}*+wQ2K=Hdv2FAt{ME5rL@E_4A&`*FKB!e35Ce8QOsRBi6Baer19M$jb`n$L+C8c|JJFNT%o>?|p9^lP9&LnjFp+nU#gl`0%1P-uk@%{tc zhY1D=jA2W#l?b`%=e_OQ7_GowC;(4Du)o1Fhl$b!g9JtnQh< zoYK6rZ`F%7;k&#QvEigz3K!-Z;9PzS69j9NW{`M({jlN>G>2Ljrxb?;GX1{QmK6xh z(VBw8T2|%g&HQm3#f2j~%@N@-LDB54p?ZJ~6L^t<#e8b7(Nr#^1^8Pa zcU{Cb(GGN#JJ7&^S;O;%SrDPDkq}OMz%l`E&%ORRI29v)luoek-@&O%!Nz!E=J6#s z6{ZfJB62!;d1=s{=0i=$-)3S=vX?upxX({Pd${Mr7ee94KwuI4=1xkmwVI+xYcQfc zlKWBGFPsO0I1?OwxVlYthCbE-Lr^eGjd9WECHt$irgC6{9`Yj)@{JdJQkMk6=Mb#p zQQI`hagGmo5UIzY$nhlCiO`n=~aU`VgjCIaU?q>x1jmU*F9Yd}qk$e8;*VcS2i| zP{odTy=Ve?Xi27l&htf{nTOadZrQ`!P5pK-=n%n3hw!knL??tV!>}8ZU$cH?q`()4u{htnASgHF zX;bN}Z~Gc=2*$-UMC}@XOw5V$O`p(RmZxzlVI)Uy!j7Z>dgqiRW&{$tJCRERgGL_u z@`dl_@`Jl=aRsM$HJiwRX&VF|5%I zZ}E*`I*77>J#9F=qZm*Id{_iy6Hnka9sTy(f<&qy=pN-}lT$-tG#ha_MW|EJIqStC ze%`n>?-BmctQU%z0mkoAli6iH#8KqBx9`d4;IqiA$b+o6qQktL{7E~)oWf_VI23xE zio*D($i)(Wm6#u?k0h|MRTl|jF`0l8u)sM>=5w`ra!VKbv_=nuLU6OCbXV`J$gRLu z3YuUGDw&)v@e<47@?Bu0Zl!9tmoU5vv}qjPF~DTFmLpridZKE+pdeHa>n1dQvV!m@jEz12ZvSV0R#ffH;OY{hbD1|K^Bb!K zPp~J0BZvEz=KeSIQ)!a)A?4COunPlY>Q8t*^ZSXu2EIw&zYAK&noC9rSKvd)f_49% z4Ca+DnpV-`gAUsn7cV!X_N@YsBq&}o!0xdGBHzBlHEdxZNFJYp9``0u;G>@K6{OHE=z}-x_~KFtx5&F#OuWhGco;=YwpLL% zUtIhb+sR))tk=`uR;fd3i}5R^9bXqLHvSc}dM04C#QdR7d!%j%-`@aiTw{ILFA>=JAnnvmpXny%O9A?Y#sb>+Ydl>g7xb7G7^(# z8I3%d0iWdPi9OT8ikHnhl5hn~GTU_eGCcNHWGQ1!t~*3 z1(#EwV=aL3R1`p6Bm0rL2Bw1cD*ISuoDNysZhsLO0B)JHxy%xW7Dn8NM4TOsGdFMx zZpLLryeo1*Y*>0;*W3_)Ov28c2Cw9Dpb=aTRu~TP2$lHkGCuJuH*vc+Y(fDan~+1K zGER<$XTOz$b!VhNq z+sQ-ImWw?L@yy(3azKhmDC_Osw1{^BrUQ~lo_AS99mBR{jhjYd7qnzgz`d2X7J0=bzDAimyC+^A$1L5S2L`aame7X{F)|T%K}cEX|?{@0yP&KEK}2k(>;N z?VwYsw62v9mb(z+pC}Ci*b$KQC;oyrwCmUliKpnBO*5R(OEG80DdCBeS9EjAZu0AE z3L?wfc?b6>&Z|}K;N*vxSnMe^- zBtcDlF?Q*O?M2Mb`3=lcI3DJ@VnOyh$XVb$J}MQAL$8ls>4Q09$6&N;s_~hV z3cE%_D%kFhYy#MmRtX;>TK=qb^|0hSO(&QRY~Tnk;9MBu89Jx4%TTkNoykjK`Kn-+ z2F@4cF#eawo#dF!$G15Pgs=dlzAKt?I-qhyD1F^g4Ed^AM$6tSZOwm(*vSE|!(yZU z26>LwojGk%xsbz!g4{fy(@T&{N?@m3b2G%DGmX-52c?%lfJ7fA^R;jZrar32eLK1Y z3E`&^9&5&QbYEGc-yvh%w5$6F`fRu(j$Zvg?ac{wZD{OLP;)QBH=a68R zBo^Le^N)mD(w}jnP)O~KJs=PT_LbjMdwD=Ygv)r>i2N$)EDN+sb|6dqixCPrE2E~8 zMaS;J=*FLwz>ewRAfId2iLbDf?fK$*@7NTYC!WydEK)d3TSO%YT>K+MNf}2I2NE%C zmCbnMQB3$mFcm~l@x~P^o2kf`xK*&xWZ+tz07YCUCIekYem4%Hs{F?M*Ox=VNP?4o z#C(K`Fu{o~4$?DypeKNnu_D108797vfZpSeGcYD|o-sQ17fv(>Q0gZj^lc~)AjTN8 zi>&Z$7xGtX^vANP`HV_!0DQ3WZm2^Oqjpl~#;~|6wR0}ngs$IV7~jJSFu$a0J`oN* zQcV~|pOeC;QdIpoOg|nuOe#{Yui^k_y0Ne-RkCKhg-|bUW3gA)3*Z7?;H09SF()cG~l=cN^n4;JRA>9#aHrv+5b5A*) zpWIfzQ0f9YlFMDzvp?2l@k0LqJc0ZjlsC391V9cGBM5s8D3oR4*NIMN3j2Ia$jSK--}6TERuzJ1Tz5o`$mqbnAP7dJ zAybiyQ@i|-f!sVihS$Mo{_^FNGRg6SBHTb!liX#FFwUlkm`1v?7FJ(i45aQh) zT72AZnEJYXFU>v)x{c)HgYV3x&=taZ9M@P_bnxm<$s}EZiRuHVyfLGDZ&_3cIq&0vP$RScHO=T`Ii4&hGzD+ti+wkxYRNqU}Bm52mxxs~^L$>yjAV3e1rmCoW2l2&n~QvUPrODS$!@Dm&tXE{N>`LnW>+?4!kvWjaz0Zo@Dm$=BM+ zzsz89XaFCpZk`K)OZ&`xViyS-KswYT2yud_Gw%ocZ*lu@aAC{H&PXl-vvAaR2PmkB z61qV`_6ui52L#@ORSvFBiOoLj#NKj}!Dxw-e>fm^mFvNBC#kg;tEA6mH{>tY|8SjTfLTuQvpgk)$brqptqNOM?zR zK=>B|1ih5$g6e|LDu@G$v7;0y`PUD>@UsGXh;w*)>Z{(SWs+5PWR!lf=m{P!oLr6YmO>rRA;PmBn`K}ur1=jY({!9@954#6izeNhi? z;I=Rw&)IzDjUis}aZE(HK@i}qKw5Gmp+)*u?3K@)aK}K7IrG(A{m59y29U(Cn{M)T z5gi!>yeSL?mUFN$6C>q}WQa(1X3IcLC1HCwa9FXM%QKS%N`*>j)of(_pf@IV;$<<& zC2j1+=VQT9xyMi+9_US>ws32s))-n1^^5rvturXBy)N5s6e z31KE4ZXVWDu?+(bmmt66m`K+-`n?D_LJdttb8x9Oc{xm<^&9J|A0lW6)4Gm-CghR% z?`?wiU$P0>O0cOI#;}>Zt03-2B`t2gRj;UND=7qwhkEEe%KX1AyIhT?A#Q&9L}zBC zK&B4(ldymfGHt+aze?gg!9Sc@6Y%c)M`}+QXbZ-G?du9Se?^giE zgB*9_@O(>wPtyrZV9)Zc6_^(n1e91S>K_Qb;O!oO1*4R{ze8f{^9C*3;+8vWY%@vp z7I92cAgi3yz~s~gF^a2TB8nIcJDI`Yn$0cja){56h;|1A28D>Gf-detz!>}Rb)X2W zxGvnEiLkx`VZFPI>fI+`pb3DBBUnG~U{b8jru~k+6_X{+mwomp+G+ucF0+JBKo+Qn zEG2v}(X`XUqX%0N&w+6@+Nb9C23|6QzOCGV5vDJ==86;VXE^tq{~oreNbBs3V7~4( z1G+GNhMu*1dG)bmPl=3m0bHpT?5%|lB5K8Sk@vObg1BW*9Y!i-2jPQY2g;5)AEff6 zAfa`gVd!$%*sdWYHyJq@$CyLraIApW;$UrE`!VTGJ`dn_!)C&m#Zhh~hqzZSIkPD! zA|JjyNw5*0@!e~bMMuCG?P?^-A>kj#mcRVjBZycH5{M4j@?8V5te1wP`&|P`dj!W* zIq9#BLbJ|XBarKp4^1)%B=D<#;+ssV8#Lmwtzsz7Vkse#1K@{GRSk`$PA*SK)Rd_p z0*bjK3tRqDeLh)Jb{;U_ghLlZT~<>;m-i$|!O+&s@d-j$ikXChno4Qcoe?Gnj$0AY z4Isnfj~;)B-em`QDN&kIhq#IFbuL^Ab8q>9O(6PWF=Fr6b^1fU#w_LGqzu7?aeS7r z=i8ub2-1BFvyu9fl6J8oxkYCvwaTn<*Q^Q9)i5;jADx)QG9HmR2HDVZ_CtrJQKL+Q zD(Qr-pR5=mtJ~FMwd!eElbV7UNQJ3|`{Q-hN)>m(j9G^&q>`88#&pVo`CHh_n-n3q@dg{LXevAIP0DFQQl zUEvDeV*Q68_bNW4$X9;G*q`5o-z8q^Py-|IfSh%|;}6qGfV_pQ?MUE#Z{?CEGL#%M zd9S>mIk!zzcm;8ADn`0+oW}8l%L;oF|8NT?<#4(Z?y;L01;g1E#E`_ z-Q*3!^oz9iPcPWU1nNMhzDs@lg8NtDIw41K55lO5&_zDr6e03(@M+2aA9L@PBgc+3 z-A+jO5WF+yKe5AQbYnzim2`lA3s3|7(%Mp0W?V?8yV)`&cLg|#9Ca4EJD=X<(72PA z!>#E?76U7+3H2Y}MZZsy0;XaFK3TK@lPWP^GZo?{9|^jUH$xdMRU(g zEDB(92E6=Zo#UIcBxF-%4(Lv97H9)m@pX9gFj3);RexhlcXRGx*Y!9_KJrc)16ZOP z#N#qV#ULb`mlH=yr@S*P_p=d`a;Vjbk(~QV%%p1Y7Zh+mONx zB0Rbf{0PV#-VK=rxNvQ8g%M0~{w{}jv}&I9edMZjKnSFQTauH@pr;`ry5z~0?9z9m z?WvxEd9v%|zaBh}htu9gQJt{6L^aAT0p2JB-TKo!43F>CL zE&IZW-bwIo%bhzEri%i2zoROHYz*Hw>*L$(+~*9U3L?6hfQ%04sFoAmS`||ztH2fI zc9Ytm!Qga6I}h{}WXuqqiYmAQhB$aZv{7rl`I6|N>UeF6M?DKAg7Y4~Ap~DSN;RDt zommPi=@QK2v{MjCA?+)){(lFQ8A@z8jk@@tv@X&Mx~zCecKURtP7G{tA~nU@orKq} zgj(D2o9+&s+3A*_(4q9|#}fuhZU+6+2S-V@mFUTwlvH$6*W8URf6xgU5oO`=*)s|c zHn~+ZEK`$V-j0ok9pRE;v_1wf9yVT_eByACG&4Vick!3vIwB7#0jb zQEK)9KjUvE9xsW6w1;n;fYCHn-fB;Kbu76ROkj7RRwmH#mb%k5!=L(8x44BtaBKu; zWSBD$*Wqf!+>mae}e4iX3AVy(SY6h7IhYXQOZD9d1e z=VxR^Gr;OWO!|sLL@$f$f}F=5SK{PR+0v>Ns7q@QjP6#|OX)2B7^lmvDCW-1}bWt#)Ndy^k zWAZw&S`Rvv=Dy#w8({BdCofchhMD-X?#Tru$U35u_OT-vkyqmWm-K54fw;k*GC%wr@=!O!{WLF(7>o^b7AR3WqMdgHd z0-4CQFU?K&AHW$|=0V0l#&zR5DVAGuxu>|KR}i2ONeJV?+|mSol{ly)o{`adqm`JH z{6R7LsKwDjK86ns@b@}Zj8H5=%R$6TXxH2Y1^_2IdKV8t9AX6eUG)Z_Tc>Vt0&fIM z%+cKU=$Ep zgd8y$yMK7}hDDbsQ?BAQ~bx zT?VJ)O`Oz&ti#`4+&^b$+*AkaK92GZ4ZC@tNat$OC_hTVn_xd@Z@=7O9F|$CFJ(`D zJ1~Jv0dC>5>yU)Fzj85|d_!DNwOz}T9DJ2mxG6H2RhI9KFGcV&(J{#(0Rio~st?%_ z)mpfvtKvicejgVH=_OC%n5eIxfMSQpZHDmEVE}bn(|(I zs1zL=nJniPCdEG-+Co8^KE!BjboXc*ZgIHB>vQ!@yNJhS046~(c*w!PNORrKRx*WH zh9{Ai++|VhI;Lq?r9_iz!2aq$koQC1uz5Z^^%p9W#i$cHgISs&`6M{tFQa)@%YiE6 ze;_<#2xAlrO4fn1KZ75|?UDj~$|Z21g+V>j^BVEl^a8=>Khdd_jVwaBpH^8@MyW_W zp*{bu|L%JWLN}8_TGRLV`FhZjoENY2v$MYqhL)YJySD_TrXna91`d%HU!)anhg5{X z4Q6OkMIBE(xsKzN2KM>JZ5a8b%~G1axPAyjZjDjAAj=34HBYw0AE-(Y8r(#By|@3o z74)?X`Y)WI^?*T3Lm%-z;}OzcSdrOy-;zgx+u(hIe0!~HjFSKn)8?4pvJiXLWI+P9 z2$bRUKz|)8P81CySg{G=S4d_MXGDo?So>ikc!~v!iakJq9WKfgpSedOE{DgAdV|(d zoQZHKpnj=5h(U0`3Z(Jb2;sKE1`uNOD~3U0qOVDaTZzhhG&jqnn* zXLhbV6Gh4is`~WDPYHC#3#&_B6e#vbU(qBKoZ-20L@Hx_3{EjFC6cyM11Se3mJ?+& z(3P`M36iVYoG)xp6*uOU!igiBiRsG_O>H1B={R9jRX7SOn%rAp7CPHbT-xV)oSAJt zlAO)$2w}8I(>#Pt1LtgN5W6MM>uLNjN@1uW5WETMSmD=mL3uW#Q-Tga*;iphsuYuq z#nOq}`n+4;A;G`C-@1Ke?n~XN(-Nb+&RRh<#){^)8s4bH-Cd%7EZy0%%5)QLqWnpymio&Bqu6 zdOQ6prT^!Eps)4Me;@=wOU4$&)bf6-9bskF7#+T;AE;WG7i2omU+k_)K2di2{EdPS zWELylRgKQ87-Lp7iFzX_2%Q=S_8_J9UcylAbXkPph5q{fi}pmdW>o^bhquQ>+;&QX z2nlQA`Aq}|PE61AZ7BcxvyU)I#&j&wnwMG%k)Z(Y$XQ86jQ9$SwqkQ2t>upa{5#eq%svqz+-1 zs~}>8brAQ;QJ*zz<6ZxsmKVa}X5$zBTOkpnal?1TT7%rk19pPYm~h-@#lkYeX352< z)>gs~&N{<8Z+k7QD8lMpyRA~(*pkHU4K&`mpGELNMvxAjs0z2mCS;&eRuF?a%yEK} zWSwJSy?pksh(W~5cTmXW%zbxcKi6=>ky3@Q z;&k@=eOO}n0luY(8TTv}Vm{nxzhwjdSS>d4lAf946%eQ7h(>onOsB=BIe8HM7(1Y% zd+i*bzi4;*NMOqnJI0nHzG+4|;(kGsvbj1YEKV0f_Tj`9GSb%G1x*snGXF)wD>QD3he?mFJ^&x;;7P-aZJ zQo+dsGeqx3GrBmBV#eJwyW%4j)3{2yQOmyr&VU;X)7cf}KfxiFjO?EF4YC>0uAFa- zPnUKwS~gd;yfE~n_FyZP82Yi!qzlW}?oN+We%$bN&^tdyCQax=w(J??Dq;t;h~on5 zRCnwUY7)9&1x+yo&2jvVW^`!xPI(Hq0AJ-x`~{o#6n){+<0zOplN=`^=Sg%O`DD6r zracXx;S(b5)+CKs2+~(E(hr@%u^?o)I#l(^I$GsVDlW0`H?gG-Q8S&=jJk~A%L5Pn z!CHwM_{-m^09G{f#F6>GHVgYNh@eS%oaD3_?<{$;t=RO$e=lEBGnm{YUh{Q}U$ZdO zFNkR`9sIv%$tPwuS?8;mE+=p-3?qV{11E*i9CM81m;pe#$keAaHQ#@a);f}F?wvv( zK^HgUCZQBsjBQZoVtr2vnAx}xj(N<*%gK7@G`tp5dW6G39cJLH!o6BKiPrhz{J?=H z)+dFjOEj68@(VubG>QtIFiP5Sko*KgP3|H~*wO3YOoOzD4=apYB;^3EDQF^NJP1kmrWs6A&5;Gvb8wPk z`p5}cYd_!Gp^(hY(KeG@aG3inq@XSBR?~`oX;S8(4TO~R$P;@^wgj5q8*LyfFehMX z78y?BPJl%2hj5kyV;&s56?}y^s=1S<1EB)V}I{$=MB6PH^G zguoFI6?&@!iD<;o6f9R4>ur3ljW(XB?HuBzjIc{RI!oKu+Qni`Q!Lt`^f|I9n&oVd zRPq-T$eBHh`}zv%)P@S>!nT~RGt%XV)6u6pvjvZ1)*yxym~i(^r9x+%DD{tgAo{71 zojBf+85q;%`tmF#UjlYM1kKMv3!L|HUej1$@@*bgQ(IGoI{+7R#$Eys2ElVM!45^3{Q5Inn{J1$-h&Bw0 zsbc&L?UWl8yqw-KSYsGQw3PSg&XwpIoK~mQ@MDOiC3nFq;-tH*6k+=lL_wcl!e8m; zUy|GV(+_oZ!G0b;6H6-i`}?`jU)Yx6|74iNivIAHJBbzI`DZUbnmQ``$0t~|o~Q~% zlZ2JY;uo0n;)kOc@-{!2%`EJ#&Z-+cjKf>Wg2(5Be z-QQ;HxvnfK39<%0PIqtznM}aXI~gPZ=-URDg|-X{4#D2n2}nRhMl=t7{ZJ{B1qc^W zVu8gpApfa)KymeUh4&PC&vX^y7$$bR*_a(l!>0 zXig>x?=A_2Or)nF3-GO&881iHr6Bv6{o}#(NLKkU)}N9#e5V6c_uf!$erj zpoD>W3;xJDcY~S2hZUak&nF}XHApjr^jb}*a?w(f z(^1xTj0$U>)fRCmHv{E$)LE2lmLaNTZAh@GU>0~si|39># zb=pW6Dz|X;rH-z=q5*t)uNP?6v*Nz?-0Lw>pz5q`Z`I%8mcR7%!_3Jv2a@keL~26V zWtDX&Hi7a9zv)^J?3o~rGXeKKn^UtY_0VR z1J9aV#FhPpPi%Qz%nXw9fh^1GM~_2YoA~i?W#HUfqCK~hlCU`QkVFeu-#3kuk%bE- zW|}8s~< zx3h|1s7wYPN|V;a8Z$QwC#ZL~0ntq;%8qzwZ16xjY`&9c4%cA~oXH%~;n?Xzkv+O< z%j-%1RUjYAclFtlyKI*d08aVUl#aIE@F#YRlP#)^2H`I9h-kXA0b>(O=fc0=&AlSB zpRJmy`s_(r4itMly7x&|Cvk7^cKiQ8ODO#%U=T|J4!wl#>DBDUk%7OM|M-;}U1aX1 ziB5R#bIyai2Ow}Lu=ATZnz1n{?Ik?hlpAE`ataGECzdOKZdB2(LZz1;q65-1`TRBU zujEr+YhC1a=_kE-K<012MhVR;sR!(q26lWnN&RxPu^33BjBD=Ht zE%`RMnEELxZRQSHLI!lsFk}Eai-UW{;<+9_T1e4|z?WV{$Mb<8(cWc-7Bn;ZWV~HB zv4jpY()vi-b$BqQx*KE-!Gz;?OdQ|{^s}TZF%#!jU;{Jjy$a*fyvbB%rWLypt0{B? z#Jx@~L~DB~Z~bzrqZkVqEuyK%(2@)cfH&1mCxTFkFsU>x;+A!0IAo8s%l}Xl@pT5O z5mm3GCb6Whs7vrJ5#_~8Y(4776B_Lv5^uI}rdz%_>6g)7kI!BuM+Y2{qus+6j4FY~ zUFa!?B#^LmmHKvEgk2NCbt>K(98`)sygECrmWdM0Bw`w(w@9-_S?0`Ro%c!xtc;9N zvZF?nGQP5HLYFac4EPWb-~D6l@K`!8C4_#{M+;PvgeEEG5lBc_@{+f7?3>4NL*iEvrn}Tb>?LTS)BTEuEiSGO)AF)ue`?MOyZFRL{KO2dQfUw65Lxey z4r%V*OEC{aQOp=dJZ46J?kFwOaya#?ukDTn9VqoWn*rA}OHde#lotBv@6r`AaFDLN zj&##r;SQ|rnvaM zv|VUA*Kd1b?LQyWX!^)eJRYdCa(mZbyHC9LW*Gx1@J6se*HGj?~C zi*1nmEu369pQ&&aVc<(6@hK-iat|H(3KkE&(YdiCEYjaZ+!8A_$PLzlb~de|L^ zUfR3oEdR~X~nyB4C2KZT_JHXTFfQ{}(o&Ccfav2I}~tjVPF8`_SdU*Z+U%g8WU z%CcYIe@{dBD+h}$IU4}yP~%kIE~g)cD$X6g=~kKrV9RqNk2aVmM}lXP2*cX;8Cv2XZWQuw&*O*QTi5vTD`4 z*m%RhJBjEPb2Ihk*PDof@OD1!*QX(N8U__GFGehj^jeW9h;V5R7sh36o^Aol2+IL< z>L|9S8)B-YBhleOx>X4^i{?2$0#sQqT63%%S+WRE$v@AoSAgGPrzs&y!;ys?SzSJx z=+@nW42cce*$pf^JSMYT&RQ1xmJ2h)hg=^OZy%6PxCFQ9GaTT$_9WNU__S1l&+INV z8#TGGPT(DwWe6psv871xov9^@0fBao7)D_OM(>|~E1u{mk!?h#4z7#`bd=eQ7necUTg2jO~z6bRG z(^EmuSe86*bWHS8>-WnVMo=jA`P0Mbda{{HbC9@y{qT$S0`JL@t&DVJ&fXeZ46`;Y zQHO=c?CsiK!pmgM?>lCfF&q5q<dVCJJAOyeH&bDP<`=DJ z2Y1@mSVuVx@0v>A7~$8TDjnwG51bhB@*-)xZ6MVNZZ%%JqbKCI(qA)8MgykZ4)M|| zR}lt8M^t<~3tL`>8uBfyS=XQ|)cFy969$)X3OoX;&V!cj-NWDQiu-#!Ez_}!WuZNm zJOZ90fz|G`P3rxUT_RCDHs&)_8Z_%5xIP?fbYO%R+*>pgPZB5W8))K5=3vk3kKdjZ z7;5Y-WPJ#gamA8KS;P^DqZwNsXxZvis9vNudwUE)?6Jt*mtL1xp7;&gkbJJ>=*OZD zt7uyP*wrDUUl0RkrV-?-Ka*qp-D}_8O7C!v&@e3$1kOJG$EIZe0UbngwFZpHtG-Oh zNDL+BucEekb-jmF!SuRn8t`o|=E{wj|Pp28;xosR= zDAQOPlz~oXBQ~PWxDvHUvwe`vDEv7bb>g;ue4J=dtcsW0-z;2Y;Y|r?q za8HE1vC;adk`>)fSj_5Ff_shrqT1c)g4PH8-4I61K7Kysj-@jgl9IH|Cw!~m4uVW# zXB1b3Is$cfwIz;W0B14wP2|c&|A)XEMw8KP!j15;9zZoe&FDLGE)Z=S!mwr<1Vk(#4f^!=BmHATS3`KPI z_wgQK6}%00&2U1I?82TpcBn(FJE@s39903M)b)V0%^3(8K^3oy_I7pB17lxZYwL%Z zT<_yfKEb>y%enkVwo-&Js|t^Z2lC^2@cb7sN_s_e(AEce>L10+%PYt8ep~#^52r_X zK!i=eQ26mrYCTyS3>e|vI@aceRgUii1bs3XdD2m-9HG(Pmu2rj-zRX4`_Q_y@QK0b4ZrSSn9q8nf%ug zS^9r$3#C&F{Uw0Vx&iWWHzGUV&M{$BSYGuSe)YrZ>@YN1e64OY+_JVdtR&y&|A=XC zy0bm17oL5B1By~9e*N$xV(KHFAWv^7?F*XGO97czNOc&NldcD;=D_BXj1oM9&eoaq zgS1?lF}MnRfSkP8A<(3ept&8N!%@FO3o~s<>kTNNrcQ)0;#qGUfaHXEyvHAbW0XG0 zK(ofsMxoKPH9{T2+Ju(*vVn=?{Y{Qj)Jo(kaoz%MV5N%;93sY_v*1OkgA?txpAGF3 z{#Z)Mc8o%!%lScMdt6W1xbDLFbNCk`SOUTyt5HQU1Gz{+7}=!MF1%@q+5G3jp^-O$ zSIl$F_~PqeG+L{47Ua~51R}7Q$c2!a);$u;P6-oOGA(LDauBn=+R#?SQWPd#+9yp% z&9y<=raKUWvY^L6UD+s_w-uAbD3aGE1jjjISMi#WwUUuz91ByHI0|`wtZIWw1KdN4 z_P2O28UbX|${_ezNR`YK`Rd^4FQoq3dd=cFkjmezAnh&%c9!%x_&$=WY)zZXw3Wnn-z zaz7f7s?~qzblI(>45_P&41coZ(28g>Vdw^!L%87g@fYn~pR4D<21SIw0nG~Qn|mA- zguFXaLZ6M2=j{?Ov@*;0kJemq2=Ccr>{Z&4J&Sxn1lR7(erQj9z=A8+81 zX`p-@*AXK5%1~>Ri>cV> zqoE>cds1F49cJ^yN`e!-ERrJv?9%#gB^{P4RymhVmBx(1NRCtLryZV?Q+UP8p_&p> ze5*Ha_M@mhuXtY^4xpCCK5{H=w9zrI~mg|FT;0fn5U>pq*5vJbG zDhMAkY&Mt3oP%@|hXLZJfa>|k>-AuwHGlNtco<0uBN)@)r*bMsXHL) zi7sYR{*u>M6+iG?1?K**jiB`Z)(HAd@$(<#L5y9HT&yPyQRy=hG1c4Jl}GPlh;Fk@A4i?h$z zG_^reay1CSj__r&JJOj2cL_VI|{Xk+s zP0Sn1D>JMjUboxsq<#elv5yXJRaXQ-in!GYR!SNBNh=s_S9I(UCNOq8Uu#EWe zG7CjHkVK$vbbGo7)Ep?u8-4=LhC<(|=Y>2nfsr0sZV%W;DfcpXIm8W$X_A-TJtAZf zJiL&z4}$UYx;52*YtJ|-Btvf6_3!S(w5&*;M?k>iQ4vW$s)}fQv)-&CWi*q?yJE^Z z=(>9RyTFsw2X>&zT9~I0xx*>5U$yx0(^;zt1i22&@w+~YXfa}p|!ep9b zjGM$q5Z3)Aj)rK#<-T+}e6yqb(6}byufJa-eo6G97czPJ#)G9H2cA#O4_kFfsKF0K z*mw!|F4YbIjT!1g8Nk*xSESu8PA5iw-d-x@y=QP@AP`kSqA}!P@;NaU(_!6z#2-kB z1N=7XCXH;=kBlF`9uejzGQV7oT$KTv^>;Ym25iyIP^E^|X)sb5QuZZ>x~v0an+T5B zbHY}+`8LGf#Z$^P!Lh*vFcjGnbu1w?6RMvr-V-U@aR-anp^ ztPvOI_$z4dgmFyB_1QA&*`<2NFgs`H5hXMwzN~we4z-(FbCsl#tV!qjhEo(IweOGm z`Xe&l87mAn$e4N20h;n*nL+gN?!-DtCC`+^EbIczUDS|u^p8a!niA%C`Ycg6@rY1g zW2Q-w=_*q+64jXcQ?T&7=vGD_Q;NIw?SQ=WIAG8R>&!ILAA>a5zEmy}4D#+2lL$bT z#`M=>E3C|15Y+fn#&aM;OiK{Fr#g1Q~Kip!?+O^S`_oObgY;U_BZP1k&S`QW2K zgn4C7DGck2qLtNSl@MF2Viyx1A>`W^wa&?-fzQxev^?MN{m+8>%Y_}=T0enTR;0!iRWBREnV<<~A?>V-v9dAO@ni1(ApyxW2GK?92>#`u2vuI@{afL`xQQ#jCRoR1_NtP5BJUGRkO04fkg>%n*H(=t8r|=0z<|Mr*hhGJytUm$SKsWCK&g6h0_M zD2j_;4|z543Yj)A8AMCrdIM8SgnSdrFTSCcM--*Ad*E91mDzThZToU7Aup$_iiych zX{p&pb5}aC03$)^9=9j@HZTE3d>^hI8+*f`QmqfV=!Oac6r-_8IY^TXc~MLw6y3GXuxzeH?!NgEZWYzP4$NuJ)*$HTG39JB>lnWs?!95l3zj|0PHafc+vVb}OmR*+kP zt?`T?jiJ>}!4dMU_0L$-$KwvJ>(wVnnH4T{$~zg7$7y)nu8t^_LfR|VfQV+;tp10a>sv1cQ^k<*>-)Mt7m|H&Kdl%{f%f8}JVLbaN7Fnz0#+lK zv#(K@`26HT6asYL!GrV@H_}Sf>9b(4aXp#up9{thAUy(HfPkm&L@cx=H_pX$#y$$s zWQ=vp6?K#M&ddp0AajR@rYS>TDQGC5q*O3dU7NLbO4@YC-HDAl>$({efhpzyb z^`ztnMu|R&F38-oxLBB=iqRA`JEE?j}(Cybj^T}rWd?L1N3XCXHwNWf1luI2m{&gq3k*Z z(g$tXl;;8@_V159L0p;#XP`s_|)RE-ITB*Rct7A4tJ_Pe;FXlkYf*0Mu1x8EKVvFn{IpjwzsJ8r zm-QvM;s=lT(CZ3ZxrNe;Av=rSvr#L)eIRR@?k?doCgcH(MU3;(ws1ULpCME?J(E)> zVmm_!`2ayczQ3X%fzMHx-T_1r&^#fSJREL}4G5Hx8b>|Rze0DqT8xODAA%&47KV%` zr1pnS-FHJFlPA2ox{@)1LvaNa4nK+^i!Ax*;9)`=%E`xB>&SUBP}$PjK7lRt^HD(c z_H;+}ia|-P^^gcE+@zh0lk&gs`}`#~5V;IQtte089R-BRfEb>vw3qQVfvp{|p?N^`sj>%LEoK;nc#MkD7824c~TqR3O)R}J|!e@UeMb=o=n za17@x{_HhwAt}LuZjntQq$rMIv9Gsf$&I)zD;y{Q0 z=T?@s1$|%dgbq8jM)?J@T%Q9hVFzSQ+)gP&<15AW9a=r@XSDGzo6dxBPZ0V0(fE=y zv$k=f6T)VMHw4cOB;ODo)8A{-WexjJ=m@WM3Q5P&6e|{$70fAKTy8K>lUgXwinMp7 z)QIF%9BI_LLztG}17hJ~9gNtCN^eE_KDnTyIn`z0#A_a!Vo-|&CKG&OSf1=BQ1I3( zYfp#TQlhv-w~bL7kpRG2{hi4qsW_}cnGT;C_ld?z4)9S>{aV~g`0g?uxwTW1oKYNZ z0Oqo(4-~ggBQ0d`#d!cQd^o#~QBHOmX9F4l#AEoOmHG&tdAprk)?`~|TIfRW%S-#m z&@h(i&YYF$*K4I%wI6}B_7c5J61Wcda@GCg<4@ShCf!}1aG85lLC;T)qy`4pdsl*W!0Dwu$*HVN@XX*YAE+QoTm*QB zSJbq*ZH!m=In?UY3x5cYO(|ZNpzKeZ;_|4l*cHU{@9AD(PiggbM)>~H(p!@beMl`* zyRyHd*}1}(iCvU^FFpC=UvGuZ`pBC{mBcWbnNm{Ga?jBg|G|4#HA}fboRu&g5s8Fi zC;a2_w{~9rqvWA)b3G%?&>vT1dbO6bK5|Oj=@eFi1HcEj(H>wm?ewJPuz793O(#Pw zc(ub#P=R#zwFxvJHqCug^YkCx^y{CfR-#mJVQ#BfbU~1YLn4Txv#BJ@K!03G@%&}^ z{P4TX-#mZ#i0Yn|dpbpQgq8Q_}MT#Fojpw&^R zDKP~=Qg+){$K`ar{^SI@M%%LOJtV+4znZL86G>ztuqM%&g6ANBh_ug=V+{N{)>Q{&|u%B+l$jNB>(oM(^sZ z92J+vDy*W6pc^k{U3Pnj2wjp!IfQsSSwD#Th?Lj!7cvJ0S+z0_NEI04Lah01OLG>n zL6%r2Fio+v0F#BGm?&2HVx@`{YHIhEEL_eeA z?2N^Tf43VsgF}nH`^$ z?k-8TcfcH#EK1S9`6`S@>^L~W?s-V1lmmEGN_FfLN5q?8g}b`JjE)w6_F9$0u7^c! z^8WfHeJMN&b3#62sB-u1Qol`7ranrD-Pg(yw~J-_-rL*wsEf;Y{ zn(L&*i4Ex&GEj%CDH#BZR{8bAV;_c>OPea;A+DQvs4@+*_@mB1UP@$cS2VMw)nRJs zoK}>0T?=rsJBddVup>gY?3aYqU!>u2K0;P!73p1EV7@#bO@QFIQsNvZn2){vu>w+% zI&0t1TYuIGYF!3PfO^vx6FljXbe;f!_ICv|SkN8n^zE!96Ysk-Ph%{@h_3HBCWFVK zKx3D}gBeg6@{`8p#1eDAls8rKe>$U=8xzbu(1YCDcp6?r1j890%rUcL8c%}3ALlye zim8G;9p(gT;Czc{9s4kJ0m9F(c}fjrd=7n$+7~GpjF9};6T3p;(%CCNuV}n|l+Edh z$6D{xq*|EUj&0jL4!;Oq`;GfaUH~$E#z~o#M_@0|p8uh@w<9a!e-WaQA%u}TP9b=& zsEU;X5xK1NP|hsV1pLO1Fpqxf2md+56HHm?BR!YQ3i`#z((ExCj17rkn#a^nbBoC( z1Hu>$k=|@1k1vsAT8|^04I8niQJH|%!bF#>kjPZr_q(c`DnRa6@&k4#c7BJa#1=%r8~TKH`fjXOFc{|3 z2a*v4tC)xj#lv>~{|p7+&p3j5>BI~6Xx-uet=ZRqNDbqeL!tt9qPq{P@&`#n=U~Bm3YIB^S!?GUL05!Q;==cKtOySqKVeOJ5&8Kkw4SUBb1#ke5=$^_~N-H6L--U-* zX60!EJWVOoAS6whUJQ6hW1h=4G^YM#`;LRzETl_jxWUF6y-Fl8L&L0WI$6zH&2I;Q z!F***!D|zbEln+K6BnuMrX;~qr=nc%b?BmG9K$OMDI`t-x8l<->Vm^=Eo2=qWjR#D zozH-0EtHKPcYdotZzTY%b-!Qfj0!KHHJmDA$T=i=Nyw^V2*~jAlK<(THm*$xL){VM zBH8GnNpo$p?OogqN-R%(?jeCGqNikudS-4Qxt;;aLYPqovX4eD9SJK?CQ8e=V`6c` z31Kgd2auT`kKvpro`@}x)AE@zke!j0gAvMNn)qP1;c}QSd{N*l%OOW_eEY)gsbA|sM#sc2Gz#@X||R48*e?GTOfUMjdzw4Xwn@fk3P$9U6DEND#- zi1F^WekR#a?5-4By9YvC&;CI6K7Z4;Jg$p^nX;WZ%O!Mi_`+-(g1}<6YWyum+;1Ep zZ5sB48;$-5nJUKqwC#jto32LHO>P1&nmx5{Y;UXf)$;KOn zE*Zo|5WXR7P zz<1{-cA_>IGP_?`Y*F7faUlJcA}vEB;Io%5nexm*GFC53Tc~hoTZx3>3=LIzkiaxe z?~|T}{TtG!iZe6AFF7b4FMpS*HFK?>D_A9!rsF-zzaNO@zk~uRYy*sIIO4vOp%vUh z3!lX#f5`$8lCp_}SKdNs>Y6F_1M1CBAv88GTF;oMoXEsEm-9z=xN;RvgN|}EHDxJH zmDgjq&&f`UeeVjZI9e1^=`x2uV{w$ss*`r{fCt-1<`mQ2Y{0z3LXxekBs6-eX}}X6 zNie8`8Pc;1`h6|uAbIv@` zuyl;9x!wm8b@1nOP{wYJ_KY%8WpGKjme086~}e-2ySea z)SF?iVn0uux0{pG5qSfjkxn|yvL8>tzR8)Jyk7b4J_VCM3fUbG8I&4wvB<}s4r!uj zg=}1Ce)&r)X`AE^_XP+9{~N%bR?v7^b>;X zc|`^kWN6Ill%*{?cehN+U1X7%gifgiC>?t=3cx%F#$Q6(PQ}H+8-uS05FD8bHHl)@ z4$diaSq_wu1`!5a%vRmkkBy1*;)rI@WN^t-MCqL^)h^Os!M=0HG?9QOnqx?L5mm{4 zLks1PC?F+8VNFra`l}fPdX^n^$3VPLKu{M-cIx%BPGl5WZ5I#o{*D65$Ql?pc>YZ= zLmPXSHGA%+Te`mX;oXAoS#{d_FZIQ3`7TvP^2xtOE)=&9?|Op#_QXa}&D3o?b3zzt zlhc|APlNaP<=Cz{86_g(ughr~GDA!yj8Ef$l-QJj<=tn7MaCO%`RTDBP$SB!UY4~OOj)hrEIg@`Vxvth}H$?}pBNJ_&wt)RVqFhoO;0?X}j-5@{!*q;Be|m0^vV z0^I^`(mf8~#9iS2At-XUMBTbh2wfZ~YnQc-a9+cjf9g^pV>$|)`0->XAnnT|co&ph z^dz526O%~J3G?+8n{>zw{(ZT4YeD)|8*;}AZ89^=9i6(GzO(|G_7M@ zIw^kcSdRt{SJwBOPs|eH2R1e(41`0t>liF-Par)6Bjyn$k=pJ2S`cP3Qe7$ztJ3S?Ar4%vK9F+-z z-oqaLA!g)<9ND$vkch~qM57qrkclUH^56jUE^944DSJSH^5|e~ ziYmrI95TcEN>DTh!+JT^9dgaJYCzO2)5lH>R_nGRjB%0~r4r1(akRV?Scsf*Gh*(> zfP=7r5s=|KY{pQcikkq1fCgI1(9r z6UbjU#sKDEWnsyPgC|i?mz*A^>eH~wH(}6sBx#Ux$B(6M@G0{mS?iLa%b}n{`RmHt zHbqbGz$K^4aPvU-dQ8M?$&GblU?7LqfJD(RmzfVNVBGr~{u++4VzLt!u*z72Pdrc7 zH9DMK1^hWBgI2zZ5*Q}WQh{Hh(Zm%f<=qitGR>o%w|@G8Lk|EsM2|{$^J$#;`d@cX zCDCSyX3uXAx%3W&UO!=Apr$6%*iufnBVTN@ofxpktki_L%-eEPPzQ?Vtv+h*R|mJYb)trb(6= zb-I|iiiVV8AqD|EVdaY7a?DAuU)ZN4POH*4@rLBSwX9vCg17mWxA_{EXHqhlOi8?}Lc8+1hpx!1( zBDoYFE3kmkH+nVy5`)h2_QC6I5_%N!M6u<86D;dYjL%r%Ih(TX|F#Q;Rw*g<(pdAK zGQ{v$0IsO-=K&^F&gsb>S$i_St=VL+gp&4z^~U0j)DK_=lZ9AHW#c6WGU_0bCXxJe zA~tV{KBO~Ut2;dyX;!Ip++>7iFh`775eM4m)4Tfje4zZd0>khJNf^a)|8939*;SK1 zzi0kU9fylE0UVkygRzZaf`F30<%P{1cck;KNn;RRNfZw%A-;pggavSgv;2xIxQZ5z zat1f`CA5F+svM9Q$d4x~V&L#Yn%b}8WDP>f@nXAiu(?FHG{Mb8#X_G`@RMuaCKXb! zWeiGT$VwuwccmjbVRbT%NeWBPXW~`(2+2nlZ0x{BR3`*v0#-VbYU-tMCrBsEyto?o zfgAOfdTU)?mrqRnh;4y~AKQPD;FkeRK>H8~=;YR}VDjM1x^y13eW`Je>5m$qwdyK3 zA5-=(Td&qf;BW_s`TRCI6czdAQOPLHiL{IntM(*->tC03MjN8PPq2lQ4Lh-{skII}K zh?Il?vB1Nln|oqLSzzg0Z23zzW|B>o8Q^bs79EMn!At3wK);8Dc2SD65bvQeMM_=u zU{!-pfpZT}UHYkz%iMjR;twhe{hri?olJ^Jx^gEAEz7G7J;Py6_#v57Lsd+k1wp^+ zktphah@K9u@D->BE-8$xhX>rHH(wQ`f=2G&)mL{{q5@_Oqk4+Q%NRx7(;0;pj5Ec4 z;|#-h7#wI*Y*3lYfO%|S^k3ZJbLm-yB3zFbB7y$vhsP&U;>f|ko_df%NY~%-wfLg& zKknR+IJME9-OVD$i75wbYv6tJCrUu59LIA{USLvI^OF?I=c9nwou=UDvSx2Tfh#Ur zK?BmuX{LR=CqaB#`&NmrV$gB1DoPi5a+iVDK(oFaq0+^Gt@TC4rfn_l{qq?Zo=95I8MQHyY8;JcEG7z~!jE@j8w0AZJur5%>9DT+YG7x%{ zq43E*UZ*?K8*g18852HMwnCoI?xy++@uR>d*Gqu>93G51h0*7rdOE-Z9HW4KQ9H5ea;+E|#Y>2e zhiNc$#83oe#)60jNPM#c4muI|qV6uwI^UotxGl{6Kry@otQbCH@u;GR|?pk=#Gu90hvd0UB6eMmz#d zB?8Zn5k)Ry+6meBhRM>!?wUNXQBHS7@erCsri&OXC=Z(@_A|>8c?TIw0+qr@Ze5kw z3%Q%jriEXsp2ScH(&Ieg(5#Hy`>R?y2`z?P1nDY&dDLCmKG*Ren%Ni~=mUZKxXQ2Z zZ}T6CK$Xg`!X`79Jk>I{ld=DVLR3f?M=L(fJW4E0N-hWd&LY~BLlSJ3@|Rz|Cmp<7^cs?t^mkQ)614QN4u}hP?*O^q zVQtv!#<7P5ZKsqce9Zb^HkJJjUMD-KPuI#7i*1XDpp(5K%)gRQi19MQG*_{4pCV1g#RXM4x z;MULSWU$dFTemP{E_LP+Ls0P>A4ZRSfiS{~Csh*Q6%Dq7<1N|5MXQBx9uA4zJ=FCd z-BP3@NbtixZaGPyEre>F*nstQUJ)9dC*}&UR&~Y-9J|KEtlK*yvg~*Y*yfq&Lmc{e zmH+t^to$7{&}YQ-YYIl0U&Zyi=NGYKm*4`(sLW)~v2NXPc>SDa(znibMl1o+p=WDj z*&gpp;|?c6V;Tpll}|UC-TYE?ba=kV*+St*N3fo*2J&AfsUvrfgm~RydBlFFxFK~e zX<>{&2rJdG)AIIYf@$@|9=P6M!yz#J)U~bl5w0a{_wGteO$8a-Wf7br}8)%3)DKme3VajC?T-5E>#xj6{$Lo->G?a;gT}h=I5}p$lIW+rNzm&p>sX11uc!4u(a61TirFA<4Wb zB$%A!6I#!nxCt~*Qqf zb%gCTIvaRo+1;P<$miYLQ!k*(7|ss-8AW6=kvi6~wOi{U8E3EugpEu)NpIqTYzmNA zOZ=I}k*$$QlOmJM0ra^!ZOG> z$ohwq~3~fEahCWKpMn+|F&h=46uTAUQW0qAW51L{8HkCHSQHBHCpj zX((P8mV^Uy6$gnSXr*x$Dub)3TWh0eL9{nHbh`E<=|}09qK!Gvk_kyux8EznR9Y=0 zoukA?T16|&zEsX>b&3IeIiB#6N|au_HR^*Xk*f>UA1B2vK1Y1hOe*3)jky2|OFf_k z#Z%$1H^Uk`E$Y|aeBKhea-cBE{yIeSNl;oM{Gw@GL8FpmgP$xM-AzYBW0p{KPiUjw z9?{F9W5ZnR79_=?QsxOQh`y7OR2AQM^*`F=wSAScI%K*1s zZ!+`;ckb&_QDL91`#B$s4j{8m)^&M2!z|&@m>)kCpc_oSZ~3Qsiv+r*JA~%zg5xUV zAOKr2?(=#XqUqxIjp+`N?kP0#OwZ^Ml=}3UNEynPcAW>t%vpc)h7Y%b?Ia9h;XkI! zjZ@iVqLw87&5ZMd1H+TC7L`odW;8OK9XyZYq;Y;+BXo?sdv_dy;q9C$q$|VcSP{AsQ z5eKYR(0Fd;_YgQ4dpO4(qB*A;En%#H%|c`5GW~-I6m8X2Ii)hqHHVoF$nvfyiyRvr zjg}aSf82ynyTCj7?Uxs=&>O$P^ zvn%ydrI^=u!rw2&L)gWE*8c)hvkqJ_-e5O@Hv;B0h9C^=GJ3b!jd>vg2`x4H-#-;W z?DwFs+11`LVOwm_^CsWCVTsavFke-y=Cf45^bOem=R#2>wp}Yy=^jwX^Q+J|>Fa;9 zvhxAfR)4*MjY#`VQm=U?gXk>pFqkj~O@g*q*^ir?hm;nLM$=(k{Jtwzabt26e#N-H z91|z=0TtYi@;|w5Vt3LZ0smq=`&~mPI(X*WLk}bXY;&sPvln_qd~pNxSfT}ke;Px$ z1*xpn%88=y>uuO(MjC1F=@F(z`dpj79CkHET4b-4b8xA**hwdj>+7wIhkpg!|Ce>2WVL2`quym@uMS z`sK(3UWzYBZ=^52+J=>UnyQT}jsLAl*nc1dCEht0R8l#;2|+w~_fYbBdWU1+&5&i9 z5oxSwrTibjO6KN>TD~>50Xh+;k`UwtZUZ$3U0v*;kySwsJS^SW?Q6jJj6>(b-Vni$ zlj3M{Ndp~!D*>GTGabTT-#$!g|Hr#c!T_-^&1nzd(I=;(D5)97-i+TFwTA)-pE~aF zg3vjdx$7ZViw^LpP%jNqN$agVmD`=$Dz-U|%*ZvPt&f+S5!key36SI3w^(OlvV&t% zh5?!!0YgD@iHeUW_NenH{Wwydh(R20HGeqe}+j>$UXc^Y~2( z9x(=mpdM}qR4kcf?E#_lNH^^Y+7V-0YBIu5BQ68oEPoAA$^jrDc+}96ey4p`oCVR1 zjSydxWydnT9*DSwH@Y~OAaN?3`J z5MpV_A!LAsWoMAmN~i?w^gm6&)Kg&8L6F$nErFK-+Z4>)FTogUq1SCnsn0SozCvO? z)(MjOIM80_G>$V8vvhwH!DN&0SmZ~{z^R0GvJUD-r(`(psQQlhWb@|C&YBj?zn*2KW8ms2;ET>k zVRRj2%%O=G+Jx+!`K}a8x+8Z`ztz`fV3-a^iGfRoGxG#u4n<`8v>$VQRQq5R4E*Db zf@50CncZM}$6W{yKfplz6)bW)S}NE&l)}6ZPv*G77J1T*=BC%NY6lJn)s9yteY~}o zC5B&xx4(XPsKO$O-etXR-GH2nWAQ;p#-~E^qpUHHtGJaAD0h_@GqZKO(gu_}5+02a zWA-N{Uh_FX87EbpUOA_Vp`?;9cvTSC6r$%z#_NZ5^=Nl~NW0)I2<66YeJ9S|(ola1T1)<$|Jiz}Y`NdNlX4jC+Ps_FK`2Up!z0uW^|-xBA}?zv^Ft z0x@T2#o)e;H|zr*HdI>mH2at77b|8(-qPC}5WQ}P5+-ihl0VV+6Y&A1xMe^XNhjJF zR0}bspo)NX!vxq+6hslA+9|j1IJfZJ6;0Bkdriy}>5oi0@8dGSd^9w{j6=yPmLWcJ z$O$Q9EmHk}COSxJcyII{lgS%Rkr_-!+vT6dkb;4VQgl6TBaxT{!`rP@bl+?XJzFCz z^F89BLqcLdmEK>5GfVcgp{{Lpx+8#XJL%|BjenU(?vqESY=c2}T z00q5qqJ6SQ2~A3LgbdjXS!K!MHLK?zUJ8_B5$XP1RZ6HSqped@5SB=a?I2VhS{nNl z&;HsRk}tX89ST6@hTog6+C1zU-W9*ZYtkZ;@Mf5E8kBo`}&iqwgs`Q*y9ndY!*1iD4IW zaCMevrOWxHX{4-|^iq{d)TV= zOxU3fALEqYS?W%r=fbGwz^XmlVUKa3?=b<9cQFu00Z{MJ#Bvje1V?2K{w^f$`` zy(CeGo%aFed_FvT3ZK-~eD?Z^kW*@5&+@9KOi*BrgZ!3$LA#%>=$Oyg4ttC>W5L(P zMmdm)4!h`Ri47$B^H30Z8gFtr9#7T}Q7b>(E~XD?-meExF2n-By2BP)j|QjAEf9-; z_wlyvR;LsZo0J$gP#h_7(mb|fL%___l>WP0J;)$5_zyQNB1(c}5ksu{?4P%P>fgcv zF(5!rv+AAo2E7h;7kXZ$%A#v~`QVxQAj*_}<1KBZ9=+v4xUcVkXy!EJkEbYWKmY#r zRFWgiK&M7aW^hSqLSguf1`zSk>=39J;#k+)&aZ0W$sP@84DJH}A7SQ}{T#UQeV8AZ zBk}MQCrZ++U{_(AJlqjpS#3(U^>%<7rCx4s9ieUAn30y;IvSul)@s4p?LQI;`cj_9 zeayM+iqP?GerEOO{Lt@qKuL&%(Mm<9AjzC7@W9E zeH^e)2?Kj8ab&xS0(1s3aRwf#1WH|5=FzEQcqQb&DbLv3Z^*@^-A8pwFg4WY(D$v= zA3HOh{iAn>UzrA`x!auSO!2|YznCIa6o95fla;Vaab=T>$Axhk2bCLjng0?7J!J4B zlvzl83WU?)F5jrod6|?lgbxf9=Wmj`O3YHaROh$$n@~IRS*jFc#Rqk$moybB)8yzi zHN0gaF{ei+-IQ^vgr0D$GMy+gf<-55U1;*}kgX-tMKq3{)X@*#Mlwg30rN@aycLVG zzIU?EnF2?V(hk$*-k=z*2!j6Tg6HC|FN?kYE&Y+`?nZ+-$RK{Z;8#(Hxk{SXSDGLK z%`M;qooAdbhNcR{)^;{U z^JUc+;Kg2|SVgs?>^tN?q;c|vDvIJ*+}FV|*v*#CPDWe6tgQw9;g5a*<^0f0YNX23 ztv{^6E*0Neg_61f!9?PEk$5_c02eHMT^-tuL6L#~#`gR~tkdt}U)2*&@p%)sV3=KA zGUeEJk=Fps9}1I?=9tvMZxqlEv|}VhaQy}i&_i!#t_o>C>ZVRU=S}y9=41TyglMSd z$K@r!&K(bgZ5ybkAbC940OITzSPnZAzA5RYlO&B`niNiJXV$I1j>Gj2R33=#YYQU! zs2XZbfc-FBGnDSK+RAX{#!cP*hx=Hy6yiM2ABIAiTDjKOEF~me^p& zm!)k;kiLf}-TEj7r0c+% zhfX-QJ<8Hsa(e?eur*C&6Dc2VUBZ!65)Cb*6iEVHcTG~_@Q~fmO9?rRs_66EL=rQE zEVVC#p@LshJ>>Mj%HaZuNLc)s-oo|c*}vlDp;Rm4IS-qSgyTZShIl`_q9X+DLc1C; zF#xw5wF#RK^D|@yOaO4};vuEqO`LYhwhRpgue1M-Q0~(a5-c zH_)E`G;IU&*Mi=Wh{=_Gs>kLEB_c`ZXyP!y5z@Z;c91yWfW-(!>5O3j!C^$)uYED_ z&;T8o8LXq*vHd~BL!~=MNFxyAGcV>dnJx#Yq3I(y-K8@-PQoD7LuO<~bnCK5OKzYi zA)JrX+w@R0=__{I-Ix#XZv~Ypf3$+BgUcLbA8TLEQSE2z%gOEX_JUQ##uVCr^Gi$y z^5VW9pZgm*O!-^5srra9AG+cTnb{7jj$MX?pKT-d=6f7h9s(;W5(MapC+FB=HH@v6 zH@c%qvm~nWp@`bK?b~6o`TAXUDNzxK^mPm34Ns&b(9neV5!GjtzZ#0KnaCfrxPAAK zBaBz}6@)9aE???8h`y0UC$4^dH6f*MQNio)3Y;d5>Q*cH$3tDB(S1bTY=wyRr#oajOJ`lwU5@^bO~U>I z4G1nWn*cgDx;oD!4E-yUTJ)3Uos~M2nh2OnJ?zum#>T@mQh?R(@fb}=Ul#6hEM5qZ zfDilTtOt)(8sI`QyIuktz*ZiYrR~l{BUDTrU#~lhCc)3q--kzmhd=_rYAtC(@kF6* zYV31c`YtOU2PjT#lp6Da8u;QQ7vADl!G~BS)ZP{h_y7!%Brg1__a>Iy;%Z zUZmZohP_3pQXG){^%8F#Axnr*SLr3hE|-+Isl}yHDYX{u>%?I~t^s91m)p`%8W8ZE z3-h(OG?g1YHQEXT+2oBQx7mRh$|Pq?g-ma<5CTFuD-N$8M@5I*5mFXKuVfVDHAi=d z$paNHW4qc<+_H8M<`&lpZpN7dZQ656(YV)wg+(!+{L7}0kCc+r6U1G>yNTm2#-QsM zL%th`+2}!6R%k>ew+Ed05{RWsAni280e3IULuJi4O+xA<`vNNr0w(dXg;x5^5Ifg) zXb%sVw<#1q^LZzgvv6X=wc;L>Z=e14M zRKH5a@oa`)p$dB--Sto7VB4gU)^)@QGzPmW!EitB_L{1pjv36DuKbk-|`~)c9Ele+Z~TVjX2T zL6jGmo*DWaU@15iP=g1g5PdTIiz(3V?w(N8$?T4yKR$$JQ@5J1`vsn8pBXw}VcBDe zsaR5M%-wdUhK~d7Ldn3*b#}XfsZZ)cCYD6a{ zLo#MkpWPrTENo=Y=V@uU-e=02VFZPM8<&8MN5e>_1^)G!eIg?5gyey4$5SW8tzguK z1QegV3xLVl+B_jPCqh9;elXm=@rE;WZ)(I@Q7Y-`S9?!<&zx3 z{3~&u^pr(&(2hgtif64T(Y2wLDn13WbSK4e#K&THqR#?JFP;y&aZD?j_!OUfClWH` zjsbhc`7%hiC3h^FdIe4hhfLJT9HJ*=BE&?0)B~|bvT>qvTR---SafY~0+o+VYBy|EM2zyAYP3rc;WuO96NN_je?^{EoD6);vUhg1k( z0a&zfe0#&30omD)-Fmng?*d1R_Ono#BfYXlnE_GPtKc%#UWk39F@`Bl4HcR|3DE+_ zXGh++kN+DQ9@8zX9@B3l^E760LNgpE_;2VAHHXZObLcK6IRQbDMh(d z$NP^&iX;#~%F&*qJBg&%>1rH>_PM3IhEWFbLo|+fcNC>xQd5*2e}AE1Pa1l;?_}6m z6fuDHmna5Q22aad?OhNvOXyJiqdp$;z2a3hfu91bZ||BBQ+V)Y11)FBOXUKEvOg}j zA$=J$$wPM6hB#{TuH*r+wZ*ISfA!C4|6`6 z1)I5oiyyH<9OSRoz@!8M*{m0wZ5#T>jY>s0QC+lE3!zZGcyEi*!=q;(xxe2 z4?L7Gu5vqWhXj>OM1~#q+Mx#u}QGDHv(^)Zh_(JpWsW zDL@BDG&jN;WiS1h&QcSYS{wn)9q!prDV4bmUj zD}kTIp>=|>Ue9M8el1oNz=H+TEk?ZPX|{AJhgOo*g7uIhSfw@gM-ULxGgS9gB-F

    Db!tFNqk4r|u(O`SgrR96~6|Go0Zin8-X8tnI!g`qaR@L{o7c zSr{H(4ko$O2Z1TjyaM3Z7JJGZn4%zKj1W!$Md+Tx#2swkj}IJV?M%Ov){b9~M##2u z4KDX+>69>QKKc+boET>32R5zvFQDD+b|P{I@*Z;-#}VVLC%P|?c0WaLc4YvXfgN2;_GvnadyvriTp5 zpQulgi0KwRVrEK6Uga+$XqxO=?k)2k;fVU`O_Zi z+2*E76@o3`DQl{{zB2?x@d}}um>5ePWRNPmj{11^_nJhtH|WsD z1B*C+J_Ow{ z70026?)|7^BksX?sLC;;AEvkqa5 zJ^+-C!?$n$hounhXX2FcP25PY2Z9bQ1XCh702sg1&EB-HdW z)B4qAc#q!%c&A}nbEgVG;Ej?DZrdt<(AqRBhmcP2+^(ZZclppM0O>&ak4Sl8*jg@! zV`wDAY39t#kg_1B!b%kbfhv<5Ci_vXg5z3oe|wK(AZb$!a(MSgv=Gp^R6xlA`{8JX zD4vo1Lj6K79K%cUw3yE&6A2YdygNX)@!=Qc4I~jq zPUO$WX`S*fw6uuWDI7E)lZ=Jk7KOA(Uj_xxiE=Vy!na*c zao-W=Gi0r&s!4e5`WHaYE!qw{sklfCi% ziDIc}3PZPDai3o~1Ij|t90_!(y+|K9x?i79?FMo&%@3_ivg51LM}1;dIVxpV<5f#U zrfE|bYrMZS1)6$0)BkQHsl|~M)$Sed>I(Y1jz{pPh;|epB&=PBjV^l;uQGCi*rxzO zX7?-ot!WXl{9oQRASV%!aC(|mk-hxy6qN8tQHJSQF#orvUjG3Blr@uPd@_-EybwT5 zViSN7^lP6+w&Im3;&X2AEDXjtSafbOK|dQmEXBkJ&=@R%c;WC)`HknVIvRjow+MFj z>xUn@`+1jcK2a{^7!$6>vsKW9#2;}kmiDx|5xFWK(RM0JvDru43s4i1Ot9_p^6b>?AZ7YfTg zYH2L}I3xpXqR^%%PCCbktpltAKDUl$GxVS$yxuh7 ziu>2l?5?E!t43bSB?Ub`@Z0k(i8cT=CTCPCJgQ4n?qT41N~^3qmlG|rBDbZ6~nV+5BY$^ zbU&)jC!N7^ozEZpbFe$1k04t})GOA`c0{u61u3K#&KznyX0fg$9J%kRQ<+7d=&vRK znnB)GjWR-|dJ|cBF}esg9+qx^@95^M;SCd2lHK&*&_C+&1Gi<1OwJf`)AU?W??(Oj>HJx(-3?`dfhS>GANopis;H_nl_JEw3zYYa? zUM2(%jmrR)9O-c?>beXqW1(WMkWsEDyA3j^da*SZuO~Xfr574o6Fq$Kbr>?l^o}QM zY_^hfpot%re<%F6ICkryJJ~Wi@q)e$ZCH}0I5NY=QegQ>+VI<1Ezlg-A_)P_lP*-H z_#Ta6T#uRzve!ck!cYXY?Y5~YTU{!7Fmjbe6+fsFsGYZ}|CTgw|czL7mRC34cbqQ^{p#0A(GBaTznIn*Wg z4k8^rBw^cYkk+FiqhRJF`pu*HN=ovEPjwx-4q}!q8wuAvK^Ch9lXJ?!gwRZZ07U78 zH5Gszk%h-o%xIhNRn+h92VxFk6&TTqUQdgL5w~O{aps2GsW`3p3~P_1{sM-075_s@ zYQzhyb=FJ5J4aVpYgFm$C*g!n6e0%vXH>CdjlsUyG9$&tlJR+Fhp-0eI^SeThpLhc z>-D7&E@U4~R)LT%d19h#PN*o<>k1FCIxFKUlHshU#XWfeBJUl(Y%yO^&m4-veWZ0= z$of09z-$rd9}p|XNbXiwn|KAFvaa*D-S;(FK(l+Z%=?BsD#i9T-fWTrme|(`ERMapKsqjy6z92X)QDp zaHvJuTe}B-6#F;2*!9}|83OdCg}jcsTim3 zLvaj%RdU1jVZ||_(N#;r)EG4h7&+kD07V%jIhd`pxEynvr1wd zW4qnih!=@BW@xN8ePuAc!=OD3VN7D2gHEC+tR?2MnC(1%Qs9s!GI3@@^MWF}*xL<& z9$Lwf2vtq^+Gc8B{v+V4$og}1$8^x;Jj%hqpys=4A9>*7JY{2tE<1GgD*IrkDk8E+ zzCPNLj#Ujg<`#6B(XS}7txb=cLyj}Y>nrTAKU^#3QG=}0bnYq{#EJ6hSoqo%A#?}i z^h0*+#V)SVYl$Pk=gSvX4PqW-m5+|rWiWOe8LQ3&1!K-S1OD>{Q2#s9p8*T0sO?C! z%Ukvg&pq8+0{ZsA)7k9&BlIOl`jh_;?+(opj-u`Bn)dBKZtw3zdqR!UZ`&a+#CC9c z#tA%}Dk(6j1P~c@Is<*?t6_^yh;xQ!KX;_tRfUp*g^F&fb{QzgWJZJ@udCNtWQMBh zoKo~cT*RjseSsTv9fRr?$wGsDHmNbuZ4TrZNLOd=EiD_4p%G4(2Ra;!B8p-uOowQs z_l&6Yu+7)HHz{iXk zL-twu&D4k2suF zD%%~uPOOZ2mAP!RI9C`e%t^FFAtCgTKW0%ai>1xyxsP{`2X;>`)>76(h(zn3Qfr{@ zukOsDKPyCcmSWT^lAWYZ(%t@Kdskf6dg3Ltd}ZXY?#^(`mbX8&6Fo_)BE0^bUrR&* zD_&?ma1i)hBR>A?R@%~@&0%Y|^?&dpjH5T9L?OpEgW2{QidGc2-;7Hxl!I8G!dS<~ z3R#GUDBB@W)p+UB<^(G^D`0I)AM|KUdC_k9kE2zhu*+;RK#;r~M;UVyqR3!A%vbj4 zjbENQ(CG*$YMmBm7x6KeI(RNCFWYHHv0`z&8*Y=~d}h#fE5!Sbe+btg=kV+8zCmky zjv1TgRQv|;RuP0lZOgcEKBAk!kPZ#-L|Nt_Sk#m~$?6~9P#>bJq&_xkw9(u|kF`Ye zfFEj2*4i8D_+sUfkR3M)a*2HrR#nDPc!&sXo;{iNq+?V3IV~Bt<+eUW{Uon1sE7=&h>ha6rglDDRUi@ly0uV!Sh4$k}M^MGeGhXbhLSU92YgKBGMO{|*F5Do&I@%1US676S^43PO$0Jkwez#DwCkd$0{f zl)R1lq~{U zo~(%(>)yq7FDB_7LTR=h+!lmtheI5oB2~3i>hU>ONs!bmO2&qu{Lo1&=2?&}!BZe2 z_NGA~iewGBd#pj*NEry1>2}y|=^p`4h#qb#Dhrqq1}$8L!+JoNQ8ptrB_yFeW?Uzd z6ueRl5at0~QpK|AW;dHNkw+WF*Ss{XOU%<%JRso-BZUn6TtNO9<+2cRR=a=w@LKIF z%)>|jJ~`%^F)c|OYcUUz5A0#ZbRp?9b>$+p158Mbvnvw}YAZ2k?mq&5 z9yZ}n2?t>3P-fsRLG9oa93&H#Zt3s=o`xw8=^FYuL_EbVz;)%ydz^)u17^qeS#4{l zbibWbVf6%vIZ~VHX}}<^CTLZfQ{j6V)yQ}6)@tCbk;eHPHrp2 zF3i?NpwQVBk#!J9+(XoHOA*JvYnFL`-kYBXXpHnF&`(DtjKQf9DEu&#$Ou?hi4D{7 z^Fz*hvPff0L=xDlLV3lr=WbIx_|hMkH?k72o-e5r6?GCfUaUofJ_VRP%I^^q-`r2q zJk!dgNbjdi9EgAM@SXnExONX&mYVFZ!+k~NXSPBYNG-kVs3}tAS~bgwd{d;~mxNOU zJt)4gZ`}r5(s%0P6-Lo<(6ttjuSm8ZYK}jNt(XpP89~nPqj8Da>U4^}y;u>zbA;wm z+0fgVO1iSuSQ#!%VMRWOkEOXD?b4TDuI~0Qk3;?+n|l2h=FfT?$|Zvg9vJcVLb0+>=*x)RqUPGl9g*K;n-ud;QI#KQ$*ajLLD7h{~ zbr_x-bX;oVL)4PJnU*w-ykR66eL>E|p(<*kK`Cr?Mv{}lBfwJO{s~VfUM`Ln>~ryS zBNJ2xOj%`lckm=C6dXPwiA5*HfF!F4UC!LAvd*o=%cO|Xc7KRAqod1cbkWreTRvw2 z=)uAmhXv!~y2pTy*aBR#G5nALmlA->8nb|!Wm2DwBU32r*viOpS)auzv2Xww;;ou9 zUf}hiNMeFpd>ecPL#v6C7i!^4QxJ|G_i=b|MJ|oWQ?h`Vj0_gB+iA)iaA4h58AW42 zckiB9iKZqIDnfyg1v!M z)<{AmDv3i~NzOr_`W2}}IxmN)cBNT*W1x9Xv#ILToooPNoPYE1gdh}~700cP^gpm9 zDrbN%_9!$t`67H96w-chGb#jh=(V56TeH9ZBqLCQWl4q(YoA>Jrskd8g2Il(kw4?{ z_dleByfmiie@=ggq8V9|v@)L6f&1l9(~{? zh==w5wZ^l6ldXaNumg@_ zlhIx}B42!(XqM4}6?YL(|Ex2darSEiR|_DprsfIeoqYjt{|?MAJL^f zLYVs5#;7`R@RDF!iS!VmXf@~d#G3K!T2|+YNd0^e_r!-=K9x;kX@WYEsP8?EQy9T| zLANSAmJgW)0`1J)=%PgI<<_^Hkc` z2tFg)jRBftbWVSqC{<@}(9hvAo;#t)vGxDR+>ZGv0E-g-L~AsP7AuL#{`v50{3YfO zBy$kvYYj!{`e=W+yPTGZB6%P0q+dp`L1FMpf9FL~_%hq#{KotNbefct!jlrGb7FO} zB9z@krf$9=>5hosCL5-yE1{})H-d7NKWI0{ z5FGU4{p@blH_fLLHpz%g81mjCiD$vJOAIigW@o1`O8R}Q)p`Fv^bhEWe1!lX~oHO>F!*Ac~kcIV_hi} zrhp=wgf6Mi@974?D#JOu(Q!bb@1l${Nv(9^nHb+W!Fr^!Qr!D+#HPL@}&VEIc~X#H~NJO%1VCcMgJ(yBvvvyK;)@{7$>Mzr`YcwH#*#>vmT zz-F+=)XUU{!BB|ZJ4YSE=cc}&V$Ftwloy##z!?aYipM_GynA@aY`HcNKQMZK>lAes1mk*Hk0Ib zC5~pwYdYpV{jn4DHD>hHH_lj&!I!5mYC*DlnLjwn;#nt@6tTWjQP%o*{xcFO9Lihd z(?r~6z==nWrs@wrBX5-m@@WM@#$DCnVjWH7*K{VXVy&+yGM*)n=<9qE)z^buv3lQ+ zjfqYAqAKs%Dj43Y_I3PKW%*LN^mJQ^jh~}8ZiRS^(CU#ZxhFWk=zOXKsp(DE!Dfij z?-kHQrv!Bq9Qk-Y8c!s+b_=Y33X;Xq3@`k;4oE;XQ)Vh|9^ntyudC6d)I29B028Bt zq6Ov=LHYzsBx<|$eAos5I1d{P7L`u z>ux0Xv8v{wY21&2jK?4O`=jV$JBJ%pb{1SL)ph5Wj(+6z-!KSOTl%^W^JI-Qqz+#( znw$qAgh)UcRH&gIVtRSx7=zStFb?}@56ls(PxTb8_KnTuKPjG_@pWJ|sdoP7hu1E8 zSr-y*vZ#L%dRJw&aH)rHHM!F$Qip@n=wrc#sGDo_-?MuFgyxBNs~1@rW;Ao zT$f5Kdz28csp>8#%;MHKen{!)`0s*GT45|XHp8koPi92XfSrQDPQZTNt+*-c00w!( zOe-v4YJStA_ezbsssi3=;SB&+MKn7{Ns}hk+aeTd##h7)MDGU4Lp>h-&n_Inw79(J zHrbMYDLR}LwwtL#{|ML{eXwkfk#g%XkJhk@(Z}E~acnWY>8g3Njz*}$u>jJP8kj<( zw$tDT{&w!3C3KvlEQj|YDzaxWHRVgjIFB?}s=(rj(Rw#wDso_sg^k!s1R~Qe9zpEz zV0S+sSY_0UU$?`aiCYPJ>(WGBj`D}3Ku!|b^EWg=m!R0rWW6dAzl*U#oO#RK84YXS zv84tP(UyDw{&ZwDk2c_kb|99Di@X^JM0JZz{!;0Bd*i!g5dwJ>(@SM$U=`s@`u7ph z$6K?C;{P86;x)Iwn^V)91q3)BkGSH3-)AKNBU6MWHmX+>i1$KyWn$WV)&9y>rGht`c$nKq|iS^=$*D1IrczGjUBBPV`VB=^MSMB zn|P!y)Z;P0!XZ+WZ++-M;`gq{LTc9dOZ2!j!jI}e;`svV>onSaNN2#*nvs+wphzMS9l+kZkG0gVu{>u6!%wzMV`WQ`tB1N=$UVL37A zyo-37HQkvfjO5xmwQjRXcSE|~ZT*y7vjcj4bwE8+fQFdwMZnads>6tMF@n7YX(ht_ z94iGA07xM9fWD!P((c)PlwxNq$zV;Eb7P=}2AcCU-!O7sHBw@WnV+%=zAC(`0{{So z+&yJQzm71pdISh8k}?xgSu?9sNvr7n&k&a~5oF0}zVX?S)h5w-^Z(W`>|daO5-fWL z?v*~_v##N{=Ijo1MTODh1j|#fH#)%We#DMRzV<}25rW=t(=aNVdxzaz#<5h4dt>T& z7gUaYV?mAD_{C%cUg8LeJ|9gsW5TF-X1@RKZ3-uvl#&62fmMEj7N3Id-a#ue=SfvVBpjpBYAz!&vF)0T^egTmP_ZeReo^Am&NGHx zx-KW>5u%{xH&(R5^hH%%Im#c=^}2IP^L8_xs0am3*W{+{kQRn{b@jwYdF4}CP=?!! zi$vl^ZF6hvIMF0tAOsK7Gnvt%k!6!n+fCcdvC0xps!WC`8%DjrMUOUwr@IlN_ zDePAWMwy*Z?8l7-2}a-r{N5Pl;cK3NrH6&zL-pYTwe@X-B0#WX#8(Xyst3Jp}f?7Z*tte#uo_;z*5^rseJ$C z+Z+yCX*_topF+3UE9jh!qYi-@432ExM=|~Ro%gYgrFLA8;h8YcgsbiGtYf~sYJJa{ zhTvegx6G%N}d9m*DMTHQ~Bpyb;Z=hVv2{HLfFZvxAOmPrElFfYsov?KxsSOsO4pj$MU)Tvch@pq$_pfpTPaZ-b5INM zIFFC=K9ZAy$X~9kDdo{R5kEOFM682W|4kPz*WefsE>6BL5zd@`U!C5)~ul31BdU@1%3G#plWW9+!Ze#lRk9Aq7;Wvh|NTuAt1MhrF9N?Lf1 zaO;HO8Beq(wO9tOWJNTmavgg^=)tH5cJO-jW47POm6(^Jg1WmC7>F3>I(rM5<=hj4 zZrvUpR;gZn=BI&!VFMSKWyUvVyqPgxhX@fz7d=zOa_uhZy5Nv|m|4XOOid~e{fKpi zDuv>qsM8RqWLiI<(Tv84YDfi8k!{C6RIjkCrH%hIJfHO3 z0A`Hg=m$bMa>gm@ITh)y#DVuCe#+{wiOFMGGsE$(#vD2RP~ngi>f3;LZVH%k9fmaj z4RK*zn1Ic6`Zkj4?E2#KCE493X@lTHT(?^TiXN;y;g0Ws2}R!wA()|_Pyi{GN3!yg z;H?{=#k}lQV=WaJB&sS7c(l$4%m~gAodBXLE6sp*&>>SPEbt-zNCqOlWA{;z#XKuT zmIOO+|F2LCc8Ck&6&l$u@@U2hAXyYq_1O^mw7L)jGj~|c(St)WAvxqaYc|4t2=e^1 zIFdIdw||AaAhCk8{%~zRKh9QPQ%%3y6;+}c&bnaa;-%r-b1CrBzfqt&M}|g|lZdjS zlSe#2Rf@gJ2`JheO@S(T6LK!^RLp^9-o)tr$W|TrUb+vIhO`)-UA&SZdhguS=IGn? zLrIyx4u6>3xY3-5;75IukA>wl9+#g2G&p4-W}%%BS*-I_NEhCby|MM^ySX51|Re3Z!vv zqypwuxJ*w@%jY|?yG_t8Lbw(^92^7k4jr8}xD!N2)eWNW21S~sWU}soK-A=FG=dUI zA#R6;(3GWAYwWM|SjiV8@+`V(Ln8kP17R(r|9LlP{v|Gu7zYi269=!C^|c5?nK^!v zHSw~(D!jXr9hYAoc_Ln>j*1vrKCQ3lFG}B}FgR9TtW}Ql1Hf&FkcZp|YkQ%RJ%OU1JqcR3S?7+MM)MXE4?%s`dYcYka|++6zD1_M`AaQh6G|D&@UD6+t@$g>e*R)K zGnk{{TtmC=;|h4=i!_0LAbI?(Tl1#~H50Wo!x2M>9GqZv8832ihNaL1Yh1cARwlE~ zk$G~_=qV-uGy1{f7Qyhm(bD)(*ERPE5I|5)(}%RAnWHtsj|f@la+Q$hRlLy&h6fBC zk6ol%eto63S)SoEJjIF>OzWnG3NN-DVKW>553(x_+6PU>d*N z*esE;S*gwl4i|R$b2CU>H~I%U4?hb=VwXA)+GoL7l|S@5vUMfacvcMLwwNB*UiaNB zPY#UW<^4!$=naVz_A-E>#^Z^U``V7**X(RJi$8wTR?1&P9wVq!#=Tcf;xDBw#fy(j zluzQ_f(HQ*)5{r;8LX|{XaW|G&&3=YS8K|i8;SQ$OD`w`yLW*#uf8ycQ_b-C_VrH< zQF0HfRcP~Bw{K-n#M3ai_OzIJ+2cK=-bdekx#_V!7E$e*dxUNlAp|@&CS9SFXU{|? z|1{mY+NIRw*+WV>3~?wZi6L@i!OWgsR=fc`5*?RK)Kp#gzI}>|SDFqi`*KnvFJ2ui zz^&@{#Vd!hYElfJj!}{N`hM|)K$8hKjeawO?2E>6wzsOz)v3P4@f8-Wa)vDo)V-b zibST1Jy83fuTz97Bl{wb`6#P1hszr7zxWJ1o#}P&M|~&-rZs$LRA3C@I|`t3+!YrR z0ijUFf6fbkvBfyAw3!b=Hu!md}wt zMkftVF}XV>U@~MyEz`4=_6&k4jZ3U5L$r$|8$>wOKY!8AsA&77CgN{kg@$P3o#)a^ z+bu#Kh8lNUm8FjI0&0)ZHG{rTlK?sT!nYvQgr9~R3Ki>mT4bg>J2Eabp0qO@VPWII z!*Vkn-mcdPl6^LGvCBD`u47fFQAx9AGcW8+8(=XKROw>{p}B^dDri7m+&ipp>-~s| zNlZya0^i}tszd{d4n)5xULM8gT$f_phoSJex{9#3oqbNy!f_3(3`^5SzN_o&>=Z=#z+7~2r^c}9&T5EsH!p5 z-P7(+Ww$F;enfjuZG53kSZu0SBj}p!kl9SBsph0?#KDX2AS3X`4Q_7yL+oYrDA%^{ zdJ`(bMOP{X?@sKJNhlWl$@?gX1-xj;oC>wo^+RRJ;ayRJdyJV8JsbG<17IRT?3rx ztF!KLpd)816up~Y(mRLE^A?awL3sEny>Sk!crTqY!8oS#~eke&Xo> zFC-gX_6YFfy@}Bm5-p50*^1DjCVZ8(HjK20D}Xnx#VCLQ{Gwabj{9~*CTAAXK$7FZ zVaky)L(?GcJ2LsrAs@F#C8gj9pp(CL-#@0M4ylG4hu^!r2j}!;9N+MEljcjs%UU@V zFz^h-231XlSW3h2W2M0UiON4^HwT&mM@7v@4t|weoFJ6jTk#(2^MyTw`S?9Q1Mr## zRTGhW^;QXg9dFMo1{Jg2+A3ee8-}OKWJH4byacR9XCf& zlzM%2x^}QKk`)DE#p@+H!cHHF3n52ydYG0~A5>~ba}<6^o$m`bq zZB1xVtAv5#R$Pwc?E1kq7k5H&df%iJjyS#YzLV|@4A5PLEbo8Sa&3>P%s!X&C}x*7 zr8a04`R9ilxK)01bZIcbGx_I-yQ#?nYae0hyj6Ycy%R(s5jUd&jZmHT_SC_m1o32@ zOK*;7>$Qu)Beo1o&Qyy5I+n9U&s_M=P(~ANb%DAuG9UB#`oAxwMu!%jACI2FiV->3 zy10}rxbtWxnS7$N3Z5j?4d$!siKL>7j~Z#YRL0Thzfij}*Q{0;XXTdxa;w=wamHGh z`idF-a`%$_Kvfl|P+X>r?r7II4)`XpcUAr73M0JEN;c(w8iQMbQWEG{p2!GJe@J!f z$$qb7XAQCI47Vu?EI~VMgjE-599dO$tOFcPxGH_e0R5Jj`VnpYip{{?BrH+Ej_{hG z1FmI4wNK|~wV?Vf-jv&?EQo$5iEuO%(`i&9?=0HS47csT^e8he0v%i=jy_M={J^{z zRx6*^2Pbi3@Iuv!GH^XC(svuHg{Y&|S4#&HD2Henl}qrdK?v8}(?in%=sv#WLrA5o zDSmc4<=Zq5Bsycj$RCM5Od{%({LUch!;qpLzUCuWO<(#c(WXWbU*zGq-OSG0m+1+a z9Q;hW9&=Tfn`;jbL+12(5A{dtGuyHB!~JBvKyF95|BRw;r5CM-XBe}!78h>V{rZ9v zyIKMgdwg0*ROke?O-%|qTgb)^K9bwVEV(`{7Gw;}qZyMWW1;AF-C?meQ>_643Ax)| z2t@Wqk8#H^;D<0U`2GxF$5YYpH#*st#8BP7TEePA!aphtO;&Syp_*BPG8qM@_UdZh zY3FP1rQxQTbC2ob`&?lyJn<*=(xyV0kA|+lABRX%L5hf)RT#$DK{WG2pyoOb`^Jt2 zacUS-lSv0rv)%uJcF_H|h(WjvFN)u_%)Yxp1Q(){U+a5$^P>qk#^6Ur(@P#yqzXi1 zbu&-;lsp1Fo7i$>REal?=@G-}TBGc~7&}OOKf~9ld;$TD+$}`FfDl0np5z=DQf3My zjetHOZza-@r`yfewU~0ilpn}Ak0hih>7!Mf`{&n)-8W>__jqvZ>|d01X*iJ*xDhL< zWdj^LNcEs-v+A#s6^g~A)-e{GAP+wb=ZH-xk}EnRh=~-ACa}tUCZWZD1kGB zU^4Rd9 z#OFOGe~jt0?tR?nv`5lnjxaG!^h&rW)H883g)`2!#x=GsU!o648O7kDTUlz9yD59( zSi9~_H#@1&QJ*9c(OY*LO&A6mlcCg<76LW<3`Rl{X_jj|ySqw>Uq_v8HmfmYoK$$jJCjMfYISN*3Y)6;G|n9MCV6Bt?U{_ z^_WbxuWb_3?`}19PRIeeTbVPcoT9@s4!1h$CLBxS-n)v>72m(c-gEcQz0Quozq-ZU zn$B>gW8m1S_M5rAt{+{-w$~d)^W9sHSaN1h?c8yN0xEfKbY&C*QXFv}KZ^@Rs`NBV z7-|&^;^TngWgw!3agK?Ubi|$78U042ab#Y1rPsz&jg+}4iaIzmlQ)uKPVOdue|qYJz!YNC^uNOtZrt*lW_}FT?;<9xqx^ zPbt;Zz8PP5Pv|OH;EGRdP42t33cpP7EGMvv_T~CT8O_j~0VLAy;CFrk*>}f>pr7FlNTF#D#DkOhZ8hS`NAaGJhAp_CV0+i<13vyFJQsH}Xk# z`|nvn_g`WK@hV6JjX(5@;iFK_vLBK6@FwCjA7RRRsiFQ1!#F5Z!G~FLKUOxeV%D9- z;~XUawW_7&Xo+|=QRHFhQdFC#5lY#tEJqGWgtc7B%LVr1L8FJJ!VHxYe0bQphQWx(qhT+ZjxuKHS|w-M z(>~W6Ik4{^S1*E+k?IV@(t(BKaIf&LW(Xe!9#l}ICY>M&;?J;P%?K-}rku>qveMZuG5|$AktTl;7ZpelcYc;C%c>*NAKEhkFgC>c`is@5)9Z-$@K%)&1 zf-x<{bW*(r6Y<6Pja|l*609hU~zO1gH6r?l1)_o@l7ESZDz8;@>=r zMUhmQSkAXHno~7f+I>QcK2{583@FwReFo!%s4U8R!F&&^5_0HE&HTgEtZQ6lq+E)V zIix^R)T*(XSqTlK8W<7XiiWJ*o&)E>9H|hv;Y@={cs=-5MkukcQG*rgv*fl#lLhDk zk#FX2r2yc;%rw3%CtN3YdQhud7I9P&1Mv?jadna46bo!>nbDvx2)_ z;k-iUJ~v$N5KRZkzxhaX0jt-U-Y&}TSqqJWrUS~oz|$4E@)N2>afbRv=)*%B>)V1V zpmo$xbW(^Hn&+eiMvP2By2{<5B*Tr9D=tj|`$+7XW!+5~N4!8{^G5D{q8r9fOWB@U zzGU7hw^1of^?M(MI4vzg^f=&+Y){n1w*aT-aJG6Y@KVZ>z>qXiLV@0L2pcEcDR1OO92)9( zDg&>NJj2LXTrm+z)7!QP*8i=c*uTIAsVxjweC@;UQixmBgw*GieruztfVl`mai-7e zcJm;iNrB-qKYbrl(djHbgvLa2F*o%l5WX7uPZpRCsQC86zJX)p(qnrXmTdKGktc-; z+=PVJNwF>a$6uV-hRideLW3Mv6{*TVBZBy{j!Ezo4j~@O&xP0OG8|`s^+LbM8O=6U z*oJG#Eg{{()?LMFqz!eVMJ2)|t}NVe9ekJ)(ux(@9Xuiplkw!%7h*PX*m~0!-yWP% zrmq;?&vlAiYZ08n>ts?hXr5*Fb|QqdBUr*J>)sjrG4sdFGan!b+V6~Uny~`RmsxIc znMVP}K1lc{4#OU-Cj@~i0)fwkVo4+b!lf~D9UBge~(X5jp`%c2{+>>x4= zDc-~Sc4TiQqPcCcq}wwjY>3GPUF|#{Rm=dHr*-8NFjLNMMFppz6rnVQz^+I_OOb&- zQ-;=_j%h){Du$mYcQT{wp6bnp35dcA8Q*Rn{gOn%eaH+xcDWGaaNd{eetn4bj%4)p z&tybc;D(UlY>0H{Zm@4JLbVv=F$1esf#+>#x@@8UDPoinEjH8f1d|lON!Ks#zFtzR z9o$~n(8wnOt9Xjqp%x6<6;1~629RQ$cJfVp)Emk@f~$0{1coMLDch?ZOCqHrzJLJx zD_{ca6>+(Ho7uGL5$@!#4_!dVz!YBdK#cgZw2j6qo%Nk$(kvAwJ3gUZ@RX6JYONYE zJN^U2%KF@UN?RP{EN_qaK+H200Q4pHRS zmvHZe%wUx0Y^MfFDs%(DzdSc11{j#f$qs=6QHE7u|NTfTU4ID}#35nrF{t?opnAGO zS19}oV8HY`=#8Cst|mfz#RF*#A~_t@+GE6Ib)S532+;(l?CohoSc+L zkG0=Q|AvYHu?PiP)Yx736oO-|fi-DF_+GSC>ya<&=Mw5$eV88tQsN!2LBIaIo@ao}MA*^Z9vTG7{1#_asEVt82HsE%h_32R@dm_T z0lS<=ZkJ8xRVEesf=P#*tcF_!}&p>(z zj|_IMo9kmF9^wJ>x;9Gb$vh16!?ljcfetc|9IqPY@y zHV`4WwvUWceF3K+8eWPxDRbNdT&a2ac5 z3C+`hqCy5IbAmu9TtX5^uv)Dj{Q4xDyFsu>%Hf8m&7jg+70xz0|RsTBpf-JjAJjGzuxyfpUWQ zATFfdQ9uJWsGFI0MHiG#ETqh}DW+;d?mfg9QvPH4Gf4V+xrJV9MMa4Zf@R2b{^Dx@ zvuJ|5aF~A93MHlxl3e6``dBMC`DbO7TR;xu0R~LJ9=5Q2^y?vbyxUB;kgyF}i^J$I z)Gy>K1c9@v^)lWtUi42Se3i@4o=z$~F7qc^|gC%=)zthZnsAG<`u8IpP)N zE}x+c`fxsbnnx?$*{~^y)NhLR59}`Xg;OWeaEAiVcd!_IJuu9;)gcMmld2%0R8Dj| zJ+(_vx+DF@giFEojL~R7Rb=)k`>KaUUmoWDMgSxyM#(jMSDC|HZuX#F!Wv`Jw0-gS zSxMJ_UQeD0eKTkU?X*D$RX5qtFvJ2ez#afxahykl_z`U-=VFmsNc1Oa7fG^<=7DpA1*m>+C;jK>ps#gM{ulExA-k*ep!E$>gpNY{gw*kr z-gOYhAA+)|b(~1u)Em zHX?PIV-41*%Mt98cu?HU46>pm*b@}yFEdseGJ?r9qca-=3{DMA5%twY7Ml`Ed0>GK z9VTcMSq6X<1FkrU5+E_MnN%oBE8oD4dddyO%X?ELqP4N}9@a0;xvIEz)R?i$T>?8Q z&Cg^J;?JNIb&7&9%PF2V`4^_*mtLTQQZ<%SV>&wRE)F~ttx9W=?eiLBr*AF{_vuv zbXNLtAbE7p*b8oNkQ5biNW{uL6$64T4-APBia^GxFnlbBlgbfLg2SN9!4({0jIT$| zZThLvF672=tH6qy8WWCwhOA^0@gB9{hjTW>w#+EE_A}_a8U8A}ECwAZ_Ky@=DCiZL zzr|xy%;)6srVl54h1L9A<* zfN8bK=RMe;9m&fDu|5tUY@58+*NI#ByhVDgSXY>ecLTl!gxk8QenvRTqA1tl(yWWT zR(kNF4<3+-H%hv@drCzg8|C1ZhdWmzi7GMkZ42(VtI)GD&q0_@pGP%`yn;aFG7awn zdRXVSNsbgoLYtuk97UXS^1MiVzC;Cc--MJG7%25MqxuF2Qp66c_&Dx0(J#cOe@0v1 zL5*M%rMmDNkB}07@%G>4Xz;NYsNLGFnZuPx6mRw9j8-q* z0I1R-Ijms*L2}t_-H`Y)e}&EL0P|G?P$_ZB4eJ9D7y`mzo8H}CHcC9AZ3M?!DqoTi z$#mX*W5f+>-Qz_GfOj z9p;d*Xqg%gPT&SX5H@jCTxwjASUK{MgJyjudfyKCBtC-+p90+S@#^k~m8);|Bqzx~ zy2WlqM)bW{zg5!0YtYnF*7yq=B->lw8rXM=#4p6QnwP*rhb@WN|Hg-h;fGF&1bAke-VQ^BMK$>47&N?rs+)tJ% zMCsgPGNznUfd*|hwMz0KUQs>X{fLs9ve1yMJlP-2r>k(PC+!p8gTNZMMW`q%&nBOOU6tq=z*_;AzzoemqUgl90chk(!bc znJ9Cha)u8reL|#Nw`rmKH-oDC6qKSGwAWS9b7?_wn9>xU%cIrgR!HSueW6@$9h}N|3 zh?UTmv#_^F&fWTmkN0+aQR%pCRLNcb`yp8RTf`uGeY7Kp$a){?ZpaIYF(+>Pb)-Z6 zMkh|%sPYC!Gr%VjyK3n48KZH{?O7obZ}%LitLZ-9%$Pz6i}e;6NcWK$paE)9p2EZVZz_l(xA%Qya8ehOK;r-*NS_7hx*HRvN+!k* z8GVAPugr$Co~CG3(0xyGoCYcopcUY2$YUolfnywmqALfS2XQeQAZh~xg)7cj0P0FA zk2VCRDUNqJR^fpzQ{kMnlG8sw+=@Lz(HoZ$Ee21QalwsxC>Vo7x%Ww&CVw z7J4ksx1Ib$FM;0v-ICG=1+#>vV`Cr$)XtdYr@Yolm))rp&6+u2Xm?AERF4ars$KR2;-fa6E2t`;5C0x{(f(emKe^l?hoyf``;W>b z@Z2<{2EnHz6hW9BHLJhXWRGWyL5r09)^uj2df*u#2QWVAI-yeod+$L2Tor^;JW@l1 z&(RngT@d$??ej5YZTk~9k(sRRRmzEfjm&Ab<`ypJ*BES-mmDd|cHus&1w8^Du!#Ns zjL?u$nKn=h{h-Qr_0p0EZCcNd70V|2daCesqBxD}inKCa!mle0Z8Iy+-!>inpzk#ZqD zxL-4l^>Y$KL7Gv+I3i+9@=G&|m50bYn&Qnl&7l7}u2FZVK5oSxp44gKvhXG9jNzq3Iv-WlR#PwypqH}Xm(_k|5On@D3=EudgflW_w zeG4bGEnU%!uj<>7g5m5oGFncDtJ>cpKHkG<{Cw)e8j-c8Vchgc5wc<(kE?Keu`xFP zLkz303XV)5rY7``yRR>2Z_Ay2Ndo!dlXBvxx}68|pmbgu0KA+d{SUN&(qAG4A?}2+ zhT`W07OA74b#bkr#PC+d^exsD_T^y`$PRWIIW9Q;rujwPMjPohVZ0$e`|rL{?w z={rvh4Gs~SKDQ$;`I-VQ9wx^m!Iz(whJivHLoU%WE%t=E21`e2QGtn3(y8!oZfUKh zc-Ao2f^U#$+b{G$2!8P9z9fo@*p?|>+)Q-EI(6mB? zDXoOz783yt)X8zKy2bcmew0iaV0=rr4vdo@(i`5-tfzOsD&I~>3ozJnWZGNqk2x#W z!;klIUu0Rfp>7{}CL0;t2RiD1PElnO1*O0e`04-wi+;Kt?_Mz~nNBZ8*$n24t7OyvwpZ>~bz}bu;XsWMZWD{l6hSbDu zn3~N~?zeMXM~VWHakRt0a#*RSXI1KoWAXZ>TUEbO1a>cgF*(i76OhVsg9t=8^Z+|v zAVbsEI!6Nu%wp_QS6HW+B;~h)m^@sldRZ-;h$khV3%J@*BCVHZ)w2yvTMXhpZ`WQ1 zP+pB!{CZUk2PUN}hD)s7+rE47#YnB_?Q-IbcIVVKyw;tQ2~&}LA_5=B{f>^fGKQCU z?Y7(+aCUI~j7Tp~M2`3hErObr=$UVcjS4dKnRfCI0l>c0QB|;U zPSlK;oJUOATwdloshriWrSEIs3auQxj!q+Kx7yxx>JEe&A4Ml45W8-88Nh*cB{4eo zd7Tg^W3b2I&&xBPOCKF1I+&@yB6^h_M=N+ZFQjthB`Ss!w5PXUUdd=$bA{pMlzrvN z`c@<%$-(8n=LLN&g8l_CsA?#}bAasST?Ek_BVFiLs>TZef(N7y5rf~OeJXLt8OZ;? z^|yIbGzI1Vb5sFY^}N-0I_#?n(+#{rinsjZ*KNlib6=_;i)NW?qjrS{f4MWx_DMP2 zLqfVK>?r6ths0jhb(BY4n%pLqjtJ=odY5R@@;0+!rQ`LukicnA^NT`R!pSK4J>2s= z7U3L?0OF^S7UD0d@zN1w%uF6fbs!+Hb6`lqb3e~C1WOqfiGWK&R3y!F&@zkp(hX>j znG_9(?zs(Nr>x6?)}r^ugDeb0ECrirK{|1WjyeNU*(F;*czCX}f@rhfaXjH!e=QX= zT!d`qGq&3>6S^`u&ew`JoqRwvEkz@MZrc~TguSKIB1|RcV?JiL)Df9!GSV%J)nOLZAQY}eGvoCKaR(0pq04Q()5f6TXEmu2UHl;a)zeE7Fp6DqK9 zmHzNF2r%W{XBLVubV}}XGFO<8A#->=-5kBPX|Eb_fXu&e7-s8DKf9vcIN|5oGO9GE&jv**g)*x(1MWQOW88Zmw8x|gpRP^+20b!E&~dXs-_Wh@nyihL@`P>{Sja0UA$B`d{Jl?d>3d*Le7WjoHBCl80NXR z9mPnTs=v>bNJ3_bxQqr28TjL8Nl_(IvLmpw`Y@}UIRjI)*PK@g zJF*N|;hsYuC$>;`^1o8AL$r$K zG-CtYNw9#XV+{x&=XV$#1?53{I*2KOwxQyp@R~7t$7xU%#{pzIJS1OUFtdYj4bUSs z2??yXvW-d)V;`-MtvnmnZPOl{xNGSG#V{1&5W_Z1Ht`6;G`fZy$K}t0Xf~Ghyan#< zH4pnrr+ddPYwEeaiF{g*b>gnu6*zWk_-E`gG70i8PhryKz1oplRw<+8Y3wM9T(Eb7 zZLsM$qi_8An>MBl(L~x=PVo*X3xTwSd0aBzd`AjEOoSxREr<#9q(25n&X8i5_l!3p zr6E+O3dbY`*y*FNTh@u7JyD|+)~lfEPux0CD(2_?*~*m!ddbgl-6waMHb({&W!dnB z*|fY$$W}0Q}LF_AfA&y&Q50X%D zuteO;OjCas+d+_{S@J4gmG25bnYq7{VR;^JotUOCL_#~ls_AU{&-Zexyb(m5)65=U zT-2%eBaZ9DGjd|ye*Aws70ds}hEP6*&|g9Y!Aj=YxVACnwX_xaB$d#GkM=BWO_UZM za|WaNeaK6QVr8b9-(6uC9iM_*j(5nTn0+f8_M? zFek(mrNz0WU-H(>E=y(%`H*UCL9n%$Lg>xV?S)kmD=RAjgv2mXUE1$O7>Vzbx339V zLY+=o%jlYhSJTH6p_i?9xo`Wf{ zluSfgz%l;25asHGI6b5!60Aw(F`_+!#Y~#VO8m9oG6dlRS7`ht)?}^aY+g0K4<4Va zNN#&gvs_;^apV4w2+7Vyv%@LjLlGo&oMzZ)_|UYXpd^LFLFDkENFoO)P~=OZtl25^6J$csY2 zxN!%VKkG%pYB`kCcE6(snd(twXee~On?me>SWUb(_I%;6TDQ_hmd+xwEW`eV5N*|6U=m4@tkc~rB8Y-Roa!2*LBbnd9 z^50@XQNCkY0|gVmuM0##oA=0YnVm_5e>7QL&~_$mjvBQ7f=${qCeJ}8> z$U+$1ILWJF!?!4!NH9Uy^pd!AFy4<$o9T82th4p_&RW4*+vjmTwfzqA(4M4px#^l* zFL7>y$U(q1U1TS!!E!pH?D&V6QOldb*cc>mm9G3?tuN6rVfuPwm^xMkm*CLu){4XO zSi3<-B&bZ~Di1FojOSLt+gugXoo73f<}4oCLxghjTM;9IHS=5c3|GL&=o*Br{sTPvZwf7|cbh{2uYn6Rm`_k5i;kcS*9iL>yJziYCw~pyhR0 zUEhBBO?#gpfbXW{?9s>Obr%>My+OE%IyPpEB{tSzi=l&yOz8x(Bd5Un!DI5vAg3y> z8+RD$H1o^BQ-f_@FK0}>2(+Sro=z8UyREWA>`lMxq_PtzjZ4ZQ?+|^VN``43P#J0& zj+LW$xqvdfz9lEzFs@ZKs))OZ4mH9bs!2wG(bG-1?m*wrn~0CaIv}Us^xGq(KeHA_ z$1wlX}6ieObbF{AmML8%)9A};&BqdZ* z3BgvT}^qIi~un5P7f*Sr(K-CToTz)^q!T~;GagkXe2phY)Pk^cU`CpZ5b zqQUo{7EHcaiRs8DR;l({Clo-5dz%Qxmox~d;S~<4?>17YTJA5(nTrn4dK($Mgl|V- zbEpfCn5Ic^oZnQv&)*b##QI?Al|z6o7ED@iCt>>=^AIiGT5p`A6eF=DuI7`^f#_GY zm+jWrov2`tj-5vdaW*E-!`#7T{q$J8O`<7VKTHB#OIz3mg~~f_GnyMn`tFcJk@&&8 zo*(Qn=&|7Dob9`d^gSb<)@dqoUPv8Ot%+eQ({^HL7|__!d1X)DM3r%N9cCVH6nwSy z>uWz_IV@!JGI!6DY7Bf0mq(yNdFuuLKe_B5578E=0PS2K;S72BC*+1Hfz@*#>E`;2 zcvIQUux-3WMUuRUXCE3c4D-MXXsAS9t=2m^ZBB1X_&J5No|&RPC*Amb!glcmNA9g3 z2%1c{Jdj7}S7k`-Pp7am85j$7Q~aVN(RwAT$~)s zA0r@nPq0%&k&ae_9SUJ_bR*!ri2OO7d!@)kULMAp&aoLg4Tt7tJn%{JEl^b)r>8iI zn{@WOo5d_=D^jB?%B#<>8_P1PGt!K55RPx*2hpp|pd~B%eC?5tZjNLLj4^0F62?xF zp~hQ0aMRM=wc-Nsxm-6%NQCFP~EHmk26Ei$D8W~E~f z=S^q1t1DMACezGQIN$UDdeh?I&q#h7PV*7y171e&Hiyeu#HAS7)=&rxG=i!b)r8Z^ zx>v&Z0+C{E^f12y@Q4tJ=txSI5u!xmvy|;V4T8om4-7M%Z5}l$^Ed2yabsYlJ!`gtlv39VCe&=LX8KpY0pzUttkf}>_gkr}$uD~Y$w2`v_G#vMq9O8Aob zHkj3zusi0K01}-5a|+KI+d^Y}OrI^*QMJwi29E0lVUg#+k#t-qP6!=~;$19y|9E%z zQ-$9UQEL7(ELu8Jq&cWKzn+t}Q|OXm=`0jjPNkd!zEIn{VJvvc-lOy9L5VV7*1~-F z$50~HqmZP0_J&I4YNZM_NI(t`S{7$uMv@offfxO*(-B3e!KgT@btLkd$UODI5UTfX zr?mMl0QyPOnj}{#@4WAi@48;w^W zUH`+syno5~szUD!6}}E@#mj~0;TbPV=C{6~LU;`jKx4-|`hX$3pmA)ns{)N~D!nH= z@M2G;>@NKs`^MWvQ}pGo!`s2zs;-nH8`%p8?Q7P)tlEKrH`evoH!30>;6jgVx2dmp zRe53JxJcUtSMdQP>adDB{)yiJ4%b0Ttl~Pxdz_n*qNZ20xMHnfWdPB+R;%JC zM83n)EbLY%lOj*ATUbn}HTa)nbx>A&;^}?x&ImLiR6PLDN(nkNw>CTptr5n$@sfY> z%w|1ThW*Hfyb1U2;Z?$~2Pz40U-9En7|~4VIR>AfukUwB`2W~2?EfwbqMO1QoS`K2 z{inH2@ln9l)y+;k&F%FsxYuhj$&47EwGFPO&|zqCzPaS7DXyuTZ6_z)RLM5h&9xzu zFd3Fx5MrUN;K#0#!7)(k03)Qy&4YQYK=dmTE{K?)?tDBMj=EX82;+D!>yensfFu=a zxC-egcTx~@iFOY%0ha!CG?_K}jUl$h3u=*c zJwIzb@$}7WP_g96lk0lqYDeU%MOZ~}T;I-=McBvDf%fH*eU@8_bCbEi98jTv5RRgV zYJlZ^g5}885XfFZ$I1-IA@L}24MC2B_Uw|uw6-VYrPIf1q}TK_*$AxU;Z#NP zP8seuB;u#&L-g)~I4hLx^5Fj#qM?!iYJ)C)1t91cC8JD7^hUPrJlW3lu#jg#<7;u4 z{CF*Ycp)Q4lyq2ZH-;)9{Accm;^qERs63m#3c#&Ocn{9AqCkq!q%t&BX8|7BCmfZzivrB)wj*1lBFezjp?Eq-)Z(%xGrb0k8CwMqrh8 zR6C7TkoCpTX~N2w|Hbr&X&a5(4R4H5MHeiDkzOocn&0R~nEs3<4r{51q4^}I@bt8k z+6of*(oq87kLPO~M_w7KKMAw4B4IO1{kU16LKRLsA5%N65zO#{@_5`2U=1*J_1Nj)7LYk#cOf1%G0qTRVNTWP5>RQLVS^ac zRSq<2Fd8q#W`bD4dNGd2a1%wNw|n(l;>hRw7*kS~%=r{gASy(}m*egJ&&ObY2^6GH zo29Q!P*7fdASMF{bJ@GTcwg58P7?-d-}O#W1vXEdrYu`1Iqw(U<#hmY z%`ZsBCD^DfG(`<3PFFsD!LcH~c!q(6fIDKj_hH8>xw@TYGlor_ASXf!iCKu0mnODn zRlJnbr(tf$igHJkD25(IYG6W(j;%fs^Aj~^V(Nz4NKK(``*y;fAjH*P4|IZLKvW)Vk3;kA&i(qS%t6;m;mfR2a6$& zW7{CF(!)ZL@X3p=<4;{629}83B_FMC8z~r2y0BP->K90&5K=@C$_f7jWq{UXI#-m^ z^*IMqgr{n8PZ+uY%=M)<-JM(1q=yqzrQw8bs$>2?Km4Z6Fs|0M%=@<~8zuy@42F#N zwl5}NV& zW;8K)|E{kSCneXbCNt+TZT4swnLVm1AqziqJ(O@w5bDqtg5qNnhHU1Yn6ix(lN!BR zP0i$GVyJgpG*_}N?uQx45I*rd92QSg#KJ|5p1i2?06+Snpo^m7Zv&v}G(}6gzUEsui1E$De%=nGeU_C#9u9eKW7U}lxx&j}?J9E&8 zpHKHTqZ9LXy}{wiKj~joKOBjWveNqX(tzR{kk{$kQM4m--z3CeOmZx)JlGuRqN%{N z9`eln3@VAcBOddmuf|!N9#lI2!Nj7+`q9k9RBIqJ*0=MwVxS5{!++lb`b&_YP8)&w z##CYbI@VpvxML}%j(DBxDAeh-AaVUN2a_cE5^+6$dR{l-uOEG>KML+0?|YT#C4L=I)0Wv19kY2w<7f!d3~ zI`bzBX#vx4*h`U#!HPMN%L@$_t(*kp6#q~@E)~wB>^R{1EZj!AvyNV@HDMi)ND=NG z@F6cVqDK0mzy=`?;cb@J|4Kh02 zVupcKkmX$XLS43gUz|Y)Z_zrifFp`UQ_edM&+8Lc=a^I2kQ?gAuXXwZDS3+`7*_$& z-c3kXG>!4~bD5jMeBu@s+$#|N?#PelHcS1?_{|#kyoFcQ@Mu_!7blL!)GKZd$h{;C zq~(+fDk}YyHi^u6tP(BeV(ZCowCB(YMMm}K!>^x2ZmU?e#f=uct(6Ea%#6_^$_m7m zvLX&yobeK-EImkJ*FdKZw}lzO{v*a_qTG%M$n79G+f=6EWqoXAs+d6Vw>UE*u%w1S zf#qEmkv*s@bOHW_z(?p`{?QUfhlhD!Xm?))5cNG_ywEPj{L(6xd^GJmh(|7{Uk_fZ zYVZA6C&&tHOBN`8as9^GmCQ*{)6q(6kZi~eOIKa$5TBLY9 zpKMZwXJWheaokxL^6-Llms>p4_~Pyj$BfoTlVgilw>xtR+ap?DT2a+`A7hglEJa%D z;XHd*`7KOCLJ@3Z;#C_A&uw~VP8D%F%Bvva{5XYA#VL9C8zfr`))$>yFdDo{^|U6q z{OOc#zU(TJWU97~7xLdV-n4|m+X-qM)&c_E1g$x^D_JgdF-JS7kdSYWF=aFmQtgAg{ zFUCg)wgAWgOz!F3ttgHO;O%jLRnbp*A}pi&sbwe6DFbx|&Ev23fBt;|^nVuub)^ti z<%lcL@GNYoEf_l@Q@-CbFgg_qhr)B1-t+xReNlvq8sFe&2o5N|g>j9B;NXM?h}vOu zD!a%Km;c%B71SXEkheERX4sU=2!V&g<_HpH>CCaTRpr>JXdX5WbxrkD4cy-M)`LpZ z6`c6(j|DWB*oiQv_aaCU{y0lmc{7+)3}lrxj%*~D&!I_Qw1psT+$?3yVj4y&nqlPZ ze+bKz9z3nCvvShs0y|xfAwr&aruW?*YR1EPr)AsKf>@{!cSR6&?3c2*F)EnxG?NHB zP=qtAk4i>;HBr@_>2b5?(aWg$SRzOu;v&~b=U^U1Ks%35j`atcu8Otf+-lC0?44D$ zZ1&3uJ88YyJz!9*Kb%D<6mEN}1Zg7#zPRhd71p?)NYiK+v4`BU)K!~%rm{?TE#hG+ zjHSXd5)LDgAkh@FTL1II!yQgJlwK6S!Fl3xGvi}%Fglj_=&c&PoN{zAuDlu8)?h$W zbEO>+&Cl~VRT*Qe&aahG(PC9hLbmgVsHy_c-v7tF%1iWF^coJt-IMilKwG`j$Z_hB5D{PAcqC+}~e=}(azG&)#2UVROoI8>+oesoM&LX&+q#>Q|wi_$NO zX7sODefZMMnlKcK)RAr5L_|c~jwyIRou*z@=j$Q-&|M)jIUYsTDeK&E(%yf_yF!2^ zzQ}V$*NZ_w9y|SY&NH+it8n|)R|*?TKkhy?kMht!%bpx}=GVD~72kJWkYf`6T4|eJ7m3&;13Wb*7c&92}pkALn{*}M6#4%3w*qjL9eMosy@9uT(#J3v+QmETZ6EF5g3LPoE|ow z*7>f3P=e~(ai?DmZp1^tyU^BLZ(8(_l41zi@r?mX2dzV?!#D03D*$=&}uzS58H!k;I5{ z3e8|Taq~A;GhBf@WoSP((4wsNN=MBC#);|+!{$AVe7y-dZA$HNhK~va2))%3WenUL ztUK+l82VHN5#Z>x&uKe(5qt8Q?<neKQ@D4 zE~AFul(a9TL>^uwNP`#iO;sh*kEb(5dE~`{_fslAWqW)`qIC@=P&Ks>BVNz_$tP$+ zd*VJnlAb2x;6?+DfKD<>l6de)Qk5ph%Xdh*2#n=h$j4jE&;_k}e-b|Fgn_r~50?kL z>Dnq8Vp$Ma)D{(8(BtZ&p$4vr@I%1KtdJnbVa9(Og$SUy*0OaCk^}psVWP^qooBV_ zUvOoCDVeuO_BW_<*D_U{3ftoR#t02ENoNlzX_4UWo{r+;rNg91Q}yy+LQ&mc=?g!Y zzZ$Z2JcjopNXcq|Uj502SB=m6KF`KamkG6w!bM^oWLfIs`+NHHLyXvk5)}0G$u_UT z%4wrFgh1MPU}ldAt|IPaVp$FsQcD#5j(m*tACKyOglIjzIoDd&Z|13|)Ajl6@1;cN zsq*ycI9aaK6^oa(>Q&KSMScnwbYzcp2b;zq5oQBPK}WtW8eBga@*&gi^SHROrG@am z31yx!@`s9F@O!}!@cwCyTXh|qVX8A85=rsDpM~YW#0KhI@hUI@2BjD41O8tF6QCjX zbGTz%rQB&Xdf%a8+~Hf6;I*WDYXyz2?G4j)ji9Bk|6q@IGD`c=?J&Z?w+}zfF{;Sr zDrLe&Xv^*1#{NhtQr>ieLTbt)*38Kx)fd^SeKQ>xKaG<{CV@LAbh)#Lm| z(0tj~|3Yv9$&gO+t~ysY(JA5x4J=pujPBILALv13m~z2}BADVJs(C4L1XnF^gesBd zw=w&?Ni2tr(ZB21G?bCeF)Fg!AeF&8B+Mb^KxA_XFJH~+Vbr+g7B!+&vE&zpGEqUr z;8h77tB9*1qW^pWcEbVY35QcpwdlGd9n<8_;&>WC($vQBlC}l4FZaf%H~8sHf6@p= z0bLyQNSM*=Y+~L3)pC7-GY*4Jtln)lk4bR>htHHi%u9UoprJQ<-W-|FQ zQtrlJtzNrlev>MePXipuWj|3E0?n?+a@2|4Ag{czi?ClC73v(&J!Of zFE4hcXU5Y zE+API$y5BC1@eYnHmz944uSQ)Dah;FqY%!7+BA!D=sayXEsP>1bW44)XAya1xB+8} zAun<%a}U_@>F7hwl{ak$$XP55^NH7l$%@6qV66Cz8-`@{p3Dm&Kciit(eSp%!)w8Q!IRUYAN87*zHIhmWJ6J{Y?j=N4~ms%d9BPgq{4G zej8x`p8feWn*;&PpncY@@*xU`5|}l+&^6Hn~(!jc}h5CJH8ZuCQnCGT0!jh zEvT^7JS+ps(mkSeMKO2JhQ2=rTN7Vj@gecdf+y}u!JbD9PP1YyTP}Pk5g6rcoxJ%u zk?o*jFD&hF0Iyd{C|aLY0I(N2Fzu%xvhQ31IV)OMQ}y61xa4qB;txs#p6E9=!qaMjUbA+bRxw5bb~tD`GN|J%!~r2kMtz14)FaUo>Z`;(Zp&dpcJT^kA0VCz;g3*$O|TC8H=q(2-J78!DoU4t3QbUDToM zUbpm1k!W_^Q%e@6X5&xT2XMEc;&2^=Mej10ITR0n^Hn9 zd-k&;RPLs>b=26a4CYD^6Jnfh*#{1(xu)lpKo__GkwaFdq)HN5g!0;Qt5`6;Z=%=$CTkmQ`ECSmlkEFZzGH`Ibj|B& z9x=$hrh1t9@Q)LKBaowJ>-<>JGDKWO=#|{R`e~wtH8S;ZsQW;Y_8|N;V49qfWESkm zn5_;XX)s9{cnXCZPK9U$9!kpA_r_W?3Muo;CuLf{PZA7GV&n30Azz()!`|z!L0Zx|H7k5V9PZHx+Ju+I?;4c)>yP1h7(O;Txghef_Tu z$NmK?h`Be%8sJm)?SLh+fzBldvNtdhhYGeYNh4c%EpT)b*CI=!NiCzV0FaOWGzJe? zV8{y0p%0cORUYH&G#94p>;(OA>X~KUjJ{Aygfv&t@|qM6Cs~1yN+Q?CAFW5FkQ;yF zIPcNe1)9KNBe?^O`gO{*ojvyFBUEK#T!Fs>&9+_>GB_x{W5|^i+|z{jk3I_TV8VeN z|E|{EQ)xo;?8{Ij{6Kyd&NR-uco@)TTdAEDsRu~C*iFWu8_d;hA8^NqaPwg^)&^5g zNO#357CPq6)R>4*bz37W1j7QXtm+;#YGk_HH{BQK)fXkVR!wta1c~HakdaVjqc7D} zuVG6kD-?D!hM!zbfWP6C~6*o13I2Ts8()F-U#6VCQ`jcS9Yzk+`)1Ya2zl$8q!*`M}9ufpuEP z6Nz_V9$%XbPfCA?TfITO@L|C@{`14@yXU8zrwJP)u=J01u_=WJ5{ED45T14H*a_40 z{4yR>Yh%?gxHDfdJ42ZiJkNXZ`7s_tEuqNX+wofTH#g$#HO}Eg3l+25&?y)9t(_tsP0zR7hKn1)<@uV5b;H8~B zW;_I$(AZ`rxjs zG9_Yx;ClN*P3rKrHR_?mR$v)D&!_JBrZvW(MpP>jr{T{)XA|AdV{yM3j&iJ^)9QXS zlp(a2XJWPPS0?@mfw>*TQe{{5-93VnpN|vAv1?)Vr&pT}w;cbe!1yO+9y<+0Y9%Py zl*;JWjHz;Z)RZ?*?ajMLjn!U#NOmM@vR)Myq~RcX_AN?Bu8>>O zo$y^=41Ylm+Usz31CDV_M_8*9fJ7$;Dtd2~7N9qx&r6@Qv#gZ%TpGYJm7YknOgR2d zq_`xu$B)lY)CSb0XoM-p=j?KW;}w(LGAu@91l6d7y2<)jXN2Zvo!k%n=W7(5bNcCI zMTL}zCj2Gd91I`7PC%_LFxpnXb5aLGNu0EU#lOD3F~`ell)~G|e`*TRn!1IklJ@FZ zD>Q>8bOCb0d$qtBp?z3q)0akQY>R)}TIf$`km!Vv)t@{AhUswqRDs0Vp8o1v5e&}} zW)(s`_Z7bzHUm+lG(iB!(mW-;8+#(RBI z{tLUt{WOV)M&r}h6JnJ#_98&Z$)K1C8N8L_!D^ShTb(rZ_@niASA}u3LQA&fkMbS&*=Ep+j=%^h26F&_jmY<0QFig91Xh)^U#xvbY^e zGITd+4$1%5O7Ph9IR&h1m5*QT^DPRvmTW-yNT$^t5~!tDG=1Y^hIcTe7ED1=RvpE} z$Gf{1B0Ab8UH$jHpz^n%K}`qBi=MI{icw__eP8%GvM>5)e89y z1;Q<#)a~MuMk9#b3q@$Li7C;*LBBF>=lS@l8-}Y!@g(qP@58kHw<|sQkn_DKGB{%4 z{vZ+CInbmlAXQnnEj-${1WClOm~M@Cew~jL{t;)rp^$T&1jJw* zSUdP0HUZ^a{}7z2S3bPZ;P9xw&E*hjf`(W&mt!)%mJ+9h6HX&4cC3MIJlh#RK|1g$ zPmpm^I4&mA$4-=iIU*qN39%`Ebk$8M>`|<4;?vUi^*_vvY5=!+?m}w=0~2e^a4!m$ z&Ls$e4>_#ugrec}u`G{Ql1>E1;oD6!^?c}JoO71)+6H)pI6);fNRZHm6lnceM!TIx zmzCP+m@#@5_JBCllUATC?_|FmgK-UA({WmDns*Z#saw>}YB_PRC(7(XLy%C zj3bQ){L}_vSz(#q)EUR`u1m00hC%V-O>Ttn;YQqh?&pt{1z73W`+&cXL4!UHWp|Z2 zKKdb?cF@n=#}ObH4+B?+I#4OF1r2qe<58zUlZ$H4c&s&@ERSCZ7dnLnHQm+j-=bP! ziE!F^iI0h}K{DUYL=0gNbyU9}C|?#~lK19teL&MZ?T=rG#$7QF%{)o}MwBwh4WhbI zRi6}{W$m^wlxrn`WokgzEmO&pc29es6dKk`OR1pXG?fiUc-}Da(&0bzwx*#I3y4}n z;r~WO3hDM>sWZwuC0C?_y^;Kw)%8r15tALfv^z>t1#qah)bo3iC?$-1GBByCqp&@R zbdjP-6_i-f72VBA2&G|rgo};otAa_Je-w@c6%=VTiCNh+Oj9&5)Mk z+-b;=5qA@ebK-ZUv*w+DYILpk$mky1{pWl6vl zg~rp(xh@mT;Y9`4##~oDM{nihZtmKwXf>fEiFZfG=Nt83O4ddy=@#g3Z6*|fG0c!I zBD8d!A+i#`gxz(j1bYJ~W@lD#!ckm;g2In$gWd)?k_KiHUnbmgiK2*gQIbydPNz$Q z2R*Y7S-A@GF^NxRGagfot{jc*M+Oz^rETtfsIQOzE|D`X?qXg5-DLg?iLdV;OZcrJ z=!l&c=QF>b9#GuUM9qm)AHwJG8bjG4RAdKzJbH;y-3)Fi28%FFCILD=nz)U|Fr6uL`KkSr02I26JKP*BK;dP_L|hnHl4-hiJtf^eeM?aKD3@9da_=}{$TMK zUc5Z@UD0zw;<)USj|?Elb-wivY@;S_6e{7@)_iSB87pqgnORnwn*O(wJ%@lCTbdlt z`lX=_b3}6sKJVy$wkheh;yVODlZg#bv@^WYW_d+fLb~rtAeJ5 zSePgwoA}Hm;hcE&wvW!NVQaar`Er zyN2XZ3mc#Fju@aPxp0eBT&xvghl`7qX;5qO=g1Oebhh$9(aEcaN(``|l>EOn2KyJh zAdXnzcynj~>-yQ-CcOqN3vJcgHJm=Zt!4t#Pjqs1ekJE`lSh;=WCv^&?siB2U{B88)Zl#??u z+1X^TJ(l;BZ9QJdE)*vfuPRxFX%B^>8^M0a5=~FggHu|(>MG|D7Gbly&}iS<|0K)-izus1~#1rn}V=v+Zdumz;!$Fwdb5 zgH%M*pq_Q@!s-RD3>}CQ=DDp2L8y}gILA(k;O-n-em6~lR$aOyeCBkNHO-IPla<+q z>7|`JrW5rAns#`;iAzqCDVL+Pq#2ard_8S{=plHs-I4xy-;I6VWCxZ)Qs?Q-UkjCPQI&!de{?E)0+_B`tw zXa)ZCmct#iixgYfnlu#h`+N^M(Vw&{h!+$v0+HSZtssm+(GmrJFEZn!OFTN;H$~_& zE(?t#%bLTQNaibw;(BN=O5emiOP3&CIi_k%HxC{dL@5okS8C>Z(CU+P+nw`)n!h}f zp{4+?ql5`BR4*Y)HnFm*9{{^xT;^I3jDGD|l~a4LeGsPB11l)tDr53_6#b}=;F;UW ztq>g!1v}iqEYrL}WrsG9l&3Luzl!~;XxUxf08&7$zsB4KIa%6YI^KECY;;(UXP=m{ zE)lxhVVIMzVMJ$)*=PcTpMFHc5G|n+UC$`231%?%lNE0>Vy>F;YdYCg@TB=AMsZCVy60aIOP_CP zB<(5aB`J42!7_q|1>sR!2Q27x4 zJUHA$BL<~xr&4aNo!RVZl_U{*n`1yZrZJXtbSEJ9&GWdU2TYffpq_>(DKZbSwo=x} zxnhOnS^+V8I`Nz1iP}7zXDva-d3|LU{_Grc{@*SiO5zf`hWhU+ra+ zNG2xl`IX$w5GignnWXnsE)rm}1H%$DA_8s=B8=P3>TfWfF4@g39cT#x(ZyB2q%{l^ z-+I^Bh7d9yB@uNN9k2~W4Fu78bqRh$cwY{-y>Q;KK&Q*x!~c1ovtcdDQ>2cpF`JZV z@0!9?I%MTiqBL>W!;05t~sN59X+n5lx@xeiFA+zG&t^AJ~}(P^3^4$ITdm zDB_1n@qBkBpC^5Rdw4ntr({%}W%F;E`!2~C`V-g?aRG1P2SzzGC_Kf55d`B2Lwmox zn|_axIN@qc9_J;-c@;tS^dk=s02kWY^#0frYU0RrrKt7xo}S+{1W+Ce;ij?MvQlpRM9Ij78*3f7_QSC`2wV^|HqERh%W=?PAF|BmgoWY8ho zyHhPWgpuQYtYDqRheDn7mKb0`6yy}wAMvwxL0~dxviKbv({(1!=`{^u=>4gQ{UPu{ z!3w+{C*eywY3gb&g!t$u#qvOPM#poWZwPRbD83Ta2UO&-52iMBb+Kt#g2sVYWp?@g zxUxtPCCFqKJM*6>6ky$}!zETQ4d}=xT1&QXR1U8)Gpnl*m}qyW?$H8Ic%n+BKliKu zt*}z=+9lb8Kjg->&-TQNG5<`v3^~!PKlI*&)1uP}kszj|O)p8W)=)8DU;hRUwCcda6gHNtm{kj)|Fu2Lrd=o2Lm?+3;Zw0pzGfv1u1%g*$s1<*P#x4B%@FI zsk6KfbxCoftnx%=zJSp@Gh$EW@Amk0%fT*Xq-ch+vm6j!l~750P0k8@$9@+BUf%5@ zE9M=AX-B*vJ0c54HDr!(a+nD|BM(J!b$Le3)lUkYVu2jyI_TFajG+bLg&!>RGkm}p zenS@HNT9H(-ykzeV21n(!mU~9QRvN!f!zQ3;W|aG4g52uJ=ph@l`z7f&*3{emr=+G z4_43w(}ybA6eVn}_~&LZ-5)yer2u!5hT|~Ep=FA%a{`9wjtwkF^T;El0E=dMh@FMboPydPdMd|o7We;; zxpzyFBuA2LH57VQH`50o5Me&t{NoWaCXorT zeTQchi#Y@J>iAhub7Ol;uY=S;34hULOwsZ|%fX{x#Sscg>Ux0@7>FMhW^~wkgTYMk z(F;_f4(sI#TlCkPvAG_~g2${K4qh-1s&CO0#I2;-*O&|)+Zp^>0 zHqhi%SnuoZ?!VN~WD_+-ji9`F4b8jqiKjAAf9Qdr6=IWrZM~ILK4jP9M6K~gf&r-A zA>Qk?Py^|dEfsJ=xQU_y;#pG6%GjT2%Oi9mNO^ynP-Js%N%hQtezSbb;k>GKd=NGk zTuLg}^x(XEUmzveq}J_xmdCrZFq#y`x1;2A7;gRlQrI&^1LJJ~J~# zsLJANIY||D9&eYK_Hep_nG+QUR|ZBURMGhC;@lEv+aD=Tk~|4Uy5lxkk*V;WdU40I zP~SPYv(SoxM@Cz#JNf~q8s>oHEYZ@0=XmtJm(1Pa#4`Y(uL^`Qz?pH~s(ZnBJprm{ zUN|!!9wO5ZX|vJ^qN5*z626ZU>V)SN5dJo_9q17Ds4cS@rZKF71j<1+mzu$=Yr(&M zc_VgM>b+gS**a(V&#VjSex76+`C!b}DllvTs?09c&^79ru_z~H8`oG?__hLLhX?3p zi+Bg@;{T(><44ArzG_g)T3qcvL&A?;wr%y%e+~&M{}LofbkwGp5WLRs<~C2}+G|J) zdCkGrwLzVUGiiP_fTX*pmyQ7NCjgD{BS4CL!v5$7W$b+2s9jnTYv;eSvOGeaOpq<{ z%0!Ar8zQSUyI$O3`eNfY4;@SMzO7#$XV*8p&4YHjJzMl2`#yn(#R(7`L-Q`9mS@wYI8CRFf-4loSU@nJM(mGCgnmd8+;P+|E^JP%~PK#kR%8=kS(VD1&8 z%O|vTO_F5Fv4F{6O3p9^#$UhOn_UhdB%exKiqRXD0a=(`Q^*+53F@la$dUps1p7-1 zEfAh3{8=pew*v;$Gha7^4(^tqvRov(6^NE%K&@#b6~iiAgCMeAdiX*xUe3*5i{up7 z-bYs$*$~|X7KwofXV#|s5oJ-LQG!^V#U;KW5>1{Q>|a(35N^L#q&sClfPywBundMj zGT&z-M|@-iFO#@Q)PXC~wWDPrUnGx>IosBwuID?SY?T{ouPjP-l2Q5I+9x6&j}|%y zZ&b)|tj1`r%D=4UseDD<8)o^H%2MNvz~`mgvQ2Bl|D zMLo1`HB9976#gwN@so)2B8nk6rZw(D#}&}m7WW3sV|r)=^W<;m1Xr$IilDLan*etp zo$D}VJumP*4Cpu7ztG-+J|L>*3CnH@gdxV^k+x0xb;H#c$af7!K*9H3Y94C1-Yltk<2oG%E7 zhE_-XS(JSj-B9AD;>vJ$n5&NY(35_aA4QPp{6^l8>%z(FMd<}*f#L($f_)hb$-zW(c5xP>95@%3l&4Rc_i%oQ2Mr@)j~qt)iQg5 zm^eYuU#2CPTm${6Hdu+m5B8vPs@6-wOp@tI^1XKi~tcwFDm%&j7-Yr?1Vh zLrW^U()o6UU6c_Qwc~x3wiehFgb_Dx>#s2wXYloJkkU=dVyl!Nyon{IKb;c{_Uv3s zJF$A~jv%#)Cn%TVxE1;lgPjWpaMR2-+PJ)b@R&KAA8-xmJ??y@#K9@PNZO*w?v=Em z{9x_O^FTXjKCM-N9FO>;JR`@iM@JZc1HiELR_6GHnUx5=H9e|hKtY#7jS=2_h90OW zaD+6|OXy`VqXI2?B-k(mm1A=_4Ga)DJ$j#|V8QM#fuFl+lvC|w`NoBMV9{rZ2GHa*k1W+`OVlp8=_~|C*Y90rH8U!pzOUls% zzmlJ=;KElCHAZCvjY6j)C5p7$|ED8O`0a!>!%MO_~`jfbb2$ETbI! zSD3nDXn-qztwgkzqSXmW8*4NtShr2ld0yy$J%uGIK>>&0QI0JPDElq^tX)L!H+8>F zB&Ps>+}*G5*Y@uwU^py`nvd+w?+F;%8loeq58FFKwe$7X7o_1@pQQrXGVT4HsrADZ z_HAlXuzSjot}N>OX(;03(Xr)UJI?@^vH^76`7dk*X&l)v(DE%8t&c)kN#T)0dGdN# z65f0tc4_wNMCUU(#DSV*JTjan(pl5%eCBLB0WUv5x+V-WD5)o%CrRlyck)*@7)Vuu z7+0RzWt{`)3Rvq8K0JNIKd?|Jg!HAt&hwQK^@m`oCV>cj$lK~1UI(h6*ZhW40=`)V z(^mubin{K_Q74S=xP;}gq~jC4^N9_;vAA0k%~Y|x zM`XmDtkX$J&WWRWb+_XHi+@(R6FXD4Iyw}f6w)4JFVG`kn~axtKCq8fNj;0n;+ z{_*2=**QiD%M)tW5;cku)lJ&7*2XKn3kj?;yI+uR4ze6$o;r_uJoCX%LTgnw4wBeB ztxz0vJ6!f4ZogO&-!E#sPRs>%fL{6Q`>p-Y=VA3+e2<|`nKwKGw41ik0t)vZ4CQnbllh{i`vQiIVH2)ElIUL7? zbFKe?t1pECM(5<4h#T6IKAF=%sG0S8%lN)O;Xb3$7eziZjM!B(g0~#Fy1TlJj$}iM zSrLmGmiM(H9)|wUbWCP=2r*%dXHPyb0F)6N7)HKS-;lmSfP)nj1u^bDPydRJj7WF2e|@B~do=Og7U^XoUiqE{1zc z&&+;#1-eQhD}Y}qMPd#B*Ai*>70`qNTuU6MgTs+umU=TyNAe2Pn3di%{!R%E=35dz_xa}U8T)BUV4DyO%$@+kt276vO*TifM1%?sN?JUgQP5&^(Wr{Sa- zE(lPsir9XDcBlj?>0U5tY+o<}2@foeb-h*UH{7WaIsxXRrT3?=vRmf2N1aEF!XK1G zv^y^aybamWOBhTAG`eMbji%GjxKxIms4<_4vceF7nfo}FgDjezf!yXR+Qx=HiX-C-s-XsR2M?Ln>P8GsYK} z%xwS2tg(KW2VKbo`k0p$;E=RJvFNw<-?xD3zk~&1MyMP(dUfxE9qXQQD^$R}UGWpe zB=cd2a8DQzTvkct5MlgazHU=qVuqmdL8i7l1IUfxTOq@1rk^4fRVyI68Z0MTh*9o& z7`NH)Y~3T8PE?0az%aw+X8Z-^2$`oP$Z}wc zeRChPbk>}R;v~+D;&(8Y81b2q+R-av`eSWVLh!`M0QX0ni_vZtHG`eS33Lp#LJq}{ zQvNP|&T5g|T8XprmRX(chRsC-LC(qnDFz&LNrPOR6sgG@0t|~a(Rcu-hlu7-MqXX4 z2)8jr42ja3>9Bv7Co$}2EE?sMK?Q&c%jlbwo2;!iB33v-Wz5tqv;X|izz z74zz8)?~N`nKMnC*M`Ey2PivF3&?3D{SXmRKqQ;Y_RK|XR{ngE^p>DAy7=seUxbtz zT>}jJ`7}zYlaU4g356tlCH7Ye%V;%-6<|R zNeL$82O64&Jt40eg}hEmO2|#JlymC-S|)zcjQ&i}q&q|LTIL}QZ~6Vby*PWk#rTYW z%ULDFcs$rhVl;%(E&l#Eo0+MooEg&Wm%fl%V){s}(1V3P6t2$vb@cvZWnoJlr%dzc+Cz zo5pXVk)3N_kf#404OIUnG!Rn<$vFgZc=^G!>R=IBf8$O3xMao#h$}zHIp8UDlyF)o zB0rEHnDEfs(>y5gU`;u^Hi^vStqVWUTJW#wP|}ZIw?`Tj&w776C4#8Nq#SHXvP!=S z9(BU#(d|oRfJCR9B6&>N(p}vMdrtAe>uM?>hdme*SSVs~;Ml`Eo^0T{*tRC*ui*@; z!CXq5mr@Q8cvTaS-TD=t2aK*XlyGOH*rBsT2jJcq(%CAdJO`F$+rjvK$QfC)w^2@M z#MsUGJ+VVq*_{TCF#Cblk0!GV+@c{`tXiP+NZp9>`bfeiWo;9&uQExbaX{a}I_Qt7#EAk04RTK4RODC z(iK2FlZlBaVNey+5c6|>L32mSV>)~Q&cSPiB1Oi}BttwM_|xBJ$Y0V2lF+6T!?RYP zq$h-vZ1L;m9i^fx^!BdENIi?ig*Vvl;2(l$wOz(+7=Pc?uiS7{@J2FV1!; zd$%9VTloU)l7?;Im98%2Vs;u?><2N)pcxHvgqG}ULj)Pe*|jLOKkWZaSRqpJ@?nHg z5L_&_#x%SKmG>VYKkG>YGIVV|W^~U#AE^kapk+~>R5<}jQH`=L*afrB4?~$Y2fqku zmw{Qbmt8mn#>^0o!VG@zbR8E!t#e0k^3=0P;<{p7O!HXI{vT2aB* z(Z>rYPS}u=N1_Nucy>X)@Yrx}W_)_eCvfT7D-Jh_^_~vd`VLlkG3Y1Z6;fK5_GF&c zA?&E(c@O|P=yAX5|JF3@AJBoARwqWg_0tv)0(X@g%nb1ry}ceK_npkdX!NXX(45G_ zR$$Q2m<%SCYFVmW@i-lu4?y)9r)m=PSfE%8#_;gw5Cd9U_^TDC0K?tx7;1VWh(}iN@kjX4UfZY886MjXf zsGausLAMY%m@_AbEZ^*#Ep{0^z=Ozo_NeJNK~#(cBD)ydw(be7WJZ6husf3SDhPD^ zttM~>`q%Klf4vs^=?tJ4NF^7I$a-1lP(}^A%(U6_zz4jJp}^qkLkOx)N|oK2g3mJn z00tOBFo#6Yxsp5~KM z4mo&}OQMK{Y0ClQS?|AocVsF9%H!9CdyL-(-Qq3e_!NYibq-v*?ojuTH)kY3sH3lR z#OXILcRnz^s#5}3Moucf*3T0GLbwj`WG>CptSksK+Tsj#-o9_-(ZEP|1?ciAvIuAvrG<8gh?;ldLB~Y<*!US+p3%EhNE#60tm?pG7ogKq1%R?_X*Y&&}?#;fjWE zv2atkeEhN=i1FC^pLLDdJz^=OX?aIN z%KXE~6j)JF3iiBxWY0=j-`>Lee;_BL{Y!8ls4WbA8OVG{qPhCYtfr;$?sStkcgt_V z;`5yE2ntsoEzQy&=R3MPxVuo-r$0SrQ1@k@!ggx)H@Pe_-^F-FMiwlS- zCN#?Ae@%)wH<7xU+#Hd6I;fC*Gj~R~9OJb%)lp$4@2Fbz4@|uw2s%h2p_$>dFnu(* z0BBcnnBrn79qlFr)_yoFHp~Q39fcl@sb>))v0JVS^$>CR1vAoX;9H|4ohRGcKK{OFfkyau7f z?#-t{xR5a2y5|N7fA%W!ap4`eaE1wqoumdtiLu41$^>_cdK=3P=RdL%fih-q&v8rQ$FHm6`4;#$DqC6c66fnM-2A zzl=}KADz?M=0sGg!^#y zE00Edk$A8ZU3i2nxz5wFf@i&_*!7RNzu+ntc4As&*p?qE~^?^7O0d ztMsuA<^iZBfed~azs@wyZxOKuru0(!Lx#ea1}g-QK^)kAgD*32LM5qGTF)kd{*v|N zaph1r$*Y?Bg_X|LCFBfIz%;WKTfknUoxvg*I%0-=06;&b=uIiBr(GGh9wrcnb(f=! zb`l~~!KwaxOi=rmFhT5xoIj|8=Gz{R%CgBo4MOkL2O_0*>P5WzI|lk@2%(Gw#1h}+ z*Hv{)Nob-`NW3U{UW}L4p^U~Yh=l~CSsb!atH9GsGdg*q zDi4~tD5_&APs*gAf}GL8s>-1o0{(>>1|0x*hP5VYJdD-Ip#~(P(3BDchSEj=#t>YB z@ngA3?(ZOM%-Gk539CSTxXX#NT67H%dT6p%qf}eRV)luxL9`zk@jlj!n>EicAevJg zj%O^SUl00j6ha(epJ~}rZ2Tsda4RADq+~{8gn7|d9z7nl?z(D^j$CI_&Uf~&H*O#< z;*c*9Q3bSlP_lvv3is)cwMwI5y*qBK*kixTkY1+N?T0F7>X)DEuYxc9h9dy5O+VAU~(;W zS`Y0zBPX>x?r11UnN0yZ&j_e$y?Tpd(8Yr%f#e!pC$byR1PvXZ9CeGKfRMY(Ul8dX zEmjO!(X8dYC0y!$6whBbLO-4`5DttFjagxKfD<(1`$N@I)ix*4*H*hCPEKaL>Ph7< zZ6HomLBMJY9SP8vl=bog0{SdWn`&5lgWt zQtw>n^;nJaw(PGTgp6WtcxpTk3>fic+yUUA6}-Ofy7Q;sS7aKT3i7cupEQs?f4m)c z`1zpkKB0|@?PQ~>dkgbDxk0urCKvw!ZPuSLvIs<2k?-;d571BQL|={yx>75W4zD6S zTJ`Hc1L3ed7hTiH5%FPo6Dpy#Ey!u+d@>gGwZy9%_Ma1i+P_2y8t57|HDVL_@Vj0N zeepxjwvfr9u?&YeG#Iim6d9zIMya}4!V(xR>yQE8POW0N$fa- zQW#(r)L4s>ld>+efF&W=5>0bs5o6P9Mak}kX^LqVi1maS^SPf;AP8^xc--sVK0$e2 zo6`h3*$HbWY)(BOOp!G*W8RMHf>;%ToLGh8w16%6o4fr7RvWQgzea}bK zta<&#;UwjK5+Uc*bpMOA!@}RWo%WjH>tQsA)9ZR|(Bs^))A;F({R( zmHztqyatwoGcMhhkW|;Mpou0;aI~E+>1{8?FM3l+kg%?M*SVyUBB(oWD6FJ-6JGk{MMyL*lp%n#!Yd zs^qfJ5d0%@c6SHbave^}KPWR_T2 zBU;bVm?Ln?C*kwrptl~FO)|7P20dO^cv@U#$Q^eXuhfW)jx*|%D1!zUp21;?fXeR& zHexCu<=*XxtVs{y%>IseM#A%w7W4wM=*{*O(={s|!nT8Qjn z(0bqFFu*BIER;OoP41$83Fl{FE8pWVHX5)z=|^ZP$%WWs;JL(EieU&=8^F#X>E{KZ z=b>n1N4_B=RWzObTO8sq3GuE_J!2?gjKZFMvZfUUNmU-Iny=5d3o4b&q?5)I*=RQE zJkFuLMGA)yd#qCVpu*ryRFR;Aa*j=!Ui+~2muXK2coS4(5<08Q(D%vz#uh<(GqhkQ z6jPVe&LJfGuU{_s9&`{DA-TegQD0Y`xfW?)0?BNBY%q+)t79Fw0jZUwLgxZbOoYHLS_ zkez2fEpR$zyr_w+WalYr#E-Qm`17|DjXxpJzq2_@5y6flMsjaHNU zi-UT*sGvF`cF1yC|17J793Z9YaVkM8VpdBL;2Y0Ki{=Ga!ZI^X8f)J{1J@nuzH77Q zEObs{XvnBrAu=nql25kMRc<(nBmd6z0^b1yRIyFa|$4 zsNa`-`<1Aj_dG2GumGZQsy*gzPBJYED|#SCyg{fXcl~HHue1cmCyqxPeSUu;vwi_m zvnG&^)Skg&<(ei4c^dw0z(}vB6uil=pq(k2$JH9!JYkbOfy*n9j1 zdxJuVW7WH`)~XTcT8$tTCGV#`KAHB_aVLsobdL z*ir!uTH-9R9NiM|JRuNlLt_tC?PHs`>7cNnL{FgTY!9lUnGd-;>+8|ZGuQw{hjZNK zysJHWD%+}thTAhRNg`;f%w+lo1Xj!f;GaDD*_s@Y=0YATJj|`OYkX4CoCh}Y?DrW~ z7??-Y!{&r!&B&4}$L=wvfY|i4r~4AOPS^c%x1AObkrgQSoYRNnf~B}5_f!;`0Zlji z9EbskG^gz0XVtK6Jz2~P?ICPBB6XDV&NQK_=dFgo6rJcfWM${18}kdSd!W2g6q}Z! z$P`Z2=PAul9tnP}o}6KFX?VAD_u&dV1_vdmg!>MzOE;!MN@pn2o1)xcEA&vcN&wA8 zojk5)xU^ep-VrJ;jebyO-BgYv9wNeZ=}p#%TKRre13<%`&iL;1t)y1kA@=v*!htCL zi_|iBgBvoWUn7G=v!#9wIVCX{8=m#z2M{|%J0SE>%ZM^CD#gJpxx}hKx81# zfUY6~^Y*9^*=~7OdoCDaterd_gThORvnoEa(O5XMcOqamdnqYI^qI~4Hg&1Ofwq@0 zgQ34fW9vs+@w2`KXR5sq#zczkhG*#Uj3-1$q!}KaQ=xaxoWEdeird^l7UQ)z^E*w` zZi0hPAL*Bf2dbeCtLJtXtjIojYaC}8GBUWj84S~cUks+H=4bHtOAVG3ZBF0jj`;~4 zQVtCqvTYT)h1|ikI{gOV5Z|T1D@em8e2(xRc@JJ|YoFd8zZ!c0fmeeKBp3p?hNZ{UsCNAI z%gd^#4dlZ5w_-VkwW3}EC30{6`_@nYm&ibrz>G{dPOTUD<%*}Nir{jj@<9f|h{#d5 z$t?B;-$Q)T(CK1e@g00fmzXra_1^6_6H_t050>O;3?PfeB0*5n3_WKps@e-`t-Yry z<`nw*`iTL=AlCvX12VQ~A`-i!;BDr*-PULb@JSYun7Z-T`X$)#9X|_$Gh+`R^|mM` zY*6?!LxzU1mVp>3)@TfOigqf>+mTObhf#-cN)KoG_f^^^cqE(D{L@VAEL1&S+Zqa7 z9LExUQ1KZcOS>3LM|WF;0}~V7%@J_+9z8H}5F!}3stj5uc~~k=WnFLc9PBAIrhH_= zRHVdgNZs=2PNN%yR=lkJ#>2gesR?B~PU|q;E{&677KrmypGiN>!JLVZN7_Bz0jP2= z!LQ_l#bJ^(H&JTZZE!WxM6pO$g7U>Hi^R~9^}IB)mnY2{j2 z%=+;{?I)rWJ|FmzXx%_H$rLNrZ4Y3`d{4$00dNA*tbqDBJ6jZjZ|K9?F)^`P$z_#A!+ZWGffY?h6{|`VkI_a|!y&A=|-Z(dJrO5ZG2`x0e zT%*~zd5CJ)i)3MD^c;@nLjKI_-am48CzOB+y7)3!xL2|6%ErUQ9mjhPQf3Fg8jel? z4ZziC1j;o6mh7PddSn)8{fbJ`@;au@jg zIHk}~f@gPCghi!aA1X3~IeO!M@q{7645hNxLBO6g+B5|j%4KSe4h(FCHbtxw zrU=$T(<7e0E*a#ic*A!^1=eN6fP@nqg?XtDiz&glJ3{cPz(uCk30b2B&eTMjTWfv1 zs5n9tPLGqG)sRRsL=GH889ktX^dFIEDm-d*{qaZun4dT?ZD`s-=Q-dJKr%Jd@5667 z{xIk%1vzs3QPtq8D~&JKBZfbscIEEAHEuB4BnoA#w#^8CfcHCo7B*xAsqAY}<*9h2 z>sMN&(()hyiG}$8>_xJ9CniJgX7d?19+wpJ$WG54flt>s!v1B_C&0fZS6CPYdE&Tt z!vih0&`Q_J_8Pj|q=kTJi$$K*f!ua_<~E4n#Xx=54#ll759NH_4Z6%4&rj8dVQ&0- zZT2pS>>aOninw|-t0bOwv>iq~O1-Gb&+XoS!6k_;ryM>TP=oDSX%Fxp6@5YN`FcAQ{cQ?kb4c=-f99pm%MKeQcz-FP6>yODskhm? zFqH%R)Bwym`RS{6u&S;rjgt1DCtAv3;au?AQNBLZep$&-4d9_Gj48#Ho*AdQW9!au za7|J!@BLV|0X))IE6)yD1q4|O*f=o~^uYO`AgqSPi^$D8xYm>L)jR!4Tos=Gy(T`U z#sKzQJDu=6XHr0nZcDUc})#!Ufb;qGcOaN|8TUIdChYhuoqBQG5)s(WB>1Bpn`uEut8xu z_^ET$`I-g|aNC#NqcGWBD+X>|gA&tFvK(nCrSH}73lPM^$4rcaO124+W;%JQHh)5A zWc68lPpejt(G_K!8zw~Yb@4LEN@YF7`V*!c{f^EHq0&-Bqnmd>cfFF@#=6CIb@LRk zCa&KSBOBS1BVj1&$QiX5n*bG zkU%~(D*9W2Zu>WqMRrwbu42fcsRYKA02Vd8I#Y}3(=3o%B)$8 z9<(O2SkB}BHdRL|c(Snm`uVop_5Y|m%gx+FmfB)fNNztI}x|of2MtSLpMTJj-Jb2vC{I6&vI5-|(jwwxA6Z)g2B247wIO-gj zvEQdFve{N;_2Z3UmFVz8x`fHWAi_sUbXc|!8@aZWqYt-=;Vs=aatcDeUsRwoz(2;h zulIKE7APsFpqT&t9BlksK%hc;0p&RT#`hd-CQ)xVN{lxix@&~oWMwM#Nyu2w9ZLc8 z(BFVS91IvY=%5_zUlyXZ5R--zbVH~kSkX~skH3EY)b%GxX{AJ)1B=_3d(fQ}w(CW7 zJ|devVWfD&qeX+8K>osccFI8o3!kT(pM8WKgFh+slZwt@SxOOE-M58LB+*SnIUc@`aD1{0d?fA|ZO9|f~ z_1-5@g18wML)j1Y#g?RiiEVK*%*a_VVHJ=4s6IH5BaM#J38%dT;fPN4iH&5AnIW0S z-2!@lGgze=cDiSi`8i~QM|O(!Ni;dzh^KH%H#~upZ*ZZ9ziy|k;zq`L%t>}^=>TYR zMlvj`9!4@HotzUH?8cFd`hcTzv{;}?;i6ybhi}7x&&uwWVmfkdP9@J#2|N&pJw)>T zX&NLZEjRmeG(4c2)49WomE3I@@-8$ZiwF^GN;2WRZ4ODrn2%+C{fNKSKXWpr3Wp*v~H09jYIAwZV?k< zb(-iq*V3a5#3IBZoni$7=mg=D4~&~9h?)0VO^hq1?@@(YK*1gB8GX82*3Y05szoyp zGh{c!n&|ZR2PNrJKcw$UAoTd~J&>TD-VJbVcGRbwU4KW5Syj+#GF1yRj6QyJJ(b^< zl9b=+k&7k;8@c&`Bjw(mBF6_@vJ7nXd8~t-I%MXDNx&QcNC>A6b9lC3A`(uz$9`PD zwc4i$#3Abj(a-&`2%Caex%v;ziJhd!2=lgC0{lJzi?~$C-%ggiVdGF|-+A!#ktrLM zTM|&Ko6-*G-XnW!5+}56hHrleL4mDkDL3-%#P>qUM#7?o%YK_F&?gqEfnhTKr}kM)A4VE^dIi4O>z!ag;8UBBHs(RfE4 z@&MJ~_`$|NXUI69OOVqdX>6P=)&)>tR%O{cQIQ~pC65?p#`0dXW+d|lKJV3*4X&fh zrSRooB^7ih6F<2Cv~g-hn*ojZva>W1V#x`6ZLY3KNFBeVT`k5McPa^%-AH-kU8YzY zoE8FK3P(f1+uc2G-1_?`&tn6j*};i_%rI}nmz)3Jv{4>GII zGY-B7!&j9L#BzE%jnwSxS{3VbHFZ^Ys-7%d{#KEsD)yI7jYQFPo6P?Hm zMI)|wxL{k;BFsu{WGnq!9W-`&Wzw$?|KnhVDK(Dj*fg+f#-SgQG-TiBK0) zaNz`a;4h!|YBy|H&WMw8+7yj4DK>20$ z|L;uHe_ZqY1NIN-HRS`dczvY8ui~Sk)j*>1k%Q4RUWB2tipMwEm4CvjtpUl8z~`y) zCFlAGB$a{_6-Jjw*ewwnO-MNdRrCG(wptr=)KH39akwKT3XR?oLS#q{@Ca|P3-ROG zHrR_mb2QIOG1|!8(Bj0*i$byk4`x^kNEl~u0K+DZbDZpW>JWnrN4(2=&YAp*Ll{C0 zQYrbg778|K^K0?Mx@f{3Gxf|tCZe!7s|<9(s+Pi2M6a6#LF$$m6GP7-VUH0^y!?31 zc;M_wp{f_cFN>aGHV48waw4ukf#7sVx4E8U3vhb>sEhZ}L z_yea9wh4PlRm&@weavuVRPL^zIOPtij&!n0iV(=^4@Pt-YEX80Xpb`_jC8S)l3%7% zE46mr5aAZ0ASAKlf&h8j>k1@J!3n88L1mZn6z3HME(~#6b&QfirvNX7^C;X9|0L}Y z(g+m$eW4Lf_S6*0H(>^%gI^8521*W!iMsvpf7q1qRj$wQcl;mWi|GI%oNn*n91hXk;8h-^ z{$T=3Q?YT1@_LJYNE>nn#dnLiD0>mp#dH~fk*c6~NfJC*2gKVp~wP~ zjNb0Oa=L%D_}OzF=aHE+DGOS`xxorzR+X&bPCUdMXaE-vhY^UoP#CGoY-Keg6l2<) zhxmoi|LwBoK_?x!Jv(9*s4VlpZJe|UvQP5n7RQ#zL5c$jWBorl%orF_K~0exqv{u_ z$iAldT(pGVAsYOxh}k;nm{|-R?0%=jgaVEf{F$I(^P=X=He`|6*FfIve`!o1IEsx4 zitBgjUygikVNsYi?N6t8u2Q&DrBQ4}KWHtKdZLDSqH$#)AcObs&I%-@mVrTib(_=) zDVhRTkH!;iDhknjCW*xHthGC*>B@o4DG``?)Tc$=7|gmJl@{TYEaY;~(Ev1cJsm?T zxJJOp$$9;LKlTU3xkwk-g$^VtR-M)#WF*ztO%85OaT!<#Tl$EayX59n>&JyK7L;R; zivyE z3nwE}E4wFv(@d72*@9C?^Mx}8g#8>nbe>^MB%St!v5%RLiJ0+nEHp8_SDCcYLnp4Z zR&L4Nhi4^;Z$tThC9A0MSWHqaZX-@(wAKAOPsW8_7JUT@3?q2PK*8LD|I-ICl>rX!E03NKt7j z;}FjUGvYJr} zz+hp5z?#q? z=&aUnp9KE<_0(;Z<~tU3ZcR9CvHNWnB|Q#4as{V?rKcXFV z(}gte=Z9P9`!|I_fYMqsv3TWB5plE@JGr=@c8e7E1kkgtqaaM`!^UWNcXpo+P1Cl& z6Ked-v=ah!oq!quu!R(0=a&C)Rv}4YNlSJwLv0jSnyY!TQ-%^PpTvi6o8ErGFOkF_ z@hv6_XlCi92`=hYkX_*t=ohl!FBu(!_KcYRCsBg-1z&EJME&xyKt{31tsnLR+=}R> z*c``f3n%$LlSle(I1(T|#-Tv|E68GpcgXmDoTx8{Q|Nym3UgCpE)Kb8kP23f#@h}B zaoPvWQ+7lrhjeLpIBZ|0X`zR@=SSE*MJD9+e7I30tF0=9Zi8*`;Qi5K3Ilbxft zO62|{4FjS&@0J4K%$eko!2=Xo*|O!qLt#woBSx386fbk^CYh&oDz@Ass-z^#DUM}2 zQ3_3>u6{*h`|ATnMhBmX#V2>Sf?&(7OOY6w$H@oT>7_KHWJzv<)G*ZE3?&LGdMr&X zQe%o(5Jkc5S-gk4)$P>y0vi7YV*9}1=>-L#}98(ToW^_~O(q&4QizveUv!L_yblpZ&+tQ~ zi#j;XCt4IhxoPc;qtDIp2$6W?e8NvfFDrAoL61#a4$ao+I0xL};%E~aKVlaoF;R!}V4tueSYueLwCJ1fm+Pg9R%Wt2Yslr|Z zcczCytRjZtZ&C1E{-Xgct0^loJ_K@i_Lo)kp01!Y+6B>O{`)Kpx+G=e|6e5#xLw#c zVKVsW0x1=Jl?}ilU-8MGf!1FO#ZRa(5=AAv&Ex&KL??cYkVrG@B#%B(NaT@}p(xXQ zo8H5dS^Y0#Xa!0|BAPM(6u2!9ISRm;4sdrU6`r1p@wzDgz?Qcs%AEyHeg(&^HYIM7 zey7ZZc#HU#>;BbHzA(e!oRrZGbaxc;?k;*^WR`+9=IE68ksPW98Q-2MV`VXEFEsKW zw(4+AG1!oO)gKgXP?YLX=@4n%_~P?XV*@ML z@mD9f=q(j-p#0kPC3k?I-Df3IuufRmvN{?IC7Bsmh70pWNJS&Y;LLKZYPkB*nI{xfz_Tu#9^Z`MxV#u-l8a zGK|h2^-ovP7n(@TpcGy70Ew!(oi*_l3)e1&32WkQw;gmtYqH1l0=wpkY&cJHxxyS57Aq* zEN7O2xXMftne8D`@+I=9lR$3No+vtvN742JS zx!v9#FqwrkX22I`ae`D8q+v=7QiAmr6D^-d+0MZLjaiRqkKItjvp{ri%#Cp-G3&by zT^Ml^Yc;OsI5#qk#@IWR9{jf)pri~FVqz6-@c`ptH)`gyzHa@XhTTFxjqS^MmJ6kv zCd3v}S$?yi$*Sy{tofw;6ODqa5`3Q!-}dbbw)E0#3hi#7qXB~%71!9&Xun*@`q>^0u8$H-4BRe?dmSY z;>Dz|Z2)65BPR98vb5o_s%Dql6?JJ)o* z?5u;7uQA*gl+xM0v7_>k;V-GK2AdAP$d1xUQdRMkH1jrk;RckG;b-zq|9cA1{I@7T zXw^kA)l&WRfW)T3b%_=xf6T#vsG;p)M|w4ZBqyNEX5;;70%Lc*)bQ{z{Oc#}M+xN* z^i4wI;>x32M-xccS9EiVXt%dORx$GFLqbsbfi_-&~_r_C;k?o7Sem^ zHk*jfuw`hR)2+jwNgM4ginS*q(zkJt_u3$4sG&4e zpQ}b`mSqm7@8|>U4s&M-g(wz9Lgx@a)pxxNFeI~->q4%zsq;(&I5Xzh|J75cbpwn# zCOn{$FN{pC2pG}bL|rgm^HpZ-giw5%0LgL;bpW71%mOM6Gd$dd_0`lQvZK3n=Rwg& z@`(kfa8vB^VijVEjs5xip$c--4QPdfvu7LY#LALPF5`G0hZi`483Ki-posOV)A8^) z07M|_EO03?VMKufu_zxHCz>8Sc!?at_;;dxUyuez{u9he+-TxZdNZyMW8$Ukj%wIG zBYnvc@UaAq4d(Qvh;DCu7ho#ALD5=kNw5V@qy0MW!GUdaQ?z3+DR4Ub@p@mJ4trsO z=iv>dL8I+85x0qK`L`G#GNeeZpCY?F>jj}yoyrWc`+FS5*1w&z;@`e9l(i#JHLA|} zHiU^?JvXec{PoLEiVI3v2Doc@W7moI?Qw^rj*gx^%x!-%ClK|$rX7tATp@blSnrAR z?M72uQhI|5&JRP7V+N<_oo5>F9OrX*9Zvx06spluo?tW)`C;pJymWjw+@Hm9Z^(H9peUclMq=AF$jQrMKo7--9T?g0+KyAl{9u6d@ z_f@!F$>XW-XDYaiv_&dUXjER9P}ol9DQiT-oC=w-Wd29!8H;9tCKP7Kvyftwe!d`< z$n|qWx#m0~rf(6a9w%5vv{z*F`h}(&N1T}7-uuJPX0+U#s8kN}r-3)0s_@OwX0M>) z&Es&C+NGEbg@Rwjf`XDeO`TBN?VB}|VLq=JMQ_J3;}_W!O4LShLU zg*SfWH{uLBJle!{G+4#sN9Z#)5*j>7tKnJOKpxMlNJXB?}+?LqwQd0k`}9Mf;fqV#hjMB2G!Pv@VLs4EY?UQ>M!VemE(jOF2yN z>bmH{~Eb?rO zzc7jq_|MbraJu6Zg+#eTue~D_QX*A!qd8asiIK9`E&=81RjSEQ`3+vpL4>K{CmIM2 zE;4NzM{jUJ3ms@ zAN-dauXk~nmjZLyyHf-KgPx!#kTjzoM-aIf0D-m}pQ6$`+6<5k}aAz$Ls&F{fbSg#qHs zk#L3D2UW^(a&qcur`d)7?lJAuKUvkp!bURHk1swa34i;;peaMHw*mX1nhGPV&yKTl z2KtcE|E0zSQgPGyNe(z=%vc3CUJu*;qwib4gCppb-!b@$=a?cgKAQiC#?LBm&UmKC zh%#Wt4~M#Pj9XQEer|PTSz7fdQ|WY~v7jzxiKRn$Etlq0I;6cL8FN&vn+oVi99nL0 zbIy(3^ULcH@*xgNPxLs@=t7YntK^kPqbYe~S!;C;1}ITv1fw1r_KhucQpX*E^UoXh zQ!yu;bZTXY1=nfU`XF2j(#2S&_$pX;-<`3O9*%+9cOI9jN8(^5 zkk2vOg8UtgXH;?6Vv+m?L#3l809DFw-o0;lep4Qx8l4>+;o|A~;SvOxT0y6cI57w> z!m({S$0K7G0DDwUM+2t{b16=;QJEvNL21W9H{PGG>;8vnmZH(|L9k?ou&*{T=egV? zvL%~(T1tQR8|T~Abr_I3T(J5FrxyAeJP@8K9X(i#cNeh3*3JL+!348}T5_${OzN z>H;3IjiS}8d&9A&_{cLoK+wbxl!f2Qdv+9z?hf?@MwUn+m%J(2GJqnRx5Ag54nK}Z zWw)O8rZQEe1dnzW3f2p4LJyHP{i3Qc;!6MhZ|7o6R59l7kO~ft=nf)E0}(n8_67*eC8B>66yLuoK--*f^E098 zI)S#dNlLXWa-9Ba`->L{45FmjNfr6JmKsCTMPyfgMi%;+E=R!kFcMmAkLH7 zIo+>wb}G&ND!j9`;+*$p8&5(zB72}WJs)-aZxhK@EZcTto3v=^klnR$;W>}R z_0m>!i=N@W8`uU*ony4dp_&Aq>ri``j9_-YPvkuC+@3auJQn?R$X@rtUas+ns9A~= z%uVT7CCU6I@rA~D@<>;TM-EUW)L+QK5n=aJLRWDQ)~CIX$E_h_gMddP$tynGpc=fZ z|GXpgSqt6&z%hSeqf|`J{SJVx5M-y$@b~>rOzlA8X-lFO{|G_kkU#-EbkV-S(7DM_ zF3xXMuhjViVTa?FK7T?4B?6>@BX?Zs#ECUDs>v3d^>70^9*72`&w?=-xiv_z_*;1C zhrG|}wuu{>m)z>{idQuE%C!VpXnlTyLC!91TD3gLm~v1DhGsGAm?hV0sGk)y$T-y+ z=C5lP;PoQU6g`@#^kwuSPjl+8;E4I`NL`Z@8Xef~vTB z&NIE$6%(~Id`Aeh;j&%gCi}zlOo$|S;501p7i5f5PWUi*XS`~~R#4*PNzmf3G;DTV zA68_HE7g<9EVK;oogLxp<)gobr}vz1Duz&6U$>>O84FkfS(toS8@SI=m4|){N2y|T z)`l1qRE|SR^e6%}_;|Rs%+4Gv41hYg(ZXhEYXfW*Mu>7K&Z8VP3rqYJv>}4!@XM_N zCWY}0`DjO0kZ4po0YR~yp!VX)VzZZS9#e7kiBTIBi%tA3)I!j%C=4AyOHf{s#U}{o z=&!f`dd5em?N+-Inud-3%KDMTcvX_-O5kUlvaek8Z@uz-Fq&&fF3X!JmSpUXJ^Qs* zsJAb|k z;kq@8SBoa5l-DOq>-+NUyCuXE;g@L`StX~nk|?Tu3fSB3`W*TusndI?8FCiXb8-><`WoS zl(@M4d48Qmd*XdIHkz>?b#RQT!Wn@b|CU-XtRJ**ZwjULhB*m<2`;9XQ_I$(lbi5N zk4p<(RBfVo872ghewQ1@W(dc$R=>+qsjBpOoe&-+Z`)a(QHY zB4%|~A&%NhyiXt)sLmHdVr?%M8Bb4GUFGzNSXP%kJAzheIof5s_OX$mne||{2*{ck zqCpORR4Q$&}SX=56D5(6~KgVWH0Z2Hv<~z$VAm%FYzPJhE+%I zQegCl1Iu_BO(6Bi_|X$;SGdwIoJ$6vY9e~`X55Eb3Jh<(W77v#RQC=e7ttmhwe1vy5vdSTAY&?MQ4e8k>X*Wq(i-0jq;o&XJEUTPKM|-09f*Ktogis?d+2AsXv3rRa>Ym(cx6 zZ44_et!eGO)EEbO3D*(8b|0?e=Gby99BF488=B|O+u>UGHheTD9QR+pJU{D?5S6X_ zL*o7VtTw+jB_ncLiiMe}8jn_@Mv9|*Q;!eyo;lrXfg!UO0!zTm|Qqm=p(WLwx{J$Qc!=dyQ(g}!@ zG@Oa;sZGUm+Yij+&812wv*7bR+z-8GK>!*q=gTx0`?OPfXx>;B=|Xkr0LA7uQrSoy z;@AFNF$DXT9~Fty&w9ZvPSWMW>U>*E@qh9pX*GSV7t)ErWY>xGs}_=Uk<6`h{KD$m z^mo2H_Vx9x!eCVFJ!Y=JIuj;eHPe*1`(RT5ds9tLb&{iO{am-zAG{Eh<@F)W8=N=1?hW6(h^w4}65tZdA_1(r=kdk(TI6 z3Iz^3QKdX4Fy`oh0gX_Y%X1cA5c2>-{Sz)S>6v1ypv`Z#PZQa7jI(ifbvYbc`q$6r zhgrc;!0UK16lxZ=M;4tpyRmNo6}#{3H(aT(A+CsX!T4;ZWJNoOH6ju4k^WcXj3 zkNqQbP(ia#bV>U}2hnE6(6wHRSG$`b2=X;v**8H^R!PBU*d;#~w(tLTlT8>Ip*Rk3 z3j=9oID@pZ(y=NHj~~8SN3?>HW7pmx4iGbx;kIMKwTIAthkIh9 z$PJbiUrG(BJf1QhTn0(bMh5DKs5%=p3(|+6qfYzwgjqwmFG}F}(+_&|I|%`7H7KEJY;s6oJGI+^!ipgeENMvF|o> zpveL(Y&PS1KMB~u_~rGYFoy%)s0cadEHkI4^XmX=I_n&X*P4E%GZ#RW0%_ZA}&?a&Dh5+IW?M|!UL#Ffq@O{tF zzy8}jVCf2;y$2(-F0D_Ne4&h4h0*7Ex4>JA`*kRfn zLmglhaon0)LzOa3-sLPnT*);L>iM@ocBKt4Bh9Asb-5eq!_V9fKsoK$xOo_exMZ^y zn1g$%I#6-kF{}n&!>!m8>VcRdU1AWa(b!^$SX2a&f^;8Gs8DFHSXvtLsHgaFR@DA- zReug7D{lkAd#?~x;aGQyt0&*o4}j{W;)yOTm8QE32Gj1;yC;YK(oBjBq7-v0lwpYm z?K4;clYEqA@e!2ASc0?^%e!$pW@wVnO~R#AC;PNMf!T; zUB>dfk+1X$erpnXWe$tgoUx`p(t8B<_4e%FxBdfDJtVVnE2;t$5WF6T-*+%a6*qyv zqtRZGPYk%8tl?i=02qBQXx2~cTib;B8r;wSekykVTihU0yU6Qij{L^L$`Pu{5ajlo zBaLQmt-ljeYWaZTCrvJgPES9MciT@@*>5kW8DNaAO8AS`rc%t;B7%<7WZ|?qiNwlR z$NCN^7id88!KP~B0VvvD4ze{lQgb?t)}!PY7-oh~%W6BS5-JgjsT4KDbg=Dwibp-B zRnRO7GU+*`ZSfUrPHf`RhlRF6Nj0Q^yCp(n~$D#Gk*4t9b zwSP*NhrB2|jx~dlS=+5)MS1&}s4i+mN#J@}H3x0r;rP{oftyC~f$JywB3VkSX;jEf zycPk7LGD?r1Hc95wHRZKAyP)_t&IA=Ji(zUPB%E8NfKk(Ri+relAsZQ+u;sbH;*1l z%>2+6chrH*Sr~cx1TE5dx!i`qzA}&*(Y{Vs;)bh-oRkUOi6be5~sRm}L;Ls(8Lh^ZUZ-uOdHOxe*OAi5?| zf0v)ZN{Z+}52uF{N4u3p;x0@TcsIQQsi@Z0ioy!xy`CMBnn4)Ec+{uV>3TF`ieHXdJmeI# zTR>ZDgL8@s=k1oC&1(ZFT20TK?3Z-V?<=xDg6Qcld2VUS-FZ`enWKy>BjusP(Enz= zdUQEOU`Zr^1pqhECc(c&+?vcY0{BGY);n{PC9(C;DEJicq3nlhM{!%9R{2T{LY z$>ukD4$w~_cplc0CSX`fUCb72Gjxm|JT#pu&Yb;m%@LjsatqO39CCjd=~arSi$|fi zqr+y}iRm@@pF!AIpBe>a@Z>h!UMVq`lX$Xv%cr_2P~8C}^rum%&e!20#x6l1(Qa54 z>pZCr+mjVrUwnZu1~A>g()gw{ff%M#c^FVtX6K8l-Y5zDwkY542P%!HcP*6t-mR_Q z(^aa5X0wJGDON{_C5al?R~-ZK+!;3a_+RJ)-T#g@NRh}HqwV_or^TKA?_#%uFU#b# zyjt9Atw?khNLOu^2IWi!CuA9#iSxU`-Bm&GZ}5V-S0l#;3E(|sc6g6zuwH6$s0G-i zV^ONQ@&dAQSe0X1*;v!gQysE_gBneyEkNsC??rVJ7a1eEl7tgrbCN-?+!_y*cu5pP z!TAoSK!6*z4&|n$9mcS=oS-Dh}uWOS>c-XS7F3YPYG2QZL#qCN$jY6`(f@r#<7ZiN&#%g z1B+&4J!fsE6WK~j4h6+TPWC;9fln`y$X&QW zmT)6Z=!{9GbMSuQJ`lcx4^*B+e;<C2(M&LwA;u^8$ut`K z@5w=*_0K;*2N7O_2d?nAzi0eV^}Ae9Jb-VX7#uTF5{Nc=rHK(IQE>f<N{|4<&*T2K1`e_U%`Vz zn(S;DcSwLqbYBN=+Dgf(u9Uw`kN}S9=Koan-D!6n+E_#04#hS8gw%*h(cl>qm9M*f-GlVihc%PTVAzZB_Y%d zk5e-dVOKnTY?|6VvQtiJqXR{t>N19ocY^6kGTIVs1DsGII?M;bZ3}y&a`U-Wm)mHn7s(Gjmp7 z$27c2^95PR-e%Y~zg7y)85d|0{4z0P;9L%1soAq5gZLpj{}KO!>Ob5~wsrl$`VmEf zTkC$A>gByZXqWI-KoncsS2>L#{@q%;wmc#bnV(-RvJa!hqBRX=fK^COLQe}?sLGj?q5_yBZ8c(Kz`XLQohXS|*8I;-qasRi2{5ceW; zDreTY5$G(xaaF`YPB0H(j@+UCq4cKF7tOb9^dc2LQd!4W5F1F(@qPfGG-#lavs?vd zk)MKSC|}33FEJsI+i_?>`1!Dhcb9eSwph)=U>SD;XC>jXRs#XWJ4rKF`yU&H{R3tY zkN3Tg7xSYC+6j)*|K0B{5Ry1Fxx#gSENz>8PuLWMr&FeKb|Sf72hLo04(}vrZ$?brgXa7wuXQS}bIHNKRpFa}>FixVD-^ z(q@X$0?#zDhVei9V9pdKaBE5@hWnKq-2`O>Ck1l8aT@55Jwf-!&%lJ+8*x|I`4w^n4icL9M@C5iZzU%_b?Q}SuYBuU!j&~vk0NhIU%`_3JhrU;ob#OFb zOCDU4&aj+Zz!sV)f>Bn?jUWUJ@$Y_>BoiAcYO06CX9JustopG@6n@ zF7?VrWZvOIS&xlAddw^1^v4kZ?Xc;C?7!sYhTDXw8eAOCEsFq0A zXm!Vat1%NoUE%frRv9gpP3F`&=Z7#F(H`xAD(c2FIw!Y;1#lZrUZFemW7qqnNZs#o z7$;83wWa=mu!-3{RgJgN( zVgk5|W6%dZPn)dqHPIk?7ea}V;9BiBk=n+_`{|VZ!5Q~`1NRz+oPf4bTu~UegD!G? z#fHL~UyEtBaa|T0I>!(Fr{FP_NAt+A$Gc3RS+bxts}EXE4KsnV#!5elgETcCl0$Xu*-Ci+g+8 zhlisJL>s%%PdU0a7^QYUcZZoji8b>H;nm4#Q#1YJg`P zzquB4Hl~Zocn~;t-ZInVHV?e!2D*vMIrqtSSwZcwNQ(oqZJ=yH&cMeo&S1jT$L z(ZOOZNQ7O%JTvASiV(FJ>!2f_>D!{XyFDyNiUS$8;Au834zUln^)gt1BiNifBG4ju ztir1p9h~&zGSI%IUEHXxEbXCiy?GF`Zw1;fNMMEnQ}Ln{)nIAb`SS6QM%7q`vU!si zQ$Qk&=DHsAb7s{+wB5~~v`P_+f}^-5<)MMHbJc2JjY`B2WG9E)bHC(CwGp585+*Mu zG@%i|W5Y>zZLv|y((fbp6sW9!Iyze3AXDH5=*cPBtzEk7W73tv32f>yGZus=Ky-bA zgvQHk87-i-1r^=tEgyR) zf8ZSgR~>*G z%Lj+t^z`dlMyJ_^F#j;J%x5~umW#rVtv#NP-x9>Wp3wc_nYr;lmvia3W3cQWxB{b3 z#5PZGZiQCBFK9No2`*i**%|4k9+I}fP@l-0vCeFm3;4`lfZQ>5IDLxlsl@YVVQIAs{ z3RQAy40WfyNJGh@AtvY280euar$`6!gOK>IU%u9E*Hb2-?8}Z>8937wxfkwu0?|bT zB$eDQ&$?TI0DdYx<}Fooi2Iarn!3XqA!7g+%hIf zgIG^0PG?DAT!(f=lx_45rowcQKh-GYP!O_kD9*$FBual&+##v#MBJ8*T?iCi+F@OUCD#+2%7l=;x4M%AcAmjxHFASRqq5u#XqfRi*))hW zIQAWG`=p!zv=LR6BI{&fEhR>*Es3*;xz(Zt(ghe$5UN)H1Y^u1v_bif))Ffjvr8cf zqPKKUWdVU=a&&HUM1gp-X+aS4_cWyNgHbVF%}AQ>FSdJmbXIAPo!CkQXpoKf zL@~-=4rMta(*Ce#HkzO*cFcS@nsj$1*>sGLOE@R9Ylb)RqTU^z!B)z1zzd!}ip1rL0bbc@4dq^&i_z0>7SldrlE>Ka7_SY#7 zKc1&Os=t+RyTc<4Kv_i!k(KV!5 zo(g2c&LCm2k~mW-a`xjBLGU@T0)k3j)8!(Cv;=57+%2OR7)=7_nB7ib$e2hiL}dDt zyH6l=#tsq0O`TXZH3z+Du@Y{*a3RJ8)>bmN0cQFD%z_o5fc+5=n-vMJ*W&iCwtW6^ z$&>z(4;~*3%q7mVFCRP`Ag~u^iSIl_AxtM+*jKxU0NswfO^FIW>Yc8b2WhPAHkB2+ zND<++>?cI`X0Sv&5yDEBjh@JZwfYLF#s+0Tc5w zEok&9{SQCCUW_UT*JkjREWClsM_?;@$84TImLO&yQP80)Vaf^t$-*VX|9l9#?w6yT zh>($YBqmNxi5HYK1SPu<0qO4M`i*SnYeYLD(yK0nXhoxhNgkAUSv=wRw7u@4L+5Bj z^S+#-hc|-PH(FIgsjRmWVdEn-tSDE2ZDRq&Wxci(1T5#a(qLQfAZ1ou2Xb<6+Uc|T zORtNHTnBhXwMjKA*9nGQbl$Me6K_kywmDF>sAGa=%Qa8LGhvemeef;i<4qG|y5?zO z9#yV=XelwY;TC5jigqK$)(fi0dhGLAoYobf4Dx7&^^t=g+WPo5GzYQ%+eipZiJL)& zXX>HUR)`t2gv)J8Rix<0(Q`Ne5fEchEpA_K=Np2>Zx)7DW*C_$O7E{=CP)S9xO&6I z58sC#9Se5~Mme<_hEFpbzuw!w_rf!gK+)gxN3hQ1b_|8U&`Num;SmYv!>)O`;ip`l z8=3PnGz|X_<=|<_FbpBayBvbgZ{G3s{sZVkG!`#JmB5tSbvw)ofDDGE{zP5@qrT*9 zJ7v``+i;Sn9rkIM7QepTo>pM(qF!@@gq8q9Hv&ncYXeWQ(C_pF1!0=_wBzNorbTmO z=X0d{SF9*Ni@Md`?q3cu3-QpNa^ljK7*OHBE#QG0A72fZ&yB_xrK4T`8##SwGz_Kb zNpCJ*D8*4F>dPKSI+YR2@qPL_O$k~@4JADcf~D(`K4l4{Xns1iFlq1^knm{pz$1l{ zdq#{+rZ^%+@1xWGS)d|{;JsrcZ7{!*1&ZE@S%nuwVS3Y^cbLz~=phaX_#AWr5f&jeUHVmYp z_(oihSo8%@$K;E5=%6sss3YegioE&zL6lincsQy|Leg8og&}AAd{h6&23`L^@l%L8 zpz*s-&;5;rhBu7cq!ZWvp5TjO1D3L1?bW+(B*$QmTT400%kStPaw!0JR3{iz=>U;; zbVF@8ZdC2|>5M{~@DjLF`tV$Xfhpo?=In0MHJ$~cuTMk+ZB?MpEOFtP$K6dBD{787 zx|5`YiqOdv_!Y9`Fi2^llUtOsP0o58(BLQP52{l%%SM(FI(97OtJnsHOot~@$uvX4&DR+ z1%%SIr%+5DtHHA-kuW9;SqD?1#7UA4?GmHLq;s@yg&HA%)Oz^U*On&l;wAs8r-U#R z5T9QWJOvyQo@-%1AMb=x`zRpnh0m-foYE+)LJP1S(1KHyQpCRH_e;4U0hovQ^_NFA zXvKi$EArIVU%c|tu&zDzZ-LMlzV48H)EjcMd8HLyooI-?JSHQsJry z+m#LaQ*JK{(WBt5S(wt0`o>I4V>LPP&bUfaxR3ZW`fvr2*h%y#)CBmKRBJei4KY!O zT8w^P>)E@uB!HvRKz@0@J|3|kh0shx8Wn94#S!67eG&l*bLlB!&KW5;MHj5k&9d#_ zEw1}EKt?sknFd4g8AC~)aYuTH2U=8HAN+(%0ehGJz&P9HRQWp!+M>kOQ62&EFVbuh z`sNM?doV(97^;v2(KYyfDFYF}#{3GEOLP`!sAFl#!B`N#U!2C$|MNlDzr_B*T-*uK zPU8}{<4FfwOFvvNm|m&B+djbQZ@T^UG_g~oUkFx&`?mI#k5%oL|2EbCV^+(wMHy0_ zfmC658*By#Y?0m0TdBm_sL zN3E0@6iWRJ+t!jH@lSV#&c=Qb`4X>cW6^9%wyOEy&scNdn$~y?JCp@1iut^B7!NVF zB+iE>{awm(DM+5;YY&lKH_|z#TVnldipwq;=Oxq$^h5ozpv2~Fq_uXc5Hm$;L`$bV znh@q7Gx(dJ`Oh1@T?P^svm-ltOn(cvU4WO&p z7wr>{#y|s6eMXz7BctF@nL={~|Cj+A)r;ejKp;=dbhq6wyxzz;!M8ZJS;>tQgC$2X zDmPk3Y{}@%2r)*c8+q-y-#}a6Rb$6lO#T4bHX?zFeqsj$zCM9lKd8)UWUXz+jzZXX zlcPA=fspaucoUi3-nKqoP;p^Vb~lLB5~uxT8TTQtzN4LM6LC~SHsiR z)cV2M{K}d9X+7s@^bCk__b97tV}{DUoPA*C}=T5bO|7 zoPQxwO1vlK`RT+=GpO&$q_N zPc|HEHME-`rm+uNEP-))1{))iaWzG-2@kENQgRNr`Wi`fm3tyU_>|Xhq9L}7 zvsX6^lwg(dt!O_qu9R8LMK37)7;D#3xj2=V7@dZFU}C}cnMv+9@Qv%d=8&NG?TTYY zSL2~TM~=N%-A#jO;PdVICGfaqn1jkan^qto0W7W#+lp~26^jIw)OsVroT zu!%T4u2U6f7G9@uB!2i+&=fdsgHwCIx0fpPq+o)zXfPBD>v3RT3>G=zYV@P0&RMsQzUp>oog(ALlD{?Ol8j5p ztz`zrcIqfPvfl84(R7U=)#rP&KNtKzFiSHe>b#_ZoxLsm#<5|P7J!wwM*;iR9VHF#8c zM~@Zj*MtfsDN^*hi&M1$qx3#rGme#1S#RIkT34vZ61joC<^jJlgJMj~_1*JgIyX;@TumuNR!64zm@icZz%E!z%O z+}Qb2pR#+kfjuryx}lp1RX)eH+X`F)VQLJmVwvK<#D_S9uk=4ek&6NHlpdGPhUpdS zg>Q)t$&>P0FCp01PVxxT69@`|*Sg1DRki6V`(<#9KnQmEd+xw_n@r$d2G~2shcwSt zjVa^%^g<7?cH;?8N+X>1eoXbhC5=dE0o#%CWBATuV%T&BuSqE&=%<;(g{q=G#Pj@1 zgmAsZqvqIm`a*Qi=#XEhuvSM{5;5hsI11Am_jp@m{)wm)e`kIdUj@;bSKXv^@2X(A zf3+|4&nu#T5D_MGBD5GO`rhsC!Sb8LQuu^IgBc;88^6d|;PU@X?lws;lLfeaEpXU< zF=8WXzgsozb`TDTye@jpi1C@-&HEEsL_nNshudpzSMnH3L&)CkoU9o5~nxcrJe1lS@B8-48b5{G#TR>YA zuH$u>kd_v#xSx3?ajZYB)qTio>Xa*OWh`b2Tmq>VmQf7va8S{u-RFJEmxylNAnYt+ zSrWj@>0fw&2>$8zb$s2zeY=G?M*C!&F>;IbkJkD(WjXtKi$xz?|3Hy`N0tm<3rZfK&LhREfaeEe)dI$YrZFAtg=dP71iJk zg=Tlo#B7nu`C2N-)Xe(pGHQP<6;1b#0ICs-yZ9r794R0w+c(ZN-<1CUkGXeCl4M7c zWH(gQWOy6)zp)DzsKCrUB6B|K&^^^O(=(Nok>PF+K%pwa;^7WQjr)E`cop3io6{!e z+IJ+t^L5%SjdyhYhftfum16QH8cW2_uV1}gjcQ2LUo)^OV-8B(vp@ef^wKE&dLQU9 zdC+d;;9|Lb5>c26upHYxHvtK}CU*N12uzFjt~zyNYsAc zf5I_;-N1dbujts>xjys@5e;lwo3cvHv0(Y`rV%(gv+9y-2UnL8$NHc+dB6jB=1x9^UynpV-5?hX|M0cK5e9XsrVm zPU(tm-`8d3W3_J8l%o)CwRWKyei>7f? zf}DI#!AAuhfkH#mwh)t2@ym-{L~Z^49{dqwQao1I@VpFr38xkvrFPqR9r4h3qu_mL zwsa2G06{>$zYl`cpZ57TjkQ;q66#9a98mV?4Hb7ZS=jWs4igJc4;)&EeLdU?BzWl@ z6~V9k+^P%jffCVdWpIInS4JNS!Oz;A;Wysq7-l6lXzbzG999Z=1Vqr-*rJf0j9nod z+hk%u>{f2ArOZ<+E(4uVbJF2w4O|uDW&0LpWbgzx0e?Zq9_oVc$zF&qnI6ap6nFLe z@r$%mG%HCBvuvg$DQRG|4gX`Sz+X3e3zgY@DT%(*pv!Jx(R0Kk!Rai1Ffq&=@`&q8 zPx|%Z@b>sCWSr7ySxfl{cNj${1uClb=z(9Ln~5@8#Zb60*oHy=AU5?Rt^v#DT%BXI zI20sKJ$hT9K9wo3?iJr~{|N~#eZm*_@R<~(8xsIxgTGD2 z5W^650&=&$`a!Jk^BF_DmWqtdCkLe_y_Sl?qm+@_D1!ORKOxHRrzM82I`i8aVy{WV zNdISe>Tti)8B9kSqJi}d#);7w_I4ZrCkS_4UYKONmI&hoQi#y4bW`f?>|}`&%fiRk z;7_Q#=`1Py=?>93{ec~5u#eq0hfCP%kMvcA76NC_Lio$5z}v%z>5AJVOtE{s1eZZ> z21U6X_{Yw5p3M|KxGxv)DU@de_P|ck^LS#oI1i=~x%T@i=M4yXL?R5<2`LU4QOqQf zw~T%UXw*3*x4&nGL%>B&OI{qIweIlY?lxI(ihE^Tm*$~{bdjp&Ge;cN4Xc=UGS(wv zn_@Bg7+=p`OhEWsRk+!(K9M7_-B|V^iyAJW@^Rr%$kg;6OWmTUDC#7g$A+uRqjp1XKbWb;0U_<H?;KSpWNzvHTB#fLO;dLT3~l z>8+23!;XwyfP%N|k*fVd){ge;O*m6O^;SaCj~WP_8@xZbb>S-b`ujoZ5#ukDYgC=B zjwWlpn%On-)Hnq*SBb*{tKoViSQ)dimI^1QWy$jFkV^2esu8ph-*(WOvFV?>h<0j7LjO-ZI zhhq8r!P;Xz!aGn?op8*`0f`!R-X4`=bfvl`^(_oSXoarL{dZ(KwSe3%&FaAfT8yo8 z_S4uW*9p925QXT*F->5$S89w|K=t0homN%aoqU@V*wThaU?_5MSQCoo%%-(I%x&0+ z>TQE;(e+MC(-FXOw!}4Kv?qlTZb;+6TaRzo zk6;)h7$O9&>nd>nkT;jDeEic;j8-1G9q7ZZ_fTvU5gT`3;k{One?9QvT(Tv-#^{B> zrD9Ud*IJ=i5wV?*Bj@V}V){AIYAcw*h%07TOao?hTwa!AuHZ(pll`p#iLIjPc+-`0 z9IqE)7!b#g`THlQ8L1V=kCe~9UKx)7vg_w#5hBP4M$mY(9C7AH+s9y3AO(y=9)ci6 zUQ@K?kt0vBn>EFDoGYoq>(x13ElE8f8&Rhi5XQok`x6#hmHh+P;-n^U4d}n4ns-Q= zoU^RSM=Vom+idt}K69;2waDdcs(G+6B=5)d6LyMU0G5{ma@RxI&39hg1F5N$h_5n8(Dq3+~V z+oOv>OGNF@#O@o^4mEfX+ed=N5OE4z;3`&w2eclA^&i;9UUAwK)9YVn&=AEs{g(;) z0hwX^^NM>W)YKtmq~qyKh)OuRH%creQnMQr-ciF{xSvowI{_HiB1fqfOb!YtkzZ>I z8~FES+G<@+D~d&M8;iLL(js={__wZIiL+~tFuKo6I3X-!Q8+Le2OUNmvmT|nxO`L# zBfj=*I`L6KStz|;PUzGkHpL&&)kWo7IL=lZX=!^iAdmAL%W6`j>xiXhNZgbpExw~s zF%$++l;hbPmn})Q^t#pNQ}F_+$M$^{3z*S2xncGV55_l2xU`%~7>>P6`IN+cZ$p`2 zagE8S=D^L~64!-E7)p}chgz=O+UDp@$8JcMN5O2n9r2&T$H5-B%Gcs!G`AW+

    XZ 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

    +12OlagooYSlrx%b}z~sf?)+@CQNt47UqoPq; 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�qq5W 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Π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

    wgT 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%0D7`xuREf7XiLah1D1NDZs03~Zq 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 Yuh0d@`hrP~9-aDS>7r_=|c2XHJL! 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

    `X8lcX)%U~?*RT&tG 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

    1s_n3{;6+m1#4y2Lpsb>4ke0ek-vb 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

  • @)D9 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 MAE26F8LO*B0HLCN(f|Me diff --git a/doc/development/ecs-edge-cohort-controlled-results.json b/doc/development/ecs-edge-cohort-controlled-results.json deleted file mode 100644 index 2df9154603..0000000000 --- a/doc/development/ecs-edge-cohort-controlled-results.json +++ /dev/null @@ -1,4593 +0,0 @@ -{ - "schema_version": 1, - "date": "2026-10-19", - "baseline_commit": "668b60cc2a9559f79abb9c33acd959833376344f", - "implementation_commit": "e8b6b78363a9c8cd0b178b99e6d18feda191cbf6", - "kernel_implementation_changed": false, - "source_sha256": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "2bf062b9bbb84e2fa4c3fd2132f3ca68e4c9cb91a093a70a600f1c1eb045b3a6", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474", - "source/tests/pt_expt/kernels/test_so2_edge_cohort.py": "e950f552d1b7012e58e7ff2190e1eeec565d9572a63d65111a527331a14c9737" - }, - "environment": { - "gpu": "RTX 5090", - "driver": "595.91.07", - "torch": "2.11.0+cu128", - "cuda": "12.8", - "triton": "3.6.0", - "so2_dtype": "float32", - "tf32": false, - "amp": false, - "model": "DPA4-Neo-OMat24-v20260627.pt", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d" - }, - "method": { - "inference_backend": "make_fx -> aot_module_simplified -> compile_fx_inner; no Dynamo inference frontend", - "normal_api": "ASE energy/forces/virial/stress including neighbor construction", - "primary_precision": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "no_global_clock_changes": true, - "thread_affinity": "GPU0 CPU8 + monitor16; GPU1 CPU40 + monitor48", - "uncertainty": "independent processes are replicates; frame counts and conditional block intervals do not prove population equivalence", - "rejected_rule": "a change below 3% is not automatically noise" - }, - "primary_same_context_normal_api": { - "processes": [ - { - "run": "same_api_r0", - "first": "BASE", - "blocks": 24, - "logmean": 0.0029942139334827957, - "change_percent": 0.2998701069386458, - "conditional_block_ci95_percent": [ - 0.2160580917410669, - 0.3741272750221055 - ], - "worst_error_ratio": 0.37667335116014933, - "wrappers": { - "BASE": "538c9d7d866411c60e2903f740e84f7607c562a75d34fc6cba39a4311a427024", - "ECS": "45fcab253d559c8b8ce73c33f7a3b3ec6ec80421c59d9763eea8d0e7ac205e4e" - } - }, - { - "run": "same_api_r1", - "first": "ECS", - "blocks": 24, - "logmean": -0.001537485774856499, - "change_percent": -0.1536304449103964, - "conditional_block_ci95_percent": [ - -0.25581785218645947, - -0.037210522754869704 - ], - "worst_error_ratio": 0.3327401297734396, - "wrappers": { - "ECS": "5628c96d17ffb942c8016f909521c78912d8d3cf707c9f8433304a94f2721cd4", - "BASE": "7173409f6cdca1de469a759b96d087c3969b656517d43f6930a265d43493cb1e" - } - }, - { - "run": "same_api_r2", - "first": "BASE", - "blocks": 24, - "logmean": 0.003649310407773332, - "change_percent": 0.36559772483228126, - "conditional_block_ci95_percent": [ - 0.2666125841077847, - 0.4668921301933525 - ], - "worst_error_ratio": 0.3075668823537886, - "wrappers": { - "BASE": "538c9d7d866411c60e2903f740e84f7607c562a75d34fc6cba39a4311a427024", - "ECS": "45fcab253d559c8b8ce73c33f7a3b3ec6ec80421c59d9763eea8d0e7ac205e4e" - } - }, - { - "run": "same_api_r3", - "first": "ECS", - "blocks": 24, - "logmean": -0.0019256500356109967, - "change_percent": -0.1923797161101289, - "conditional_block_ci95_percent": [ - -0.31158433170386357, - -0.09145138740206932 - ], - "worst_error_ratio": 0.3444816224895775, - "wrappers": { - "ECS": "5628c96d17ffb942c8016f909521c78912d8d3cf707c9f8433304a94f2721cd4", - "BASE": "7173409f6cdca1de469a759b96d087c3969b656517d43f6930a265d43493cb1e" - } - } - ], - "process_count": 4, - "mean_change_percent": 0.07954133062130357, - "process_t95_percent": [ - -0.38661480593790803, - 0.547878916422788 - ], - "confidence_note": "processes, not frames, are independent replicates; conditional block intervals do not establish population equivalence", - "stats": { - "BASE": { - "samples": 9600, - "p50_ms": 11.68358139693737, - "p90_ms": 11.911459197290242 - }, - "ECS": { - "samples": 9600, - "p50_ms": 11.708142468705773, - "p90_ms": 11.9329929118976 - } - }, - "scope": "normal full ASE API, both implementations in one CUDA context; two calculators, actual master and exact PR definitions; no Dynamo inference frontend" - }, - "clock_matched_sensitivity": { - "criteria": "block mean SM clock difference <=0.5%, both memory clocks 13801MHz, mean temperature difference <=2C", - "primary": false, - "caveat": "post-stratified sensitivity analysis; conditioning can change composition and does not prove constant clocks or replace full results", - "processes": [ - { - "run": "same_api_r0", - "retained_blocks": 22, - "blocks": [ - { - "block": 1, - "logratio": 0.0028716235008769964, - "sm_mhz": { - "BASE": 2822.4347826086955, - "ECS": 2823.6521739130435 - } - }, - { - "block": 2, - "logratio": 0.0030438794030094307, - "sm_mhz": { - "BASE": 2825.478260869565, - "ECS": 2823.3478260869565 - } - }, - { - "block": 3, - "logratio": 0.00512300455927317, - "sm_mhz": { - "BASE": 2824.6666666666665, - "ECS": 2820.9545454545455 - } - }, - { - "block": 4, - "logratio": 0.00436331614460439, - "sm_mhz": { - "BASE": 2823.0434782608695, - "ECS": 2823.36 - } - }, - { - "block": 5, - "logratio": 0.002686576010344055, - "sm_mhz": { - "BASE": 2822.1304347826085, - "ECS": 2820.913043478261 - } - }, - { - "block": 6, - "logratio": 0.0032964977581597665, - "sm_mhz": { - "BASE": 2824.8695652173915, - "ECS": 2823.9565217391305 - } - }, - { - "block": 7, - "logratio": 0.00285706276185671, - "sm_mhz": { - "BASE": 2824.2608695652175, - "ECS": 2823.9565217391305 - } - }, - { - "block": 8, - "logratio": 0.00545304911232547, - "sm_mhz": { - "BASE": 2813.0, - "ECS": 2822.5416666666665 - } - }, - { - "block": 9, - "logratio": 0.005008737542294028, - "sm_mhz": { - "BASE": 2824.2608695652175, - "ECS": 2824.2608695652175 - } - }, - { - "block": 10, - "logratio": 0.004794177562289725, - "sm_mhz": { - "BASE": 2821.75, - "ECS": 2824.2608695652175 - } - }, - { - "block": 11, - "logratio": -0.00033211149625334, - "sm_mhz": { - "BASE": 2824.0833333333335, - "ECS": 2827.0 - } - }, - { - "block": 12, - "logratio": 0.0012528738811403706, - "sm_mhz": { - "BASE": 2821.521739130435, - "ECS": 2827.0 - } - }, - { - "block": 13, - "logratio": -0.0032679309816510127, - "sm_mhz": { - "BASE": 2807.8695652173915, - "ECS": 2820.086956521739 - } - }, - { - "block": 14, - "logratio": 0.002271437985801761, - "sm_mhz": { - "BASE": 2806.8695652173915, - "ECS": 2812.3478260869565 - } - }, - { - "block": 15, - "logratio": 0.003913371256543119, - "sm_mhz": { - "BASE": 2800.0416666666665, - "ECS": 2811.6363636363635 - } - }, - { - "block": 16, - "logratio": 0.005391604122262805, - "sm_mhz": { - "BASE": 2817.5652173913045, - "ECS": 2811.7391304347825 - } - }, - { - "block": 17, - "logratio": 0.0021853364857458146, - "sm_mhz": { - "BASE": 2809.2608695652175, - "ECS": 2806.521739130435 - } - }, - { - "block": 18, - "logratio": 0.0019569929468001845, - "sm_mhz": { - "BASE": 2816.8695652173915, - "ECS": 2807.521739130435 - } - }, - { - "block": 19, - "logratio": 0.002051886273785719, - "sm_mhz": { - "BASE": 2809.6666666666665, - "ECS": 2803.782608695652 - } - }, - { - "block": 20, - "logratio": 0.0025069274817441922, - "sm_mhz": { - "BASE": 2815.3333333333335, - "ECS": 2809.304347826087 - } - }, - { - "block": 21, - "logratio": 0.001546512369963171, - "sm_mhz": { - "BASE": 2808.0833333333335, - "ECS": 2806.6363636363635 - } - }, - { - "block": 23, - "logratio": 0.004902387008157927, - "sm_mhz": { - "BASE": 2802.0833333333335, - "ECS": 2815.2727272727275 - } - } - ], - "mean_logratio": 0.002903509622230657 - }, - { - "run": "same_api_r1", - "retained_blocks": 23, - "blocks": [ - { - "block": 1, - "logratio": -0.001692171763402861, - "sm_mhz": { - "BASE": 2820.6363636363635, - "ECS": 2821.8260869565215 - } - }, - { - "block": 2, - "logratio": -0.003119901634812461, - "sm_mhz": { - "BASE": 2822.391304347826, - "ECS": 2820.0 - } - }, - { - "block": 3, - "logratio": -0.003127075701074844, - "sm_mhz": { - "BASE": 2820.9545454545455, - "ECS": 2823.2083333333335 - } - }, - { - "block": 4, - "logratio": -0.0011921761110076368, - "sm_mhz": { - "BASE": 2820.608695652174, - "ECS": 2822.2272727272725 - } - }, - { - "block": 5, - "logratio": -0.0028242601945085433, - "sm_mhz": { - "BASE": 2821.217391304348, - "ECS": 2822.4347826086955 - } - }, - { - "block": 6, - "logratio": -0.00033087293111089267, - "sm_mhz": { - "BASE": 2821.8260869565215, - "ECS": 2824.1363636363635 - } - }, - { - "block": 7, - "logratio": -0.002652198517723914, - "sm_mhz": { - "BASE": 2821.590909090909, - "ECS": 2814.1304347826085 - } - }, - { - "block": 8, - "logratio": -0.0027796612840966795, - "sm_mhz": { - "BASE": 2822.2272727272725, - "ECS": 2823.6521739130435 - } - }, - { - "block": 9, - "logratio": -0.0019142997925727379, - "sm_mhz": { - "BASE": 2822.1304347826085, - "ECS": 2821.217391304348 - } - }, - { - "block": 10, - "logratio": -6.280917832945931e-06, - "sm_mhz": { - "BASE": 2822.8636363636365, - "ECS": 2823.5 - } - }, - { - "block": 11, - "logratio": -0.0006008618137776089, - "sm_mhz": { - "BASE": 2821.5454545454545, - "ECS": 2820.1739130434785 - } - }, - { - "block": 12, - "logratio": -0.0010094126764426115, - "sm_mhz": { - "BASE": 2816.0, - "ECS": 2810.304347826087 - } - }, - { - "block": 13, - "logratio": -0.001004108681392335, - "sm_mhz": { - "BASE": 2812.625, - "ECS": 2805.318181818182 - } - }, - { - "block": 14, - "logratio": -0.001915763671719528, - "sm_mhz": { - "BASE": 2814.181818181818, - "ECS": 2801.6521739130435 - } - }, - { - "block": 15, - "logratio": -0.0008815817033833717, - "sm_mhz": { - "BASE": 2810.1739130434785, - "ECS": 2802.0 - } - }, - { - "block": 16, - "logratio": -0.0023973091176170414, - "sm_mhz": { - "BASE": 2817.090909090909, - "ECS": 2809.913043478261 - } - }, - { - "block": 17, - "logratio": -0.0019317493103976346, - "sm_mhz": { - "BASE": 2815.478260869565, - "ECS": 2806.590909090909 - } - }, - { - "block": 18, - "logratio": -0.0012067052487729768, - "sm_mhz": { - "BASE": 2814.3333333333335, - "ECS": 2806.8695652173915 - } - }, - { - "block": 19, - "logratio": 0.001191768296656015, - "sm_mhz": { - "BASE": 2815.1304347826085, - "ECS": 2806.590909090909 - } - }, - { - "block": 20, - "logratio": -0.0034599160200707857, - "sm_mhz": { - "BASE": 2814.5454545454545, - "ECS": 2807.1739130434785 - } - }, - { - "block": 21, - "logratio": -0.0007130708443980893, - "sm_mhz": { - "BASE": 2815.478260869565, - "ECS": 2807.1304347826085 - } - }, - { - "block": 22, - "logratio": 0.008316182510481163, - "sm_mhz": { - "BASE": 2803.6363636363635, - "ECS": 2803.695652173913 - } - }, - { - "block": 23, - "logratio": -0.0027600702727861304, - "sm_mhz": { - "BASE": 2812.0, - "ECS": 2800.2608695652175 - } - } - ], - "mean_logratio": -0.0012178911913810631 - }, - { - "run": "same_api_r2", - "retained_blocks": 22, - "blocks": [ - { - "block": 1, - "logratio": 0.00030360745578139614, - "sm_mhz": { - "BASE": 2821.217391304348, - "ECS": 2813.318181818182 - } - }, - { - "block": 2, - "logratio": 0.0027640250938403277, - "sm_mhz": { - "BASE": 2827.0, - "ECS": 2824.2608695652175 - } - }, - { - "block": 3, - "logratio": 0.00476690417308312, - "sm_mhz": { - "BASE": 2821.521739130435, - "ECS": 2827.0 - } - }, - { - "block": 4, - "logratio": 0.003795467883834558, - "sm_mhz": { - "BASE": 2821.217391304348, - "ECS": 2824.0833333333335 - } - }, - { - "block": 5, - "logratio": 0.005243957751577266, - "sm_mhz": { - "BASE": 2821.521739130435, - "ECS": 2827.0 - } - }, - { - "block": 6, - "logratio": 0.005282512547641449, - "sm_mhz": { - "BASE": 2821.590909090909, - "ECS": 2824.375 - } - }, - { - "block": 7, - "logratio": 0.0009754923947022931, - "sm_mhz": { - "BASE": 2821.8260869565215, - "ECS": 2827.0 - } - }, - { - "block": 8, - "logratio": 0.005503805628825464, - "sm_mhz": { - "BASE": 2819.0434782608695, - "ECS": 2813.125 - } - }, - { - "block": 9, - "logratio": 0.005127983554682025, - "sm_mhz": { - "BASE": 2821.8260869565215, - "ECS": 2827.0 - } - }, - { - "block": 10, - "logratio": 0.004281626313858311, - "sm_mhz": { - "BASE": 2814.9166666666665, - "ECS": 2816.7272727272725 - } - }, - { - "block": 11, - "logratio": 0.004748379827354654, - "sm_mhz": { - "BASE": 2808.5652173913045, - "ECS": 2814.4347826086955 - } - }, - { - "block": 12, - "logratio": 0.007345642096450611, - "sm_mhz": { - "BASE": 2807.608695652174, - "ECS": 2814.086956521739 - } - }, - { - "block": 13, - "logratio": 0.0031641393697432463, - "sm_mhz": { - "BASE": 2806.521739130435, - "ECS": 2813.4545454545455 - } - }, - { - "block": 14, - "logratio": 0.007282437362431615, - "sm_mhz": { - "BASE": 2807.608695652174, - "ECS": 2816.8695652173915 - } - }, - { - "block": 15, - "logratio": 0.00804012696889922, - "sm_mhz": { - "BASE": 2810.9565217391305, - "ECS": 2805.5652173913045 - } - }, - { - "block": 16, - "logratio": -0.0015884497173273004, - "sm_mhz": { - "BASE": 2803.6666666666665, - "ECS": 2809.8695652173915 - } - }, - { - "block": 17, - "logratio": 0.0014360026121025271, - "sm_mhz": { - "BASE": 2810.304347826087, - "ECS": 2813.818181818182 - } - }, - { - "block": 18, - "logratio": 0.0017863296332549794, - "sm_mhz": { - "BASE": 2811.7916666666665, - "ECS": 2815.2272727272725 - } - }, - { - "block": 19, - "logratio": 0.0013262146546848541, - "sm_mhz": { - "BASE": 2810.304347826087, - "ECS": 2811.608695652174 - } - }, - { - "block": 20, - "logratio": 0.0023870705192710062, - "sm_mhz": { - "BASE": 2812.090909090909, - "ECS": 2812.3478260869565 - } - }, - { - "block": 21, - "logratio": 0.007555590958148173, - "sm_mhz": { - "BASE": 2809.8636363636365, - "ECS": 2811.9583333333335 - } - }, - { - "block": 22, - "logratio": 0.004038440067853699, - "sm_mhz": { - "BASE": 2812.090909090909, - "ECS": 2812.3478260869565 - } - } - ], - "mean_logratio": 0.00388942305230425 - }, - { - "run": "same_api_r3", - "retained_blocks": 23, - "blocks": [ - { - "block": 1, - "logratio": -0.0018937283658861936, - "sm_mhz": { - "BASE": 2811.375, - "ECS": 2820.0 - } - }, - { - "block": 2, - "logratio": -0.001205954139682941, - "sm_mhz": { - "BASE": 2826.391304347826, - "ECS": 2824.5652173913045 - } - }, - { - "block": 3, - "logratio": 0.00017800684290980584, - "sm_mhz": { - "BASE": 2821.2727272727275, - "ECS": 2824.7727272727275 - } - }, - { - "block": 4, - "logratio": 0.00031133899935431586, - "sm_mhz": { - "BASE": 2821.217391304348, - "ECS": 2825.5416666666665 - } - }, - { - "block": 5, - "logratio": -0.0030884491935352365, - "sm_mhz": { - "BASE": 2824.7727272727275, - "ECS": 2818.695652173913 - } - }, - { - "block": 6, - "logratio": -0.0026627683583360096, - "sm_mhz": { - "BASE": 2821.217391304348, - "ECS": 2825.1739130434785 - } - }, - { - "block": 7, - "logratio": -0.003560797160056861, - "sm_mhz": { - "BASE": 2821.8260869565215, - "ECS": 2823.818181818182 - } - }, - { - "block": 8, - "logratio": -0.00043459720135929913, - "sm_mhz": { - "BASE": 2813.318181818182, - "ECS": 2826.391304347826 - } - }, - { - "block": 9, - "logratio": -0.0018848507038642381, - "sm_mhz": { - "BASE": 2822.1304347826085, - "ECS": 2825.318181818182 - } - }, - { - "block": 10, - "logratio": -3.078778059073528e-05, - "sm_mhz": { - "BASE": 2823.5, - "ECS": 2820.8695652173915 - } - }, - { - "block": 11, - "logratio": -0.000878554824469191, - "sm_mhz": { - "BASE": 2824.5652173913045, - "ECS": 2826.391304347826 - } - }, - { - "block": 12, - "logratio": -0.002552570345722316, - "sm_mhz": { - "BASE": 2823.818181818182, - "ECS": 2823.3478260869565 - } - }, - { - "block": 13, - "logratio": -0.0018164345564883888, - "sm_mhz": { - "BASE": 2807.4347826086955, - "ECS": 2815.681818181818 - } - }, - { - "block": 14, - "logratio": -0.002886310209198939, - "sm_mhz": { - "BASE": 2813.478260869565, - "ECS": 2812.1739130434785 - } - }, - { - "block": 15, - "logratio": -0.0020690075813396547, - "sm_mhz": { - "BASE": 2810.090909090909, - "ECS": 2807.7391304347825 - } - }, - { - "block": 16, - "logratio": -0.001544629854110191, - "sm_mhz": { - "BASE": 2813.2608695652175, - "ECS": 2800.7391304347825 - } - }, - { - "block": 17, - "logratio": -0.007062031584247563, - "sm_mhz": { - "BASE": 2810.1739130434785, - "ECS": 2805.2727272727275 - } - }, - { - "block": 18, - "logratio": -0.00148487694449706, - "sm_mhz": { - "BASE": 2814.608695652174, - "ECS": 2813.695652173913 - } - }, - { - "block": 19, - "logratio": -0.01194964260560294, - "sm_mhz": { - "BASE": 2810.5652173913045, - "ECS": 2806.875 - } - }, - { - "block": 20, - "logratio": 0.0004017897977548479, - "sm_mhz": { - "BASE": 2808.9565217391305, - "ECS": 2809.590909090909 - } - }, - { - "block": 21, - "logratio": -0.0002992433409829687, - "sm_mhz": { - "BASE": 2810.217391304348, - "ECS": 2809.9545454545455 - } - }, - { - "block": 22, - "logratio": 0.0006963888987554512, - "sm_mhz": { - "BASE": 2809.8636363636365, - "ECS": 2808.695652173913 - } - }, - { - "block": 23, - "logratio": -0.0033566099909112523, - "sm_mhz": { - "BASE": 2810.217391304348, - "ECS": 2801.1304347826085 - } - } - ], - "mean_logratio": -0.0021336660957438068 - } - ], - "mean_change_percent": 0.08607140487792889, - "process_t95_percent": [ - -0.38732511965011324, - 0.5617176859726369 - ] - }, - "primary_hardware": { - "BASE": { - "mean_sampled_sm_mhz": 2776.837494325919, - "sm_mhz_histogram": { - "2715": 12, - "2790": 21, - "2820": 899, - "2827": 410, - "2805": 295, - "2812": 414, - "2782": 18, - "2797": 81, - "2760": 10, - "345": 10, - "180": 12, - "2775": 10, - "247": 11 - }, - "memory_mhz_histogram": { - "13801": 2193, - "810": 10 - }, - "temperature_range": [ - 34, - 47 - ], - "clock_reason_masks": { - "0": 2203 - } - }, - "ECS": { - "mean_sampled_sm_mhz": 2815.979972690032, - "sm_mhz_histogram": { - "2715": 3, - "2820": 648, - "2790": 30, - "2827": 620, - "2805": 345, - "2812": 409, - "2797": 129, - "2782": 6, - "2775": 7 - }, - "memory_mhz_histogram": { - "13801": 2197 - }, - "temperature_range": [ - 37, - 47 - ], - "clock_reason_masks": { - "0": 2197 - } - } - }, - "focused_cuda_tests": { - "passed": 60, - "warnings": 14, - "duration_seconds": 50.53 - }, - "cache_choice_audit": { - "3_BASE": { - "total": 110, - "common": 110, - "different_choices": [ - { - "key": "481b5eaf0863a955bf1b27c409a89fd0d887ff775a2039c1180b50005f4c4e1b.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "c51f1450e2dbf2dfdf96f9d9a24d6579bb6960a8164477df47e8b1c671a59459.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "836d62b61967369445baa2170231545e08e0a9938083acf1b3f3284ea50ca8ff.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "fd3be0f38cb22b0c109696f9fd052b265fbd8b6d2806acb2699bada606fd076f.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "b3172f8129aef67ad36e287181de6d995b9d05aea55a90a7b044c8b95fd670bf.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "b6d4ffcbaaa98b6289e2370a45043c2f4e4a29b92cf93f81041fd65e1d67e1a1.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "ebd2121db585838b4e95dd8e7dec9afb1d8b48cf96d86da816bfd30229fd7bf1.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "b36a2e30e0670d43d45b75478f264edb08db48e71f22f5f17d4d62dfe1e76ce1.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "b6dd6527c8ddf285b834936424739fa571a64de224a4329b5f43cda711772458.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 8, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "5b0ae63dfc19df474953623475716f67725b542707068c4d440cf014a7abc1b4.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "d4e7f8b5c9c60e8ddff42c99e2abcc39328212b9195eb1a341ded6e4b4e60ceb.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "4deaa98b07ebbce15c84b15163845c95cb50cebda7a2c8511e07b087a6f4fed0.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 16, - "num_warps": 2, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 64, - "R0_BLOCK": 16, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "bfc8cb09ea2205974ae805cb215f9a392f95011525b3b27a7eba23d4bb7330f1.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "ff901bac30b8c1a6b91b7194f20e1f1378f416d5cc30d5ddfb370db0aa1dc279.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "0f7faa18e83debef805dcc204ab39b372086f6be3acff0dcffeed5ac5f90cd87.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "9a5a4df838b2562da0de02f5bb75f02e701f2ad67c376df51d9c57c4e7a4a704.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "73822a71e4fba4878426d5d9db88739689431f5ce3d5dde1d2ec6deccacefc69.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "e940946c2192fe6effbeabc81599cc404b7e3ac2cf668f567bf649ea1ee26335.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "9ee2e90762aea15ba75b7066a0ccb760a7213b13b1d72d722ddae66069634fe6.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "f1045689b61a9131e8c2836254cfc96ab9b5fc8d38f5600de8d985f624f4c1fc.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "df8aa099c1cdcce62217028c3bfea0c8a2d72ef4434a189c9c3da022255a6a51.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "bd9f0a5607f1338452d0c17fe2216abe364777b7bc9b8742febc86679d806075.best_config", - "baseline": { - "XBLOCK": 8, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "b02d67db585fb2f7ae2ab33c063df911a9175cd6536a16807ccf77b9138b54ee.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "0386e83d7a8a1d21f562c83aa7f7f79c521eaed41413a2642a24c56b9c76364a.best_config", - "baseline": { - "XBLOCK": 64, - "R0_BLOCK": 32, - "num_warps": 16, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "219198755ba0c9f4b1747c28d19aa2ffca4c373b8b9b7837abf615075c8e20f1.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "de7622f1795fc03138403ec8b8e230b2449ce1740e0e2f670b2f095de7064d38.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "8048c877e767aef1337331b0b5a18a24c2d59aa2daa150a5ae646baa2101fcb5.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "552d4af8fe08461f0c73becf7b87f0b5134dcdb04087bf51a747fd60d0a0e705.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 2, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "960b2e55b2e7ae9bb4f3a7a4e48aad6274a11b6caf56fa246d686c758463dbbe.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "3299b1127e4bbaa0405e041aa28616f33a76b3eae1efe07f88b2461e3c179ee7.best_config", - "baseline": { - "XBLOCK": 32, - "R0_BLOCK": 32, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "f3b6463f86a975601225ef85441966e1c9541c89c9d07251d2099401fc4ca02b.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "72eaa88a99ca86ae56ebf17c92028523b09e8ff5fe9f219a1822b1b9475be3eb.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "f230d872f307eb986ae8fd07adccb04ce4468ebadafd4cdfc4d6753ac8d8c51e.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "64d91eb4dc4173d1a37f7eeed8887d2d6d8b99cfe0c22322b38f511763bbaa5a.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "ab79b3b58e2842c35da9b3af4e2ac29421eb0cfedd742ff32d57b65d5c3661e9.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "a23b7ee84cdf77c88130163f9ffb50a572c972c123a400fe5b3afe6b1f1c6e44.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 64, - "R0_BLOCK": 4, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "757fe12a6d4c4cb12ad657afcdcf0e1174cd69791886c70dbf0a4e111ba9b290.best_config", - "baseline": { - "XBLOCK": 64, - "R0_BLOCK": 32, - "num_warps": 16, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 8, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "c71ce21bb17bf7e4f0034c7ab97ac60ffa9954db2436c6556e5935eb7b575872.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "ef39c45cded32a95c94657c3fee9b23e9b4332f2d03b1ee3a922ecb0c56ec85a.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 8, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "ceaf0da3a2fa15e02b5e2a28a93b4ee256b9577559d55bd1581bdae332b16629.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "4cba4393ab0c05df7b88e4a6f38db04dfb8150933ca0ff938751a8741fb62eac.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "2c91452b7e8f35c92f5ca857c8e8b9bce56cd891240faddff298291e5532834d.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "6f84bcac51dc18e4488956c6159735d214b610943ae941a4100763b5e38898eb.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "d0969a1eac3a93ee40e7c260e97edbd734dc22507307416a0920cc2030f990fa.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "db98a6c58bcede96e8fff3bc418d7e15828d9c3ed94b02ac60d601d35d1b321e.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 32, - "R0_BLOCK": 32, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "024904826d32817024ef178f0f7221c1115ae5768592a69ff7b7b3227ff4b7ef.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "7822ec213930d270d22fd09e8b3e4b811330036a07ea06bf38bde4a6c094a1fb.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 32, - "R0_BLOCK": 32, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "317b7d1c393c9afb4c237f577fb9930a3866c6b94e69b116855b15a5380e6b3b.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - } - ] - }, - "2_FIXED": { - "total": 110, - "common": 109, - "different_choices": [ - { - "key": "95d97949ac3bf784e65ee78b8cb2d0dd44d228fd57f3c18c3849632892b47324.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "dee7675c1ad83c56eb456e91a902abd51b37a6d91b48bf06d997fb6e4b509819.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "fd3be0f38cb22b0c109696f9fd052b265fbd8b6d2806acb2699bada606fd076f.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "b3172f8129aef67ad36e287181de6d995b9d05aea55a90a7b044c8b95fd670bf.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "bfc8cb09ea2205974ae805cb215f9a392f95011525b3b27a7eba23d4bb7330f1.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "18b14c8c502b362c2eb73e71c5e29805842bfcab6e91448029bae59d9bb93f92.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "0f7faa18e83debef805dcc204ab39b372086f6be3acff0dcffeed5ac5f90cd87.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "e302bb8b28f3d225b64c718f3d0b671894e36903aa34e48cba920757270bac91.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "195032f505d67c19b1998cce1746de12e705f019f3c4c02aaca3395e53cacc27.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 2, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "73822a71e4fba4878426d5d9db88739689431f5ce3d5dde1d2ec6deccacefc69.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "9ee2e90762aea15ba75b7066a0ccb760a7213b13b1d72d722ddae66069634fe6.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "e6f241463ab8a643f746bfa5ab176a9bd66350be542adbdf7c546c670147936e.best_config", - "baseline": { - "XBLOCK": 2, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 8, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "f1045689b61a9131e8c2836254cfc96ab9b5fc8d38f5600de8d985f624f4c1fc.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "8e56757bfe2e14a26f1bd4619a5148469bb8c66d785f84f04a72e1d9c987c2ad.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "df8aa099c1cdcce62217028c3bfea0c8a2d72ef4434a189c9c3da022255a6a51.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "b02d67db585fb2f7ae2ab33c063df911a9175cd6536a16807ccf77b9138b54ee.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "0386e83d7a8a1d21f562c83aa7f7f79c521eaed41413a2642a24c56b9c76364a.best_config", - "baseline": { - "XBLOCK": 64, - "R0_BLOCK": 32, - "num_warps": 16, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "adf31de99adcc0b7d983bdb5e39ae3394d3e023d40f99c4602e63091fc670769.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "8048c877e767aef1337331b0b5a18a24c2d59aa2daa150a5ae646baa2101fcb5.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "552d4af8fe08461f0c73becf7b87f0b5134dcdb04087bf51a747fd60d0a0e705.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 2, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "960b2e55b2e7ae9bb4f3a7a4e48aad6274a11b6caf56fa246d686c758463dbbe.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "3299b1127e4bbaa0405e041aa28616f33a76b3eae1efe07f88b2461e3c179ee7.best_config", - "baseline": { - "XBLOCK": 32, - "R0_BLOCK": 32, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "e6284c4b3b46e7d476636adf41769e87dadcb31974567528c0c743a7c2373302.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "0ab62ca7938c98b3744d6172b7c1802170738f8cee426ef6c6136b5d511e27b0.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 8, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "72eaa88a99ca86ae56ebf17c92028523b09e8ff5fe9f219a1822b1b9475be3eb.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "64d91eb4dc4173d1a37f7eeed8887d2d6d8b99cfe0c22322b38f511763bbaa5a.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "a2fc7b54fa34e55ca1f008c75273b872dc32a27856a0ab6fe8b2e1670106fd7f.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "56d8b1a34f6147f7e24fa355df1b05068021cb3f5053c0a504c041c0874d9b67.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "ab79b3b58e2842c35da9b3af4e2ac29421eb0cfedd742ff32d57b65d5c3661e9.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "128e14dc2ee731f9d2db3cefeb5ebee1c935712cab339048ca337b803e18745c.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "757fe12a6d4c4cb12ad657afcdcf0e1174cd69791886c70dbf0a4e111ba9b290.best_config", - "baseline": { - "XBLOCK": 64, - "R0_BLOCK": 32, - "num_warps": 16, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 2, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "c71ce21bb17bf7e4f0034c7ab97ac60ffa9954db2436c6556e5935eb7b575872.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "ef39c45cded32a95c94657c3fee9b23e9b4332f2d03b1ee3a922ecb0c56ec85a.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 8, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "1a2f6422d8257011f515da151c0e0de1b8050b11ab084d5703b92a8f9f65c1ee.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "ceaf0da3a2fa15e02b5e2a28a93b4ee256b9577559d55bd1581bdae332b16629.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "9f0bb56290b8ae83d2a3bce8f029ac71b872a5ee9dcc8628a84b2fe28ee14c6d.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "09930e885216eadc8562324c49151556a48acde6568bc5dd46bafee438b016d2.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "2b1c974d10d420ef6da428de6dc1abe53185d6667e67e696544059c52d79ad68.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "78ff6b2def47f94a8640054d10a9f45ab6dadcbd39e98ef6275df5467d5f1aa8.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "d0969a1eac3a93ee40e7c260e97edbd734dc22507307416a0920cc2030f990fa.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "db98a6c58bcede96e8fff3bc418d7e15828d9c3ed94b02ac60d601d35d1b321e.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 32, - "R0_BLOCK": 32, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "024904826d32817024ef178f0f7221c1115ae5768592a69ff7b7b3227ff4b7ef.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "3442117b8da00b42a7f2ded30b96709073d95158c3505f7b9889e28d4497212b.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "952de5fdca6afca62174cb068f5e660f89a654fbcf5d95e2c392900f3411ec05.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - } - ] - }, - "1_FIXED": { - "total": 110, - "common": 109, - "different_choices": [ - { - "key": "95d97949ac3bf784e65ee78b8cb2d0dd44d228fd57f3c18c3849632892b47324.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "dee7675c1ad83c56eb456e91a902abd51b37a6d91b48bf06d997fb6e4b509819.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "836d62b61967369445baa2170231545e08e0a9938083acf1b3f3284ea50ca8ff.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "fd3be0f38cb22b0c109696f9fd052b265fbd8b6d2806acb2699bada606fd076f.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "d86f8cdc45dcf33c0524b21f773314b48e0dd78e6d1eaa550e9c18a3f8c00906.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "b6d4ffcbaaa98b6289e2370a45043c2f4e4a29b92cf93f81041fd65e1d67e1a1.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "f6fec06df63d7bf7d7db498b4e28b39007dc82f54a196cce47e7b81edc60885b.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "5b0ae63dfc19df474953623475716f67725b542707068c4d440cf014a7abc1b4.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "d4e7f8b5c9c60e8ddff42c99e2abcc39328212b9195eb1a341ded6e4b4e60ceb.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "bfc8cb09ea2205974ae805cb215f9a392f95011525b3b27a7eba23d4bb7330f1.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "18b14c8c502b362c2eb73e71c5e29805842bfcab6e91448029bae59d9bb93f92.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "34db1f3bb187bbc93a9d59062d213cdc3bf2a349fe5e5c6fd6c7c84468a5dc72.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "73822a71e4fba4878426d5d9db88739689431f5ce3d5dde1d2ec6deccacefc69.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "9ee2e90762aea15ba75b7066a0ccb760a7213b13b1d72d722ddae66069634fe6.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "f75022ae7a25845337de1ae8bf49ca2600d6fa77797ee807063d18072e958136.best_config", - "baseline": { - "XBLOCK": 2, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 8, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "df8aa099c1cdcce62217028c3bfea0c8a2d72ef4434a189c9c3da022255a6a51.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "0386e83d7a8a1d21f562c83aa7f7f79c521eaed41413a2642a24c56b9c76364a.best_config", - "baseline": { - "XBLOCK": 64, - "R0_BLOCK": 32, - "num_warps": 16, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 2, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "219198755ba0c9f4b1747c28d19aa2ffca4c373b8b9b7837abf615075c8e20f1.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "de7622f1795fc03138403ec8b8e230b2449ce1740e0e2f670b2f095de7064d38.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "8048c877e767aef1337331b0b5a18a24c2d59aa2daa150a5ae646baa2101fcb5.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "552d4af8fe08461f0c73becf7b87f0b5134dcdb04087bf51a747fd60d0a0e705.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 2, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "960b2e55b2e7ae9bb4f3a7a4e48aad6274a11b6caf56fa246d686c758463dbbe.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "3299b1127e4bbaa0405e041aa28616f33a76b3eae1efe07f88b2461e3c179ee7.best_config", - "baseline": { - "XBLOCK": 32, - "R0_BLOCK": 32, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "5d956c57a997cc5e1b9ec0c9a9faa578a44ae246f93ab9ba8e3996cbf56b6f2f.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "72eaa88a99ca86ae56ebf17c92028523b09e8ff5fe9f219a1822b1b9475be3eb.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "f230d872f307eb986ae8fd07adccb04ce4468ebadafd4cdfc4d6753ac8d8c51e.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "64d91eb4dc4173d1a37f7eeed8887d2d6d8b99cfe0c22322b38f511763bbaa5a.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "56d8b1a34f6147f7e24fa355df1b05068021cb3f5053c0a504c041c0874d9b67.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "bd9a4e6b44047511a8399c709045ef133066bd8236923f6063027d9c2a148278.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "0946b4617397d4b4aa5f8c7110d62d46f891e8539cacdb780cc2a0e72ada350c.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "a23b7ee84cdf77c88130163f9ffb50a572c972c123a400fe5b3afe6b1f1c6e44.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 64, - "R0_BLOCK": 4, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "757fe12a6d4c4cb12ad657afcdcf0e1174cd69791886c70dbf0a4e111ba9b290.best_config", - "baseline": { - "XBLOCK": 64, - "R0_BLOCK": 32, - "num_warps": 16, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 2, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "c71ce21bb17bf7e4f0034c7ab97ac60ffa9954db2436c6556e5935eb7b575872.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "ef39c45cded32a95c94657c3fee9b23e9b4332f2d03b1ee3a922ecb0c56ec85a.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 8, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "09930e885216eadc8562324c49151556a48acde6568bc5dd46bafee438b016d2.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "2c91452b7e8f35c92f5ca857c8e8b9bce56cd891240faddff298291e5532834d.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "2b1c974d10d420ef6da428de6dc1abe53185d6667e67e696544059c52d79ad68.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "78ff6b2def47f94a8640054d10a9f45ab6dadcbd39e98ef6275df5467d5f1aa8.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "d0969a1eac3a93ee40e7c260e97edbd734dc22507307416a0920cc2030f990fa.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "952de5fdca6afca62174cb068f5e660f89a654fbcf5d95e2c392900f3411ec05.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "317b7d1c393c9afb4c237f577fb9930a3866c6b94e69b116855b15a5380e6b3b.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - } - ] - }, - "4_BASE": { - "total": 110, - "common": 110, - "different_choices": [ - { - "key": "481b5eaf0863a955bf1b27c409a89fd0d887ff775a2039c1180b50005f4c4e1b.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "95d97949ac3bf784e65ee78b8cb2d0dd44d228fd57f3c18c3849632892b47324.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "c51f1450e2dbf2dfdf96f9d9a24d6579bb6960a8164477df47e8b1c671a59459.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "836d62b61967369445baa2170231545e08e0a9938083acf1b3f3284ea50ca8ff.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "fd3be0f38cb22b0c109696f9fd052b265fbd8b6d2806acb2699bada606fd076f.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "b6d4ffcbaaa98b6289e2370a45043c2f4e4a29b92cf93f81041fd65e1d67e1a1.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "f6fec06df63d7bf7d7db498b4e28b39007dc82f54a196cce47e7b81edc60885b.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "ebd2121db585838b4e95dd8e7dec9afb1d8b48cf96d86da816bfd30229fd7bf1.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "b6dd6527c8ddf285b834936424739fa571a64de224a4329b5f43cda711772458.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 32, - "R0_BLOCK": 32, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "8712a8732a73919b44f218afdeb3d2e92105b6c4a1b4ce85e066e8f3533afae0.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "4deaa98b07ebbce15c84b15163845c95cb50cebda7a2c8511e07b087a6f4fed0.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 16, - "num_warps": 2, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 32, - "R0_BLOCK": 16, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "18b14c8c502b362c2eb73e71c5e29805842bfcab6e91448029bae59d9bb93f92.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "0f7faa18e83debef805dcc204ab39b372086f6be3acff0dcffeed5ac5f90cd87.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "9a5a4df838b2562da0de02f5bb75f02e701f2ad67c376df51d9c57c4e7a4a704.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "195032f505d67c19b1998cce1746de12e705f019f3c4c02aaca3395e53cacc27.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 2, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "74c024d1bcb3860fce2b7e11a6278f949ee4c9c225af7f91996615f6f68bf258.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "73822a71e4fba4878426d5d9db88739689431f5ce3d5dde1d2ec6deccacefc69.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "b8481c85a1d6227393d043dab7b6fab092f6fe0ef8c79867aabb0587a586f30d.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "9ee2e90762aea15ba75b7066a0ccb760a7213b13b1d72d722ddae66069634fe6.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "f1045689b61a9131e8c2836254cfc96ab9b5fc8d38f5600de8d985f624f4c1fc.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "8e56757bfe2e14a26f1bd4619a5148469bb8c66d785f84f04a72e1d9c987c2ad.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "df8aa099c1cdcce62217028c3bfea0c8a2d72ef4434a189c9c3da022255a6a51.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "b78e464c8896ddd0922b6ecc98bb53cf8d76a7adf1bfeed3296cebf555aec41b.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "bd9f0a5607f1338452d0c17fe2216abe364777b7bc9b8742febc86679d806075.best_config", - "baseline": { - "XBLOCK": 8, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 64, - "R0_BLOCK": 4, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "0386e83d7a8a1d21f562c83aa7f7f79c521eaed41413a2642a24c56b9c76364a.best_config", - "baseline": { - "XBLOCK": 64, - "R0_BLOCK": 32, - "num_warps": 16, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "219198755ba0c9f4b1747c28d19aa2ffca4c373b8b9b7837abf615075c8e20f1.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "8048c877e767aef1337331b0b5a18a24c2d59aa2daa150a5ae646baa2101fcb5.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "552d4af8fe08461f0c73becf7b87f0b5134dcdb04087bf51a747fd60d0a0e705.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 2, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "960b2e55b2e7ae9bb4f3a7a4e48aad6274a11b6caf56fa246d686c758463dbbe.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "3299b1127e4bbaa0405e041aa28616f33a76b3eae1efe07f88b2461e3c179ee7.best_config", - "baseline": { - "XBLOCK": 32, - "R0_BLOCK": 32, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "474ce4e91c1502c672b011450ec7009fb7431cf11737680c4f6f56b73c9b8d7c.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "0ab62ca7938c98b3744d6172b7c1802170738f8cee426ef6c6136b5d511e27b0.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 8, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "5d956c57a997cc5e1b9ec0c9a9faa578a44ae246f93ab9ba8e3996cbf56b6f2f.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "f3b6463f86a975601225ef85441966e1c9541c89c9d07251d2099401fc4ca02b.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "f230d872f307eb986ae8fd07adccb04ce4468ebadafd4cdfc4d6753ac8d8c51e.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "64d91eb4dc4173d1a37f7eeed8887d2d6d8b99cfe0c22322b38f511763bbaa5a.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "bd9a4e6b44047511a8399c709045ef133066bd8236923f6063027d9c2a148278.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "a23b7ee84cdf77c88130163f9ffb50a572c972c123a400fe5b3afe6b1f1c6e44.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 64, - "R0_BLOCK": 32, - "num_warps": 16, - "num_stages": 1 - } - }, - { - "key": "7cefd1d389e586783d8d8e2fde058613935c8ad90a17cd007e73ed241c630b7c.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "757fe12a6d4c4cb12ad657afcdcf0e1174cd69791886c70dbf0a4e111ba9b290.best_config", - "baseline": { - "XBLOCK": 64, - "R0_BLOCK": 32, - "num_warps": 16, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 8, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "c71ce21bb17bf7e4f0034c7ab97ac60ffa9954db2436c6556e5935eb7b575872.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "ef39c45cded32a95c94657c3fee9b23e9b4332f2d03b1ee3a922ecb0c56ec85a.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 8, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "1a2f6422d8257011f515da151c0e0de1b8050b11ab084d5703b92a8f9f65c1ee.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "4cba4393ab0c05df7b88e4a6f38db04dfb8150933ca0ff938751a8741fb62eac.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "2b1c974d10d420ef6da428de6dc1abe53185d6667e67e696544059c52d79ad68.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "78ff6b2def47f94a8640054d10a9f45ab6dadcbd39e98ef6275df5467d5f1aa8.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "7ac06103d95122a8a5cdc8fa5704a4b2c529175822b3aee46523735919a7d912.best_config", - "baseline": { - "num_warps": 1, - "num_stages": 1 - }, - "candidate": { - "num_warps": 1, - "num_stages": 2 - } - } - ] - }, - "5_FIXED": { - "total": 110, - "common": 109, - "different_choices": [ - { - "key": "481b5eaf0863a955bf1b27c409a89fd0d887ff775a2039c1180b50005f4c4e1b.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "95d97949ac3bf784e65ee78b8cb2d0dd44d228fd57f3c18c3849632892b47324.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "836d62b61967369445baa2170231545e08e0a9938083acf1b3f3284ea50ca8ff.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "fd3be0f38cb22b0c109696f9fd052b265fbd8b6d2806acb2699bada606fd076f.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "d86f8cdc45dcf33c0524b21f773314b48e0dd78e6d1eaa550e9c18a3f8c00906.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "5a1160a1d21f810d24a085d43875cf658f1dd22cb5945fbfba7082cf83b51eed.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "b3172f8129aef67ad36e287181de6d995b9d05aea55a90a7b044c8b95fd670bf.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "2947964b2bba915e610e2a864a546a4577542c8c6005a145d3ae8971c32ac39d.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "ebd2121db585838b4e95dd8e7dec9afb1d8b48cf96d86da816bfd30229fd7bf1.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "b6dd6527c8ddf285b834936424739fa571a64de224a4329b5f43cda711772458.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 32, - "R0_BLOCK": 32, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "5b0ae63dfc19df474953623475716f67725b542707068c4d440cf014a7abc1b4.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "3f7678533e94378a570c1613f4717b6129e03e5befbf924e3b29e2c40af7aabc.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "18b14c8c502b362c2eb73e71c5e29805842bfcab6e91448029bae59d9bb93f92.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "a30d3467fd8fcb078fbe1a4b3d71525b6b0cccf27a2190bb8501de8af6b13e17.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "34db1f3bb187bbc93a9d59062d213cdc3bf2a349fe5e5c6fd6c7c84468a5dc72.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "195032f505d67c19b1998cce1746de12e705f019f3c4c02aaca3395e53cacc27.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 2, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "0549f73cb67250fb221c7c11505d05b263945cf13cf47edcaea0adc8fa08e814.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "e940946c2192fe6effbeabc81599cc404b7e3ac2cf668f567bf649ea1ee26335.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "ea9757ffc7a8ce4b8ee817c8b5e93203ba9ddb777d44b0f11d0cde30644a5c77.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "9ee2e90762aea15ba75b7066a0ccb760a7213b13b1d72d722ddae66069634fe6.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "4df032128c21c2506c450ba1963fe9b2dd17ae5671ada8888ca0a57f90616c51.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "df8aa099c1cdcce62217028c3bfea0c8a2d72ef4434a189c9c3da022255a6a51.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "b78e464c8896ddd0922b6ecc98bb53cf8d76a7adf1bfeed3296cebf555aec41b.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "b02d67db585fb2f7ae2ab33c063df911a9175cd6536a16807ccf77b9138b54ee.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "0386e83d7a8a1d21f562c83aa7f7f79c521eaed41413a2642a24c56b9c76364a.best_config", - "baseline": { - "XBLOCK": 64, - "R0_BLOCK": 32, - "num_warps": 16, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 8, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "219198755ba0c9f4b1747c28d19aa2ffca4c373b8b9b7837abf615075c8e20f1.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "de7622f1795fc03138403ec8b8e230b2449ce1740e0e2f670b2f095de7064d38.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "8048c877e767aef1337331b0b5a18a24c2d59aa2daa150a5ae646baa2101fcb5.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "552d4af8fe08461f0c73becf7b87f0b5134dcdb04087bf51a747fd60d0a0e705.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 64, - "R0_BLOCK": 32, - "num_warps": 16, - "num_stages": 1 - } - }, - { - "key": "3299b1127e4bbaa0405e041aa28616f33a76b3eae1efe07f88b2461e3c179ee7.best_config", - "baseline": { - "XBLOCK": 32, - "R0_BLOCK": 32, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "e6284c4b3b46e7d476636adf41769e87dadcb31974567528c0c743a7c2373302.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "474ce4e91c1502c672b011450ec7009fb7431cf11737680c4f6f56b73c9b8d7c.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "0ab62ca7938c98b3744d6172b7c1802170738f8cee426ef6c6136b5d511e27b0.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 2, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "5d956c57a997cc5e1b9ec0c9a9faa578a44ae246f93ab9ba8e3996cbf56b6f2f.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "72eaa88a99ca86ae56ebf17c92028523b09e8ff5fe9f219a1822b1b9475be3eb.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "46e77de3d24dde64ae3afd1635c5ea9905441067879b634677a93012403533f1.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "710b92c96f4174545e4793c6bcf83711d3b6a9bc3024d1f741beecf04749b296.best_config", - "baseline": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "0946b4617397d4b4aa5f8c7110d62d46f891e8539cacdb780cc2a0e72ada350c.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "a23b7ee84cdf77c88130163f9ffb50a572c972c123a400fe5b3afe6b1f1c6e44.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 64, - "R0_BLOCK": 4, - "num_warps": 8, - "num_stages": 1 - } - }, - { - "key": "757fe12a6d4c4cb12ad657afcdcf0e1174cd69791886c70dbf0a4e111ba9b290.best_config", - "baseline": { - "XBLOCK": 64, - "R0_BLOCK": 32, - "num_warps": 16, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "c71ce21bb17bf7e4f0034c7ab97ac60ffa9954db2436c6556e5935eb7b575872.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "ef39c45cded32a95c94657c3fee9b23e9b4332f2d03b1ee3a922ecb0c56ec85a.best_config", - "baseline": { - "XBLOCK": 16, - "R0_BLOCK": 32, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 8, - "R0_BLOCK": 32, - "num_warps": 2, - "num_stages": 1 - } - }, - { - "key": "09930e885216eadc8562324c49151556a48acde6568bc5dd46bafee438b016d2.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "2c91452b7e8f35c92f5ca857c8e8b9bce56cd891240faddff298291e5532834d.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 8, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 1024, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "6f84bcac51dc18e4488956c6159735d214b610943ae941a4100763b5e38898eb.best_config", - "baseline": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "d0969a1eac3a93ee40e7c260e97edbd734dc22507307416a0920cc2030f990fa.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "3442117b8da00b42a7f2ded30b96709073d95158c3505f7b9889e28d4497212b.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "952de5fdca6afca62174cb068f5e660f89a654fbcf5d95e2c392900f3411ec05.best_config", - "baseline": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 512, - "num_warps": 4, - "num_stages": 1 - } - }, - { - "key": "317b7d1c393c9afb4c237f577fb9930a3866c6b94e69b116855b15a5380e6b3b.best_config", - "baseline": { - "XBLOCK": 128, - "num_warps": 4, - "num_stages": 1 - }, - "candidate": { - "XBLOCK": 256, - "num_warps": 4, - "num_stages": 1 - } - } - ] - }, - "0_BASE": { - "total": 110, - "common": 110, - "different_choices": [] - }, - "frozen": { - "total": 111, - "common": 110, - "different_choices": [] - } - }, - "secondary_protocols": { - "controlled_main_r2": { - "arms": [ - "BASE", - "ECS" - ], - "process_pairs": 6, - "blocks": 72, - "paired_logmean_change_percent": 0.02058626570751996, - "mean_block_difference_ms": 0.002166914378499819, - "hierarchical_bootstrap_95_percent": [ - -0.912346628963445, - 0.989445600438023 - ], - "bootstrap_draws": 20000, - "bootstrap_seed": 20261019, - "process_pair_t_95_percent": [ - -1.429479090635824, - 1.4919834514687136 - ], - "process_pair_t_one_sided_upper95_percent": 1.172174308799368, - "t_interval_caveat": "t interval over independent process-pair means; n=2 is calibration only, not a precise population estimate", - "interval_method": "resample independent process pairs, then ABBA blocks within each selected pair; frame samples are not iid replicates", - "per_pair_change_percent": [ - -1.3588576917719564, - 1.5269476680395746, - -1.0409687146497932, - 0.9277401107158486, - -1.2770760196324105, - 1.394163852214109 - ], - "interpretation": "interval crosses zero: unresolved sign, not proof of zero cost", - "stats": { - "BASE": { - "rounds": 144, - "samples": 7200, - "median_of_round_medians_ms": 11.62086520344019, - "pooled_p50_ms": 11.628862586803734, - "pooled_p90_ms": 11.784044210799038, - "min_ms": 11.364558944478631, - "max_ms": 33.7275939527899, - "event_p50_ms": 11.60422420501709 - }, - "ECS": { - "rounds": 144, - "samples": 7200, - "median_of_round_medians_ms": 11.632081295829266, - "pooled_p50_ms": 11.632530018687248, - "pooled_p90_ms": 11.750231846235693, - "min_ms": 11.400016024708748, - "max_ms": 33.8139480445534, - "event_p50_ms": 11.607679843902588 - } - }, - "kernel_audits": [ - { - "pair": 0, - "shared_semantic_programs": 172, - "common_programs_identical_cubin": 31, - "different_configs": [], - "all_compiler_artifact_hashes_unchanged": true, - "fingerprinted_artifacts": 835 - }, - { - "pair": 1, - "shared_semantic_programs": 172, - "common_programs_identical_cubin": 31, - "different_configs": [], - "all_compiler_artifact_hashes_unchanged": true, - "fingerprinted_artifacts": 835 - }, - { - "pair": 2, - "shared_semantic_programs": 172, - "common_programs_identical_cubin": 31, - "different_configs": [], - "all_compiler_artifact_hashes_unchanged": true, - "fingerprinted_artifacts": 835 - }, - { - "pair": 3, - "shared_semantic_programs": 172, - "common_programs_identical_cubin": 31, - "different_configs": [], - "all_compiler_artifact_hashes_unchanged": true, - "fingerprinted_artifacts": 835 - }, - { - "pair": 4, - "shared_semantic_programs": 172, - "common_programs_identical_cubin": 31, - "different_configs": [], - "all_compiler_artifact_hashes_unchanged": true, - "fingerprinted_artifacts": 835 - }, - { - "pair": 5, - "shared_semantic_programs": 172, - "common_programs_identical_cubin": 31, - "different_configs": [], - "all_compiler_artifact_hashes_unchanged": true, - "fingerprinted_artifacts": 835 - } - ], - "monitor_errors": [], - "memory_scope": "resident timing only; retain independent cold-first/full-window capacity measurements separately" - }, - "controlled_native_r1": { - "arms": [ - "BASE", - "NATIVE" - ], - "process_pairs": 2, - "blocks": 16, - "paired_logmean_change_percent": 0.5091941213821622, - "mean_block_difference_ms": 0.06005537579767406, - "hierarchical_bootstrap_95_percent": [ - -0.7580916671069791, - 1.7542458933901175 - ], - "bootstrap_draws": 20000, - "bootstrap_seed": 20261019, - "interval_method": "resample independent process pairs, then ABBA blocks within each selected pair; frame samples are not iid replicates", - "per_pair_change_percent": [ - 1.690826169532391, - -0.6587075407557829 - ], - "interpretation": "interval crosses zero: unresolved sign, not proof of zero cost", - "stats": { - "BASE": { - "rounds": 32, - "samples": 1600, - "median_of_round_medians_ms": 11.722697759978473, - "pooled_p50_ms": 11.715475469827652, - "pooled_p90_ms": 11.856800084933639, - "min_ms": 11.545370100066066, - "max_ms": 15.718108974397182, - "event_p50_ms": 11.690415859222412 - }, - "NATIVE": { - "rounds": 32, - "samples": 1600, - "median_of_round_medians_ms": 11.78879226790741, - "pooled_p50_ms": 11.806232971139252, - "pooled_p90_ms": 11.99429426342249, - "min_ms": 11.468925047665834, - "max_ms": 21.098918979987502, - "event_p50_ms": 11.780960083007812 - } - }, - "kernel_audits": [ - { - "pair": 0, - "shared_semantic_programs": 172, - "common_programs_identical_cubin": 31, - "different_configs": [], - "all_compiler_artifact_hashes_unchanged": true, - "fingerprinted_artifacts": 830 - }, - { - "pair": 1, - "shared_semantic_programs": 172, - "common_programs_identical_cubin": 31, - "different_configs": [], - "all_compiler_artifact_hashes_unchanged": true, - "fingerprinted_artifacts": 830 - } - ], - "monitor_errors": [], - "memory_scope": "resident timing only; retain independent cold-first/full-window capacity measurements separately" - }, - "controlled_aa_r0": { - "arms": [ - "BASE", - "BASE2" - ], - "process_pairs": 2, - "blocks": 16, - "paired_logmean_change_percent": 0.35110862371332213, - "mean_block_difference_ms": 0.04091367736691609, - "hierarchical_bootstrap_95_percent": [ - -0.2119685661667238, - 0.9130768977863435 - ], - "bootstrap_draws": 20000, - "bootstrap_seed": 20261019, - "process_pair_t_95_percent": [ - -5.974273426474185, - 7.102017383865119 - ], - "t_interval_caveat": "t interval over independent process-pair means; n=2 is calibration only, not a precise population estimate", - "interval_method": "resample independent process pairs, then ABBA blocks within each selected pair; frame samples are not iid replicates", - "per_pair_change_percent": [ - 0.8666281125339586, - -0.1617760953293716 - ], - "interpretation": "interval crosses zero: unresolved sign, not proof of zero cost", - "stats": { - "BASE": { - "rounds": 32, - "samples": 1600, - "median_of_round_medians_ms": 11.606976855546236, - "pooled_p50_ms": 11.608579545281827, - "pooled_p90_ms": 11.749405972659588, - "min_ms": 11.476099025458097, - "max_ms": 18.376658903434873, - "event_p50_ms": 11.58292818069458 - }, - "BASE2": { - "rounds": 32, - "samples": 1600, - "median_of_round_medians_ms": 11.651177424937487, - "pooled_p50_ms": 11.66504097636789, - "pooled_p90_ms": 11.785010271705687, - "min_ms": 11.452123988419771, - "max_ms": 16.8201201595366, - "event_p50_ms": 11.63966417312622 - } - }, - "kernel_audits": [ - { - "pair": 0, - "shared_semantic_programs": 179, - "common_programs_identical_cubin": 38, - "different_configs": [], - "all_compiler_artifact_hashes_unchanged": true, - "fingerprinted_artifacts": 830 - }, - { - "pair": 1, - "shared_semantic_programs": 179, - "common_programs_identical_cubin": 38, - "different_configs": [], - "all_compiler_artifact_hashes_unchanged": true, - "fingerprinted_artifacts": 830 - } - ], - "monitor_errors": [], - "memory_scope": "resident timing only; retain independent cold-first/full-window capacity measurements separately" - }, - "serial_matched_r0": { - "scope": "normal API; one GPU0 process at a time; matched Python hash seeds; fixed cache and CPU8", - "pairs": [ - { - "seed": 0, - "arms": { - "BASE": { - "p50_ms": 11.655072448775172, - "p90_ms": 11.742073320783675, - "round_logmean_ms": 11.65466631448555, - "round_medians_ms": [ - 11.660026502795517, - 11.664921068586409, - 11.664274497888982, - 11.648745508864522, - 11.664624908007681, - 11.652737041004002, - 11.635109083727002, - 11.646926519460976 - ] - }, - "ECS": { - "p50_ms": 11.463750968687236, - "p90_ms": 11.575755872763693, - "round_logmean_ms": 11.466276711387163, - "round_medians_ms": [ - 11.484920978546143, - 11.46163686644286, - 11.506321025080979, - 11.441759415902197, - 11.443693074397743, - 11.46172743756324, - 11.468874872662127, - 11.461416608653963 - ] - } - }, - "logratio": -0.0162963744269935, - "percent": -1.6164306897764709 - }, - { - "seed": 1, - "arms": { - "BASE": { - "p50_ms": 11.755812563933432, - "p90_ms": 11.829267209395766, - "round_logmean_ms": 11.754112419677941, - "round_medians_ms": [ - 11.769437463954091, - 11.729583027772605, - 11.758126551285386, - 11.755166575312614, - 11.738269124180079, - 11.752361082471907, - 11.769573553465307, - 11.760441004298627 - ] - }, - "ECS": { - "p50_ms": 11.616128496825695, - "p90_ms": 11.690132855437696, - "round_logmean_ms": 11.61715565365439, - "round_medians_ms": [ - 11.616323958151042, - 11.610337533056736, - 11.611675610765815, - 11.614450486376882, - 11.617486015893519, - 11.61593315191567, - 11.640554526820779, - 11.610513087362051 - ] - } - }, - "logratio": -0.011720231297017492, - "percent": -1.1651816924455123 - }, - { - "seed": 2, - "arms": { - "BASE": { - "p50_ms": 11.435658088885248, - "p90_ms": 11.544119915924966, - "round_logmean_ms": 11.442691456269566, - "round_medians_ms": [ - 11.40038634184748, - 11.438753572292626, - 11.394820525310934, - 11.452439473941922, - 11.533723562024534, - 11.432531522586942, - 11.428103549405932, - 11.461345944553614 - ] - }, - "ECS": { - "p50_ms": 11.572300922125578, - "p90_ms": 11.684036930091679, - "round_logmean_ms": 11.574341032928734, - "round_medians_ms": [ - 11.634438531473279, - 11.537801125086844, - 11.549462447874248, - 11.647828505374491, - 11.539698927663267, - 11.531829135492444, - 11.597914039157331, - 11.556396028026938 - ] - } - }, - "logratio": 0.01143944271406605, - "percent": 1.150512334989468 - } - ], - "mean_change_percent": -0.5510482288227784, - "process_pair_t_95_percent": [ - -4.157432071093869, - 3.191037365799539 - ], - "stats": { - "BASE": { - "samples": 1200, - "p50_ms": 11.659641517326236, - "p90_ms": 11.789045156911016, - "min_ms": 11.306868866086006, - "max_ms": 22.86916086450219 - }, - "ECS": { - "samples": 1200, - "p50_ms": 11.57341303769499, - "p90_ms": 11.673081968910992, - "min_ms": 11.363105848431587, - "max_ms": 24.471957935020328 - } - }, - "compiler_artifacts": [ - { - "run": 0, - "unchanged": true, - "count": 835 - }, - { - "run": 1, - "unchanged": true, - "count": 835 - }, - { - "run": 2, - "unchanged": true, - "count": 835 - }, - { - "run": 3, - "unchanged": true, - "count": 835 - }, - { - "run": 4, - "unchanged": true, - "count": 835 - }, - { - "run": 5, - "unchanged": true, - "count": 835 - } - ], - "interpretation": "finite n=3 independent pairs; a confidence interval is not proof of zero cost", - "cold_peak": "separate existing cold-process measurement, not replaced" - }, - "compiled_graph_replay_diagnostic": { - "processes": 1, - "blocks": 24, - "paired_change_percent": 0.226145777601847, - "conditional_block_bootstrap95_percent": [ - 0.0706033734667633, - 0.38418086800490775 - ], - "scope": "compiled graph only on same captured real inputs and CUDA context; one process, not population/API acceptance", - "stats": { - "BASE": { - "p50_ms": 7.320728036575019, - "p90_ms": 7.417856063693762 - }, - "ECS": { - "p50_ms": 7.336758426390588, - "p90_ms": 7.425044267438352 - } - } - } - }, - "natural_stride_not_adopted": [ - { - "run": "natural_stride_r0", - "status": { - "status": "completed", - "correctness_cases": 21, - "dtype": "float32", - "tf32": false, - "scope": "single small-stack input backward only, no alpha or forward/model timing" - }, - "paired_change_percent": 0.06525239059100577, - "conditional_block95_percent": [ - -0.028697385654204866, - 0.14577425505556788 - ], - "p50_ms": { - "old": 0.3089229576289654, - "natural": 0.3091339021921158 - } - }, - { - "run": "natural_stride_r1", - "status": { - "status": "completed", - "correctness_cases": 21, - "dtype": "float32", - "tf32": false, - "scope": "single small-stack input backward only, no alpha or forward/model timing" - }, - "paired_change_percent": 0.03573459119047764, - "conditional_block95_percent": [ - -0.0006084065066323472, - 0.07264982019066607 - ], - "p50_ms": { - "old": 0.31001504976302385, - "natural": 0.3102158661931753 - } - } - ], - "kernel_counts": { - "full_model_per_frame": 657, - "so2_per_frame": 32, - "single_stack_forward": 8, - "single_stack_backward": 8, - "scope": "new representative profiler traces; time under profiler is not used for speed conclusions" - }, - "wrapper_equivalence": { - "real_pr_kernel_definitions": 191, - "in_process_kernel_definitions": 191, - "identical_kernel_body_multiset": true, - "same_call_after_symbol_renaming": true, - "real_call": "2eb42115a595ebef74c6ffd358fcb1a3cb9ef2f39461cc8b91cd9de89b71ebb7", - "in_process_call": "2eb42115a595ebef74c6ffd358fcb1a3cb9ef2f39461cc8b91cd9de89b71ebb7" - }, - "first_peak_capacity": { - "scope": "retained independent cold-process measurements; source unchanged; new timing protocols do not replace first peak", - "baseline": { - "first": { - "allocated": 498199552, - "reserved": 528482304 - }, - "complete": { - "allocated": 498199552, - "reserved": 528482304 - }, - "steady": { - "allocated": 397536256, - "reserved": 528482304 - } - }, - "candidate": { - "first": { - "allocated": 480156672, - "reserved": 507510784 - }, - "complete": { - "allocated": 480156672, - "reserved": 507510784 - }, - "steady": { - "allocated": 379493376, - "reserved": 507510784 - } - }, - "first_alloc_reduction_percent": 3.621617066407956, - "steady_alloc_reduction_percent": 4.538675335313314 - }, - "invalid_diagnostics": [ - "Two launcher-inspection failures before controlled timing; no comparative result used.", - "One own-worker initialization cancelled after inspection incompatibility was identified.", - "Two graph-replay setup failures (bound method / missing no_grad); not candidate numerical failures." - ], - "limitations": [ - "Neo N64 only; no new multi-model/PT2/large-edge acceptance.", - "Only partial Megakernels scheduling ideas are used, not its runtime or a cross-layer mega-kernel.", - "No stable speedup or exact zero-cost guarantee; initialization-order effect observed, low-level mechanism not uniquely attributed.", - "The natural-stride experiment was not adopted; it did not demonstrate a repeatable benefit.", - "Large-edge make_fx/AOT dispatch must be checked separately; Dynamo boundary unit tests are not AOT deployment acceptance." - ], - "raw_evidence": { - "file": "ecs-edge-cohort-controlled-raw.json.gz", - "sha256": "213178e9d326af552766ffb5b0f002b924e56a9ede703b4b7748bcde912e329d", - "compressed_bytes": 1311322 - } -} \ No newline at end of file diff --git a/doc/development/ecs-edge-cohort-controlled-timing.md b/doc/development/ecs-edge-cohort-controlled-timing.md deleted file mode 100644 index 9f90018e0e..0000000000 --- a/doc/development/ecs-edge-cohort-controlled-timing.md +++ /dev/null @@ -1,235 +0,0 @@ -# ECS controlled timing follow-up - -This follow-up investigates the previously reported N64 latency increase of -1.2845%. The kernel implementation is unchanged. It replaces the earlier -"less than 3% means noise" interpretation with counterbalanced measurements -and process-level uncertainty. No stable speedup or exact zero-cost guarantee -is claimed. - -## Main finding - -Four independent processes each held both implementations in **one CUDA -context**, using normal ASE energy/force/virial/stress calls. Two Python hash -seeds (0, 1) were each tested with baseline-first and ECS-first compilation. -Each process ran 24 symmetric ABBA blocks, 50 calls per round, eight warmups -before each round: 9600 measured calls per arm, 96 blocks in total. - -| Metric | Baseline | ECS | -| --- | ---: | ---: | -| Pooled normal-API P50, ms | 11.683581 | 11.708142 | -| Pooled normal-API P90, ms | 11.911459 | 11.932993 | -| Direct ratio of pooled P50s | reference | +0.2102% latency | -| Mean process-level paired effect | reference | **+0.0795% latency** | -| 95% Student-t interval over four independent process effects | — | **[-0.3866%, +0.5479%]** | - -The paired estimate averages log ratios of matched block medians within each -process, then gives each process equal weight. It is not the ratio of pooled -medians; both are reported rather than choosing one favorable number. Frames -are correlated within processes and are not 19200 independent experiments. - -The measured interval does not support a persistent +1.2845% penalty under -these controlled conditions. It also does not establish exact zero overhead, -or equivalence on other models, sizes, compilers or hardware. Four processes -remain a finite sample. There is no fixed 3% significance rule. - -| Process | First compiled model | Hash seed | Paired ECS latency change | -| --- | --- | ---: | ---: | -| 0 | Baseline | 0 | +0.2999% | -| 1 | ECS | 0 | -0.1536% | -| 2 | Baseline | 1 | +0.3656% | -| 3 | ECS | 1 | -0.1924% | - -Compilation/initialization order is an observed confound, not a uniquely -identified low-level cause. No claim is made that a particular cache bank, -Python hash lookup or GPU clock policy explains the entire historical result. - -## Why the old result was not an isolated ECS comparison - -The earlier independent cold runs also independently autotuned other Inductor -kernels. Compared with the first baseline process, the first candidate had -**41 different launch choices among 109 matching cached programs**. Other -candidate runs had 44/49 changed choices; other baseline runs themselves had -48/47 among 110. These are actual XBLOCK/warp/stage changes, not differences -in recorded autotune duration. This does not quantify how much of the 1.28% -each change caused, but it prevents assigning the whole difference to ECS. - -The five SO(2) GEMM schedule values remained `(64,64,32,4,2)`. A source option -such as `max_autotune=False` does not mean every generated pointwise/reduction -kernel has no runtime choice. In the controlled cache, all 110 anchor choices -were preserved. Shared semantic programs used identical actual configs, and -835 autotune/PTX/cubin file hashes remained unchanged during each main timed -window. Nothing was retuned halfway through the comparison. - -## Controls, diagnostics and rejected explanations - -These protocols have different scopes; do not pool their absolute times or -call their confidence intervals interchangeable. - -| Protocol | Independent groups | Paired change | Process t 95% interval / limitation | -| --- | ---: | ---: | --- | -| Two resident workers, GPU0, 12 ABBA blocks/group | 6 | +0.0206% | [-1.4295%, +1.4920%]; initialization-order bias remained | -| One worker at a time, GPU0, matched seeds, 400 formal calls/process | 3 pairs | -0.5510% | [-4.1574%, +3.1910%]; too few groups for a tight conclusion | -| Identical baseline versus baseline clone, GPU1 | 2 | +0.3511% | pair effects +0.8666% / -0.1618%; calibration only | -| Candidate source with ECS disabled versus original baseline, GPU1 | 2 | +0.5092% | pair effects +1.6908% / -0.6587%; no stable compatibility-overhead attribution | -| Same-context compiled-graph replay, GPU1 | 1 | +0.2261% | conditional block interval [+0.0706%, +0.3842%], not population/API acceptance | - -The last diagnostic intentionally excludes ASE, neighbor preprocessing and the -AOT runtime shell. It provides a small-overhead observation, not a substitute -for complete API performance. This model's energy inference path is -`make_fx -> aot_module_simplified -> compile_fx_inner`, **bypassing Dynamo**; -it would be incorrect to attribute the observed cost to Dynamo inference guards. - -Both GPUs were checked for foreign work on the measured card. Only one worker -executed at a time; known resident workers in the resident diagnostic were -allowed to keep idle contexts. GPU0 workers used CPU8, monitor CPU16; GPU1 used -CPU40, monitor CPU48, on their respective local NUMA nodes. NVML sampled actual -timing intervals at 50 ms. SM clocks remained dynamic, not locked. Memory -clocks, temperature, power and available clock-reason data are retained. -Whole-process idle/compilation readings are not called timing-window clocks. -No driver settings, global GPU clocks, or other users' processes were changed. - -As an explicitly secondary, post-stratified check, 90/96 primary blocks meet -all of: mean sampled SM-clock difference <=0.5%, memory clock 13801 MHz in both -arms, mean temperature difference <=2 C. Their paired estimate is +0.0861%, -process t 95% interval [-0.3873%, +0.5617%], consistent with the full result. -This is a hardware-matching criterion, **not** a latency-noise cutoff. All 96 -blocks remain in the primary analysis. Selection changes composition and -does not prove constant per-kernel clocks. In the full primary sampling, -baseline SM mean was 2776.84 MHz and candidate 2815.98 MHz; ten baseline -samples reported memory idle-clock 810 MHz. These readings are not hidden. - -In the resident experiment, average sampled SM clocks for first/second -initialized workers were approximately 2776.89/2775.65 MHz. That near equality -does not support blaming the whole initialization-order bias on downclocking. -Dynamic per-round frequency variation still prevents claiming constant clocks. -Outliers were retained; some individual API calls exceeded 30 ms. - -## Same-context setup and validation - -The manual harness first compiles one normal calculator. It then copies the -exact three reviewed kernel definitions and registered backward into the -experiment process, clears the **module-level** SeZM compiled cache, and -compiles the other calculator. Each retains its separate model-local cache. -This is necessary: the shared cache key does not independently prove that the -second experimental mode produced a new graph. - -The harness asserts distinct compiled wrappers and the expected ECS marker, -keeps the first model's cache unchanged, and checks all three reference frames. -Runtime transplantation is **benchmark setup only**; the production proposal -uses ordinary checked-in functions and does not generate or rewrite kernel -source. No checkpoint or production file is modified by the harness. - -To audit this method against the real PR integration, the generated candidate -has the same multiset of 191 embedded function bodies and the same entire -`call` AST after symbolic-size renaming. Normalized call SHA-256: -`2eb42115a595ebef74c6ffd358fcb1a3cb9ef2f39461cc8b91cd9de89b71ebb7`. -This counts source definitions, not runtime launches. The baseline remains the -unmodified commit `668b60cc2a9559f79abb9c33acd959833376344f`. - -Every same-context process passes three-frame energy/force/virial/stress -comparisons against the pure-PyTorch reference and its paired baseline, using -`atol=1e-5, rtol=1e-4`; worst error/tolerance ratio across these runs is 0.376674. -All compared outputs are finite. The reference is one fresh pure-PyTorch -process with three self-repeats, not a new multi-process Torch matrix. -The 60 focused CUDA tests were rerun: 60 passed, 14 deprecation warnings. - -## Bounded specialization attempt: not adopted - -A full single cohort has `count == E`, `start == 0`. Four runtime -`saved_edges=E` / `output_edges=E` operands were experimentally replaced with -the natural-stride sentinel zero. No floating arithmetic, launch count or tile -was changed. Each of two processes checked 21 generated cases: -E=0/1/37/129/8193/10114/16384, random/zero/tiny legal alpha; input gradients -were bitwise equal, finite, and caller-owned inputs unchanged. - -| Small-stack input-backward only | Original P50 ms | Natural stride P50 ms | Paired change | -| --- | ---: | ---: | ---: | -| Process 0 | 0.308923 | 0.309134 | +0.0653% | -| Process 1 | 0.310015 | 0.310216 | +0.0357% | - -Conditional block intervals include zero. The selected binary sets differ, -so it is not established that the compiler erased every difference; nevertheless -there is no measured benefit. This attempt is **not adopted** and is not an -end-to-end speedup. Alpha backward itself was unchanged. - -## Memory and the extent of Megakernels use - -The unchanged implementation retains the earlier independent cold-process -capacity result: **first/complete allocated peak 498.199552 -> 480.156672 MB -(-3.6216%)**, reserved 528.482304 -> 507.510784 MB (-3.9683%). Steady allocated -397.536256 -> 379.493376 MB (-4.5387%) is secondary. JIT/first execution is not -removed from the primary peak. Dual-model resident capacity is not substituted -for this single-model measurement. - -Current ECS borrows bounded-workset/dependency scheduling ideas; it does not -integrate the HazyResearch runtime or retain the reverse chain wholly on chip. -The new representative traces show **657 GPU launches/frame in both arms, -including 32 SO(2) launches**: two stacks, each 8 forward and 8 backward kernels. -There is no mega-kernel launch-count reduction in this proposal. - -The reference [Megakernels implementation](https://github.com/HazyResearch/Megakernels/blob/main/include/megakernel.cuh) -uses device loader/consumer/storer/controller roles and synchronization. Those -mechanisms are not present here. Earlier single-CTA persistent PBS experiments -in this project regressed at E=158002 (baseline backward about 5.047 ms, best of -12 PBS configurations about 8.780 ms); that route was not promoted. Fusion can -lose column parallelism, increase registers/spill and synchronization costs. -Fewer buffers or launches alone do not establish faster execution. - -## Reproduce and inspect - -Use the same checkpoint/environment as the original protocol. Provide absolute -paths for `BASE_ROOT`, `PR_ROOT`, `MODEL`, `TORCH_REFERENCE` and fresh result dirs. -CPU numbers below are specific to the reported dual-socket server; select valid -GPU-local cores on another host. - -```bash -PY=/path/to/cuda-environment/bin/python -TOOLS=$PR_ROOT/source/tests/pt_expt/kernels - -# Initialize a shared cache using normal BASE and ECS benchmark calls first. -# A nonempty explicit cache requires --allow-warm-cache in the original CLI. -$PY "$TOOLS/benchmark_so2_edge_cohort.py" --mode base --source-root "$BASE_ROOT" \ - --gpu 0 --model "$MODEL" --reference "$TORCH_REFERENCE" \ - --cache-dir "$CACHE" --out "$PREP_BASE" -$PY "$TOOLS/benchmark_so2_edge_cohort.py" --mode ecs --source-root "$PR_ROOT" \ - --gpu 0 --model "$MODEL" --reference "$TORCH_REFERENCE" \ - --cache-dir "$CACHE" --allow-warm-cache --out "$PREP_ECS" - -# Main same-context normal API; repeat all four seed/order combinations. -PYTHONHASHSEED=0 $PY "$TOOLS/benchmark_so2_edge_cohort_same_context.py" \ - --baseline-root "$BASE_ROOT" --candidate-root "$PR_ROOT" \ - --model "$MODEL" --reference "$TORCH_REFERENCE" --cache "$CACHE" \ - --gpu 0 --cpu 8 --monitor-cpu 16 --first BASE --blocks 24 --out "$NEW_OUT" -# Other combinations: seed0/ECS-first, seed1/BASE-first, seed1/ECS-first. -$PY "$TOOLS/analyze_so2_edge_cohort_same_context.py" \ - "$OUT0" "$OUT1" "$OUT2" "$OUT3" --out "$SUMMARY" -$PY "$TOOLS/analyze_so2_edge_cohort_clocks.py" \ - "$OUT0" "$OUT1" "$OUT2" "$OUT3" --out "$CLOCK_SENSITIVITY" - -# Secondary serialized control (never two resident contexts on the card). -$PY "$TOOLS/benchmark_so2_edge_cohort_serial.py" \ - --baseline-root "$BASE_ROOT" --candidate-root "$PR_ROOT" \ - --model "$MODEL" --reference "$TORCH_REFERENCE" --cache "$CACHE" \ - --gpu 0 --cpu 8 --monitor-cpu 16 --seeds 0 1 2 --rounds 8 --samples 50 \ - --conditioning-samples 200 --out "$SERIAL_OUT" -$PY "$TOOLS/analyze_so2_edge_cohort_serial.py" "$SERIAL_OUT" -``` - -`benchmark_so2_edge_cohort_paired.py` and its analyzer reproduce the secondary -resident-worker ABBA experiment (`--pairs 6 --blocks 12 --profile`). It is not -the primary estimator because of the observed resident-process bias. -Original standalone CLI behavior remains unchanged when no control hook is -provided; the shared measurement body is AST-identical to the measured copy. - -[Summary JSON](ecs-edge-cohort-controlled-results.json) includes complete -configuration, uncertainty, cache-choice changes and limitations. -[Compressed raw JSON](ecs-edge-cohort-controlled-raw.json.gz) includes per-call -wall/Event samples, conditional experiments, correctness and representative -profile summaries. It excludes private manifests, model weights and compiler -caches. Its SHA-256 is recorded in the summary; decompress with `python -m gzip --d` or read with Python's `gzip.open`. - -Unresolved gates remain: wider model/size matrices, large-edge make_fx/AOT -dispatch and deployment, PT2/C++ acceptance, and the exact low-level cause of -initialization bias. Passing a Dynamo boundary unit test is not an AOT runtime -bucket-dispatch acceptance test. Default-off draft status remains unchanged. diff --git a/doc/development/ecs-edge-cohort-multimodel-accuracy.md b/doc/development/ecs-edge-cohort-multimodel-accuracy.md deleted file mode 100644 index 8d487d6bd6..0000000000 --- a/doc/development/ecs-edge-cohort-multimodel-accuracy.md +++ /dev/null @@ -1,206 +0,0 @@ -# ECS 多模型多尺寸精度测试 - -> 精度优先;未放宽阈值。误差范围为每对输出max_abs的min~max,不是置信区间。基线SHA与模型SHA见JSON。 - -模式:TORCH=纯PyTorch编译;ECS=当前PR候选(非Neo为回退);ECS_RUNTIME=强制真实8192分批。单位:能量/位力eV,力eV/Å,stress eV/ų。所有结果均不是DFT预测误差。 - -| 模型 | 原子数 | 对照 | 范围 | 完成进程数 | 能量max_abs范围 | 力max_abs范围 | 位力max_abs范围 | stress max_abs范围 | 最差误差/容差 | 状态 | -| --- | ---: | --- | --- | --- | --- | --- | --- | --- | ---: | --- | -| Mini | 512 | TORCH vs TORCH | within_process | 3/3 | 1.788e-07~1.907e-05 | 5.743e-06~7.458e-06 | 1.941e-05~1.008e-04 | 6.477e-09~3.453e-08 | 2.3256 | FAIL | -| Mini | 512 | TORCH vs TORCH | across_process | 3/3 | 0.000e+00~2.682e-05 | 5.574e-06~8.402e-06 | 2.161e-05~1.017e-04 | 7.439e-09~3.501e-08 | 2.0800 | FAIL | -| Mini | 512 | BASE vs BASE | within_process | 3/3 | 8.941e-07~2.909e-05 | 5.665e-06~7.634e-06 | 1.822e-05~8.902e-05 | 5.847e-09~3.065e-08 | 1.3209 | FAIL | -| Mini | 512 | BASE vs BASE | across_process | 3/3 | 2.384e-07~3.576e-05 | 5.394e-06~8.533e-06 | 1.780e-05~9.780e-05 | 6.128e-09~3.367e-08 | 1.5409 | FAIL | -| Mini | 512 | ECS vs ECS | within_process | 3/3 | 2.384e-07~2.784e-05 | 5.507e-06~8.241e-06 | 2.388e-05~1.102e-04 | 7.637e-09~3.793e-08 | 2.3481 | FAIL | -| Mini | 512 | ECS vs ECS | across_process | 3/3 | 2.980e-07~2.706e-05 | 5.538e-06~8.991e-06 | 8.570e-06~1.185e-04 | 2.600e-09~4.078e-08 | 2.7696 | FAIL | -| Mini | 512 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~3.856e-05 | 7.663e-06~1.194e-05 | 8.734e-05~2.392e-04 | 3.007e-08~8.237e-08 | 2.0564 | FAIL | -| Mini | 512 | ECS vs TORCH | cross_implementation | 3/3 | 1.192e-07~3.630e-05 | 7.538e-06~1.362e-05 | 8.123e-05~2.064e-04 | 2.797e-08~7.105e-08 | 2.6359 | FAIL | -| Mini | 512 | ECS vs BASE | cross_implementation | 3/3 | 1.192e-07~3.225e-05 | 5.317e-06~8.227e-06 | 7.091e-06~1.170e-04 | 2.441e-09~4.027e-08 | 2.1640 | FAIL | -| Mini | 1000 | TORCH vs TORCH | within_process | 3/3 | 7.749e-07~3.952e-05 | 5.942e-06~8.479e-06 | 3.820e-05~1.486e-04 | 6.734e-09~2.619e-08 | 0.6828 | PASS | -| Mini | 1000 | TORCH vs TORCH | across_process | 3/3 | 4.172e-07~5.251e-05 | 6.128e-06~8.859e-06 | 2.881e-05~1.862e-04 | 4.861e-09~3.283e-08 | 0.7997 | PASS | -| Mini | 1000 | BASE vs BASE | within_process | 3/3 | 5.364e-07~3.475e-05 | 5.791e-06~8.084e-06 | 2.814e-05~9.627e-05 | 4.864e-09~1.697e-08 | 0.7113 | PASS | -| Mini | 1000 | BASE vs BASE | across_process | 3/3 | 1.788e-07~5.239e-05 | 5.877e-06~9.181e-06 | 1.580e-05~1.545e-04 | 2.721e-09~2.723e-08 | 0.7256 | PASS | -| Mini | 1000 | ECS vs ECS | within_process | 3/3 | 2.384e-07~3.195e-05 | 5.835e-06~8.294e-06 | 3.425e-05~1.184e-04 | 6.019e-09~2.087e-08 | 1.1129 | FAIL | -| Mini | 1000 | ECS vs ECS | across_process | 3/3 | 2.384e-07~4.518e-05 | 5.955e-06~8.708e-06 | 1.679e-05~1.293e-04 | 2.959e-09~2.279e-08 | 1.3280 | FAIL | -| Mini | 1000 | BASE vs TORCH | cross_implementation | 3/3 | 1.192e-07~6.008e-05 | 8.291e-06~1.272e-05 | 1.898e-04~4.217e-04 | 3.346e-08~7.434e-08 | 0.9772 | PASS | -| Mini | 1000 | ECS vs TORCH | cross_implementation | 3/3 | 5.960e-08~4.542e-05 | 7.863e-06~1.166e-05 | 2.127e-04~3.895e-04 | 3.749e-08~6.865e-08 | 1.0280 | FAIL | -| Mini | 1000 | ECS vs BASE | cross_implementation | 3/3 | 2.384e-07~5.299e-05 | 5.502e-06~9.310e-06 | 1.849e-05~1.536e-04 | 3.259e-09~2.707e-08 | 1.2858 | FAIL | -| Mini | 4096 | TORCH vs TORCH | within_process | 3/3 | 5.960e-08~6.229e-05 | 7.276e-06~9.493e-06 | 5.062e-05~4.385e-04 | 2.066e-09~1.887e-08 | 12.0785 | FAIL | -| Mini | 4096 | TORCH vs TORCH | across_process | 3/3 | 5.960e-08~8.333e-05 | 6.791e-06~9.902e-06 | 5.727e-05~3.834e-04 | 2.084e-09~1.650e-08 | 18.0056 | FAIL | -| Mini | 4096 | BASE vs BASE | within_process | 3/3 | 3.099e-06~1.399e-04 | 7.088e-06~8.594e-06 | 4.909e-05~2.918e-04 | 2.043e-09~1.256e-08 | 7.5328 | FAIL | -| Mini | 4096 | BASE vs BASE | across_process | 3/3 | 3.576e-07~1.013e-04 | 6.853e-06~9.191e-06 | 4.477e-05~3.680e-04 | 1.894e-09~1.584e-08 | 8.7236 | FAIL | -| Mini | 4096 | ECS vs ECS | within_process | 3/3 | 8.941e-07~6.741e-05 | 6.751e-06~9.570e-06 | 8.410e-05~3.134e-04 | 3.504e-09~1.342e-08 | 7.6971 | FAIL | -| Mini | 4096 | ECS vs ECS | across_process | 3/3 | 2.980e-07~8.285e-05 | 6.717e-06~1.040e-05 | 3.166e-05~3.210e-04 | 1.362e-09~1.381e-08 | 8.5980 | FAIL | -| Mini | 4096 | BASE vs TORCH | cross_implementation | 3/3 | 1.073e-06~1.630e-04 | 9.423e-06~1.370e-05 | 8.078e-04~1.487e-03 | 3.476e-08~6.401e-08 | 16.3663 | FAIL | -| Mini | 4096 | ECS vs TORCH | cross_implementation | 3/3 | 1.609e-06~1.435e-04 | 9.178e-06~1.420e-05 | 7.984e-04~1.493e-03 | 3.436e-08~6.425e-08 | 14.4638 | FAIL | -| Mini | 4096 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~1.230e-04 | 6.839e-06~9.656e-06 | 4.190e-05~3.580e-04 | 1.803e-09~1.541e-08 | 10.4884 | FAIL | -| Nano | 512 | TORCH vs TORCH | within_process | 3/3 | 1.788e-07~5.186e-05 | 8.767e-06~1.729e-05 | 4.055e-05~1.745e-04 | 1.365e-08~6.008e-08 | 5.1961 | FAIL | -| Nano | 512 | TORCH vs TORCH | across_process | 3/3 | 8.941e-07~5.031e-05 | 8.257e-06~1.488e-05 | 3.397e-05~1.774e-04 | 1.067e-08~6.108e-08 | 8.1770 | FAIL | -| Nano | 512 | BASE vs BASE | within_process | 3/3 | 6.557e-07~5.233e-05 | 8.955e-06~1.241e-05 | 4.078e-05~1.411e-04 | 1.404e-08~4.859e-08 | 4.3052 | FAIL | -| Nano | 512 | BASE vs BASE | across_process | 3/3 | 3.576e-07~4.852e-05 | 8.638e-06~1.356e-05 | 2.392e-05~1.993e-04 | 7.193e-09~6.862e-08 | 5.5042 | FAIL | -| Nano | 512 | ECS vs ECS | within_process | 3/3 | 2.384e-07~4.870e-05 | 8.850e-06~1.174e-05 | 2.709e-05~1.370e-04 | 9.077e-09~4.717e-08 | 3.9393 | FAIL | -| Nano | 512 | ECS vs ECS | across_process | 3/3 | 2.980e-07~6.038e-05 | 8.533e-06~1.260e-05 | 2.392e-05~2.191e-04 | 8.234e-09~7.544e-08 | 5.7037 | FAIL | -| Nano | 512 | BASE vs TORCH | cross_implementation | 3/3 | 2.980e-06~1.152e-04 | 8.867e-06~1.386e-05 | 1.153e-05~2.624e-04 | 3.971e-09~9.033e-08 | 9.4910 | FAIL | -| Nano | 512 | ECS vs TORCH | cross_implementation | 3/3 | 4.172e-07~1.128e-04 | 8.495e-06~1.357e-05 | 2.651e-05~2.647e-04 | 9.126e-09~9.113e-08 | 8.6337 | FAIL | -| Nano | 512 | ECS vs BASE | cross_implementation | 3/3 | 4.172e-07~5.412e-05 | 8.595e-06~1.269e-05 | 2.358e-05~2.068e-04 | 8.119e-09~7.121e-08 | 6.5564 | FAIL | -| Nano | 1000 | TORCH vs TORCH | within_process | 3/3 | 1.788e-07~6.706e-05 | 9.814e-06~1.328e-05 | 5.537e-05~2.621e-04 | 9.760e-09~4.621e-08 | 5.8245 | FAIL | -| Nano | 1000 | TORCH vs TORCH | across_process | 3/3 | 8.941e-07~7.910e-05 | 9.717e-06~1.356e-05 | 3.931e-05~2.863e-04 | 6.794e-09~5.047e-08 | 7.5700 | FAIL | -| Nano | 1000 | BASE vs BASE | within_process | 3/3 | 1.073e-06~5.555e-05 | 8.786e-06~1.246e-05 | 4.376e-05~2.458e-04 | 7.638e-09~4.333e-08 | 6.4322 | FAIL | -| Nano | 1000 | BASE vs BASE | across_process | 3/3 | 5.960e-08~7.153e-05 | 9.121e-06~1.302e-05 | 5.281e-05~2.499e-04 | 9.309e-09~4.405e-08 | 9.2287 | FAIL | -| Nano | 1000 | ECS vs ECS | within_process | 3/3 | 1.192e-06~5.585e-05 | 9.348e-06~1.242e-05 | 4.847e-05~2.198e-04 | 8.545e-09~3.874e-08 | 4.9302 | FAIL | -| Nano | 1000 | ECS vs ECS | across_process | 3/3 | 5.960e-08~6.944e-05 | 9.239e-06~1.430e-05 | 2.857e-05~2.319e-04 | 5.036e-09~4.087e-08 | 6.9685 | FAIL | -| Nano | 1000 | BASE vs TORCH | cross_implementation | 3/3 | 1.049e-05~1.621e-04 | 9.189e-06~1.489e-05 | 3.178e-05~2.637e-04 | 5.601e-09~4.649e-08 | 9.2328 | FAIL | -| Nano | 1000 | ECS vs TORCH | cross_implementation | 3/3 | 1.264e-05~1.663e-04 | 9.170e-06~1.386e-05 | 1.395e-05~3.074e-04 | 2.459e-09~5.418e-08 | 8.0526 | FAIL | -| Nano | 1000 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~7.570e-05 | 9.041e-06~1.358e-05 | 3.918e-05~2.690e-04 | 6.906e-09~4.742e-08 | 8.1419 | FAIL | -| Nano | 4096 | TORCH vs TORCH | within_process | 3/3 | 3.755e-06~1.802e-04 | 1.138e-05~1.498e-05 | 9.571e-05~6.979e-04 | 4.119e-09~3.003e-08 | 2.3384 | FAIL | -| Nano | 4096 | TORCH vs TORCH | across_process | 3/3 | 5.960e-08~2.024e-04 | 1.065e-05~1.443e-05 | 9.505e-05~6.595e-04 | 3.965e-09~2.838e-08 | 2.8159 | FAIL | -| Nano | 4096 | BASE vs BASE | within_process | 3/3 | 2.384e-06~1.985e-04 | 1.098e-05~1.587e-05 | 1.133e-04~3.956e-04 | 4.860e-09~1.703e-08 | 1.3307 | FAIL | -| Nano | 4096 | BASE vs BASE | across_process | 3/3 | 1.907e-06~2.370e-04 | 1.060e-05~1.419e-05 | 5.914e-05~4.544e-04 | 2.379e-09~1.956e-08 | 2.5569 | FAIL | -| Nano | 4096 | ECS vs ECS | within_process | 3/3 | 3.278e-06~1.050e-04 | 1.101e-05~1.347e-05 | 6.502e-05~7.514e-04 | 2.450e-09~3.233e-08 | 1.2806 | FAIL | -| Nano | 4096 | ECS vs ECS | across_process | 3/3 | 1.788e-07~1.045e-04 | 1.095e-05~1.462e-05 | 8.139e-05~6.386e-04 | 3.503e-09~2.748e-08 | 2.1274 | FAIL | -| Nano | 4096 | BASE vs TORCH | cross_implementation | 3/3 | 9.382e-05~4.325e-04 | 1.070e-05~1.538e-05 | 8.534e-05~1.047e-03 | 3.673e-09~4.504e-08 | 3.3957 | FAIL | -| Nano | 4096 | ECS vs TORCH | cross_implementation | 3/3 | 1.401e-04~4.290e-04 | 1.060e-05~1.602e-05 | 9.420e-05~1.060e-03 | 3.617e-09~4.560e-08 | 3.0524 | FAIL | -| Nano | 4096 | ECS vs BASE | cross_implementation | 3/3 | 5.960e-08~1.978e-04 | 1.056e-05~1.622e-05 | 7.473e-05~6.500e-04 | 3.042e-09~2.797e-08 | 2.4384 | FAIL | -| Neo | 512 | TORCH vs TORCH | within_process | 3/3 | 5.960e-08~1.943e-05 | 3.261e-06~4.747e-06 | 1.320e-05~7.500e-05 | 4.517e-09~2.582e-08 | 0.6232 | PASS | -| Neo | 512 | TORCH vs TORCH | across_process | 3/3 | 4.768e-07~1.884e-05 | 3.108e-06~5.441e-06 | 9.732e-06~7.461e-05 | 2.689e-09~2.569e-08 | 0.6851 | PASS | -| Neo | 512 | BASE vs BASE | within_process | 3/3 | 5.960e-08~2.521e-05 | 3.148e-06~4.934e-06 | 1.098e-05~4.944e-05 | 3.581e-09~1.702e-08 | 0.6621 | PASS | -| Neo | 512 | BASE vs BASE | across_process | 3/3 | 2.384e-07~2.354e-05 | 3.135e-06~5.108e-06 | 9.663e-06~6.807e-05 | 3.327e-09~2.344e-08 | 0.7136 | PASS | -| Neo | 512 | ECS vs ECS | within_process | 3/3 | 1.192e-07~1.627e-05 | 3.263e-06~4.824e-06 | 5.221e-06~4.653e-05 | 1.513e-09~1.602e-08 | 0.7407 | PASS | -| Neo | 512 | ECS vs ECS | across_process | 3/3 | 0.000e+00~1.740e-05 | 3.247e-06~4.922e-06 | 1.290e-05~6.690e-05 | 3.928e-09~2.303e-08 | 0.8633 | PASS | -| Neo | 512 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~3.117e-05 | 4.321e-06~6.981e-06 | 7.577e-05~1.771e-04 | 2.609e-08~6.098e-08 | 1.1932 | FAIL | -| Neo | 512 | ECS vs TORCH | cross_implementation | 3/3 | 1.192e-07~2.927e-05 | 4.556e-06~7.410e-06 | 7.720e-05~1.594e-04 | 2.658e-08~5.487e-08 | 1.0295 | FAIL | -| Neo | 512 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~2.331e-05 | 3.149e-06~5.301e-06 | 7.728e-06~7.278e-05 | 2.660e-09~2.506e-08 | 0.9591 | PASS | -| Neo | 512 | ECS_RUNTIME vs ECS_RUNTIME | within_process | 3/3 | 4.172e-07~1.824e-05 | 3.403e-06~4.479e-06 | 1.187e-05~4.710e-05 | 2.963e-09~1.622e-08 | 1.0518 | FAIL | -| Neo | 512 | ECS_RUNTIME vs ECS_RUNTIME | across_process | 3/3 | 5.960e-08~1.431e-05 | 3.251e-06~5.502e-06 | 6.900e-06~5.424e-05 | 2.375e-09~1.867e-08 | 0.9080 | PASS | -| Neo | 512 | ECS_RUNTIME vs BASE | cross_implementation | 3/3 | 5.960e-08~2.301e-05 | 3.042e-06~5.382e-06 | 9.281e-06~6.285e-05 | 2.715e-09~2.164e-08 | 1.0467 | FAIL | -| Neo | 512 | ECS_RUNTIME vs TORCH | cross_implementation | 3/3 | 5.960e-08~2.372e-05 | 4.383e-06~7.113e-06 | 7.607e-05~1.648e-04 | 2.619e-08~5.675e-08 | 1.0368 | FAIL | -| Neo | 512 | ECS_RUNTIME vs ECS | cross_implementation | 3/3 | 0.000e+00~2.110e-05 | 3.024e-06~5.139e-06 | 6.926e-06~6.315e-05 | 2.384e-09~2.174e-08 | 1.1043 | FAIL | -| Neo | 1000 | TORCH vs TORCH | within_process | 3/3 | 5.960e-07~2.939e-05 | 3.633e-06~5.042e-06 | 1.796e-05~8.294e-05 | 2.496e-09~1.462e-08 | 0.4762 | PASS | -| Neo | 1000 | TORCH vs TORCH | across_process | 3/3 | 1.192e-07~2.736e-05 | 3.471e-06~5.588e-06 | 1.483e-05~1.008e-04 | 2.181e-09~1.777e-08 | 0.4978 | PASS | -| Neo | 1000 | BASE vs BASE | within_process | 3/3 | 7.153e-07~2.074e-05 | 3.335e-06~4.864e-06 | 1.662e-05~7.371e-05 | 2.929e-09~1.299e-08 | 0.3498 | PASS | -| Neo | 1000 | BASE vs BASE | across_process | 3/3 | 5.960e-08~1.848e-05 | 3.363e-06~5.305e-06 | 1.574e-05~1.023e-04 | 2.277e-09~1.802e-08 | 0.5508 | PASS | -| Neo | 1000 | ECS vs ECS | within_process | 3/3 | 6.557e-07~3.302e-05 | 3.544e-06~4.635e-06 | 1.599e-05~7.633e-05 | 2.645e-09~1.346e-08 | 0.3679 | PASS | -| Neo | 1000 | ECS vs ECS | across_process | 3/3 | 2.980e-07~3.064e-05 | 3.362e-06~5.389e-06 | 1.043e-05~1.018e-04 | 1.839e-09~1.794e-08 | 0.5019 | PASS | -| Neo | 1000 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~2.736e-05 | 4.921e-06~7.257e-06 | 1.523e-04~2.917e-04 | 2.685e-08~5.141e-08 | 0.6108 | PASS | -| Neo | 1000 | ECS vs TORCH | cross_implementation | 3/3 | 1.192e-07~4.029e-05 | 5.026e-06~8.691e-06 | 1.513e-04~3.357e-04 | 2.667e-08~5.917e-08 | 0.5704 | PASS | -| Neo | 1000 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~3.189e-05 | 3.352e-06~5.042e-06 | 1.021e-05~1.058e-04 | 1.644e-09~1.866e-08 | 0.5937 | PASS | -| Neo | 1000 | ECS_RUNTIME vs ECS_RUNTIME | within_process | 3/3 | 2.384e-07~2.861e-05 | 3.570e-06~4.866e-06 | 1.601e-05~1.015e-04 | 2.815e-09~1.790e-08 | 0.4164 | PASS | -| Neo | 1000 | ECS_RUNTIME vs ECS_RUNTIME | across_process | 3/3 | 2.384e-07~2.778e-05 | 3.505e-06~5.059e-06 | 1.429e-05~1.104e-04 | 2.186e-09~1.946e-08 | 0.3538 | PASS | -| Neo | 1000 | ECS_RUNTIME vs BASE | cross_implementation | 3/3 | 5.960e-08~2.718e-05 | 3.289e-06~4.839e-06 | 1.072e-05~1.038e-04 | 1.889e-09~1.829e-08 | 0.6028 | PASS | -| Neo | 1000 | ECS_RUNTIME vs TORCH | cross_implementation | 3/3 | 5.960e-08~3.272e-05 | 4.816e-06~7.409e-06 | 1.576e-04~3.508e-04 | 2.778e-08~6.184e-08 | 0.5441 | PASS | -| Neo | 1000 | ECS_RUNTIME vs ECS | cross_implementation | 3/3 | 5.960e-08~3.481e-05 | 3.344e-06~5.309e-06 | 1.161e-05~1.169e-04 | 1.612e-09~2.061e-08 | 0.5110 | PASS | -| Neo | 4096 | BASE vs BASE | within_process | 3/3 | 2.384e-07~4.643e-05 | 4.007e-06~5.565e-06 | 4.326e-05~1.764e-04 | 1.428e-09~7.592e-09 | 2.0354 | FAIL | -| Neo | 4096 | BASE vs BASE | across_process | 3/3 | 4.172e-07~5.627e-05 | 3.912e-06~5.939e-06 | 2.275e-05~2.513e-04 | 9.788e-10~1.081e-08 | 2.8536 | FAIL | -| Neo | 4096 | ECS vs ECS | within_process | 3/3 | 2.384e-07~5.406e-05 | 4.204e-06~5.183e-06 | 2.174e-05~1.084e-04 | 5.853e-10~4.666e-09 | 2.2326 | FAIL | -| Neo | 4096 | ECS vs ECS | across_process | 3/3 | 3.576e-07~8.285e-05 | 4.080e-06~5.679e-06 | 2.126e-05~1.705e-04 | 5.108e-10~7.337e-09 | 2.8543 | FAIL | -| Neo | 4096 | ECS vs BASE | cross_implementation | 3/3 | 5.960e-08~6.813e-05 | 4.013e-06~5.806e-06 | 2.113e-05~2.482e-04 | 6.362e-10~1.068e-08 | 3.2394 | FAIL | -| Neo | 4096 | ECS_RUNTIME vs ECS_RUNTIME | within_process | 3/3 | 3.576e-07~5.656e-05 | 4.011e-06~5.388e-06 | 2.321e-05~2.127e-04 | 9.989e-10~9.155e-09 | 3.0024 | FAIL | -| Neo | 4096 | ECS_RUNTIME vs ECS_RUNTIME | across_process | 3/3 | 2.384e-07~6.253e-05 | 4.014e-06~6.203e-06 | 2.701e-05~1.597e-04 | 9.890e-10~6.871e-09 | 2.9657 | FAIL | -| Neo | 4096 | ECS_RUNTIME vs BASE | cross_implementation | 3/3 | 5.960e-08~6.562e-05 | 4.056e-06~6.068e-06 | 1.560e-05~2.561e-04 | 6.714e-10~1.102e-08 | 3.5269 | FAIL | -| Neo | 4096 | ECS_RUNTIME vs ECS | cross_implementation | 3/3 | 5.960e-08~7.308e-05 | 3.972e-06~5.791e-06 | 2.029e-05~1.955e-04 | 8.732e-10~8.411e-09 | 3.1677 | FAIL | -| Pro | 64 | TORCH vs TORCH | within_process | 1/1 | 5.960e-08~1.520e-06 | 7.994e-07~1.084e-06 | 1.829e-06~4.709e-06 | 3.323e-09~1.297e-08 | 0.0749 | PASS(样本未齐) | -| Pro | 64 | BASE vs BASE | within_process | 1/1 | 2.086e-07~2.235e-06 | 7.070e-07~9.719e-07 | 1.706e-06~4.243e-06 | 4.698e-09~1.169e-08 | 0.0727 | PASS(样本未齐) | -| Pro | 64 | ECS vs ECS | within_process | 2/2 | 2.980e-08~3.010e-06 | 6.763e-07~9.147e-07 | 2.130e-06~7.250e-06 | 3.415e-09~1.997e-08 | 0.0893 | PASS(样本未齐) | -| Pro | 64 | ECS vs ECS | across_process | 2/2 | 2.980e-08~4.113e-06 | 6.775e-07~1.166e-06 | 1.785e-06~6.365e-06 | 2.901e-09~1.753e-08 | 0.1206 | PASS(样本未齐) | -| Pro | 64 | BASE vs TORCH | cross_implementation | 1/1 | 1.788e-07~3.934e-06 | 1.086e-06~1.643e-06 | 2.214e-06~9.813e-06 | 5.613e-09~2.703e-08 | 0.0992 | PASS(样本未齐) | -| Pro | 64 | ECS vs TORCH | cross_implementation | 2/1 | 2.086e-07~4.351e-06 | 9.742e-07~1.560e-06 | 2.394e-06~1.112e-05 | 5.669e-09~3.062e-08 | 0.1440 | PASS(样本未齐) | -| Pro | 64 | ECS vs BASE | cross_implementation | 2/1 | 5.960e-08~3.636e-06 | 6.614e-07~1.147e-06 | 1.603e-06~6.327e-06 | 2.958e-09~1.743e-08 | 0.0945 | PASS(样本未齐) | - -## 所有进程状态(含OOM/失败,不能略去) - -| 运行 | 状态 | 参数量 | opaque ECS调用 | single路径标记 | -| --- | --- | ---: | ---: | --- | -| Mini_n1000_BASE_p0 | completed | 654988 | 0 | False | -| Mini_n1000_BASE_p1 | completed | 654988 | 0 | False | -| Mini_n1000_BASE_p2 | completed | 654988 | 0 | False | -| Mini_n1000_ECS_p0 | completed | 654988 | 0 | False | -| Mini_n1000_ECS_p1 | completed | 654988 | 0 | False | -| Mini_n1000_ECS_p2 | completed | 654988 | 0 | False | -| Mini_n1000_TORCH_p0 | completed | 654988 | 0 | False | -| Mini_n1000_TORCH_p1 | completed | 654988 | 0 | False | -| Mini_n1000_TORCH_p2 | completed | 654988 | 0 | False | -| Mini_n4096_BASE_p0 | completed | 654988 | 0 | False | -| Mini_n4096_BASE_p1 | completed | 654988 | 0 | False | -| Mini_n4096_BASE_p2 | completed | 654988 | 0 | False | -| Mini_n4096_ECS_p0 | completed | 654988 | 0 | False | -| Mini_n4096_ECS_p1 | completed | 654988 | 0 | False | -| Mini_n4096_ECS_p2 | completed | 654988 | 0 | False | -| Mini_n4096_TORCH_p0 | completed | 654988 | 0 | False | -| Mini_n4096_TORCH_p1 | completed | 654988 | 0 | False | -| Mini_n4096_TORCH_p2 | completed | 654988 | 0 | False | -| Mini_n512_BASE_p0 | completed | 654988 | 0 | False | -| Mini_n512_BASE_p1 | completed | 654988 | 0 | False | -| Mini_n512_BASE_p2 | completed | 654988 | 0 | False | -| Mini_n512_ECS_p0 | completed | 654988 | 0 | False | -| Mini_n512_ECS_p1 | completed | 654988 | 0 | False | -| Mini_n512_ECS_p2 | completed | 654988 | 0 | False | -| Mini_n512_TORCH_p0 | completed | 654988 | 0 | False | -| Mini_n512_TORCH_p1 | completed | 654988 | 0 | False | -| Mini_n512_TORCH_p2 | completed | 654988 | 0 | False | -| Nano_n1000_BASE_p0 | completed | 480268 | 0 | False | -| Nano_n1000_BASE_p1 | completed | 480268 | 0 | False | -| Nano_n1000_BASE_p2 | completed | 480268 | 0 | False | -| Nano_n1000_ECS_p0 | completed | 480268 | 0 | False | -| Nano_n1000_ECS_p1 | completed | 480268 | 0 | False | -| Nano_n1000_ECS_p2 | completed | 480268 | 0 | False | -| Nano_n1000_TORCH_p0 | completed | 480268 | 0 | False | -| Nano_n1000_TORCH_p1 | completed | 480268 | 0 | False | -| Nano_n1000_TORCH_p2 | completed | 480268 | 0 | False | -| Nano_n4096_BASE_p0 | completed | 480268 | 0 | False | -| Nano_n4096_BASE_p1 | completed | 480268 | 0 | False | -| Nano_n4096_BASE_p2 | completed | 480268 | 0 | False | -| Nano_n4096_ECS_p0 | completed | 480268 | 0 | False | -| Nano_n4096_ECS_p1 | completed | 480268 | 0 | False | -| Nano_n4096_ECS_p2 | completed | 480268 | 0 | False | -| Nano_n4096_TORCH_p0 | completed | 480268 | 0 | False | -| Nano_n4096_TORCH_p1 | completed | 480268 | 0 | False | -| Nano_n4096_TORCH_p2 | completed | 480268 | 0 | False | -| Nano_n512_BASE_p0 | completed | 480268 | 0 | False | -| Nano_n512_BASE_p1 | completed | 480268 | 0 | False | -| Nano_n512_BASE_p2 | completed | 480268 | 0 | False | -| Nano_n512_ECS_p0 | completed | 480268 | 0 | False | -| Nano_n512_ECS_p1 | completed | 480268 | 0 | False | -| Nano_n512_ECS_p2 | completed | 480268 | 0 | False | -| Nano_n512_TORCH_p0 | completed | 480268 | 0 | False | -| Nano_n512_TORCH_p1 | completed | 480268 | 0 | False | -| Nano_n512_TORCH_p2 | completed | 480268 | 0 | False | -| Neo_n1000_BASE_p0 | completed | 1124910 | 0 | False | -| Neo_n1000_BASE_p1 | completed | 1124910 | 0 | False | -| Neo_n1000_BASE_p2 | completed | 1124910 | 0 | False | -| Neo_n1000_ECS_RUNTIME_p0 | completed | 1124910 | 2 | False | -| Neo_n1000_ECS_RUNTIME_p1 | completed | 1124910 | 2 | False | -| Neo_n1000_ECS_RUNTIME_p2 | completed | 1124910 | 2 | False | -| Neo_n1000_ECS_p0 | completed | 1124910 | 0 | True | -| Neo_n1000_ECS_p1 | completed | 1124910 | 0 | True | -| Neo_n1000_ECS_p2 | completed | 1124910 | 0 | True | -| Neo_n1000_TORCH_p0 | completed | 1124910 | 0 | False | -| Neo_n1000_TORCH_p1 | completed | 1124910 | 0 | False | -| Neo_n1000_TORCH_p2 | completed | 1124910 | 0 | False | -| Neo_n4096_BASE_p0 | completed | 1124910 | 0 | False | -| Neo_n4096_BASE_p1 | completed | 1124910 | 0 | False | -| Neo_n4096_BASE_p2 | completed | 1124910 | 0 | False | -| Neo_n4096_ECS_RUNTIME_p0 | completed | 1124910 | 2 | False | -| Neo_n4096_ECS_RUNTIME_p1 | completed | 1124910 | 2 | False | -| Neo_n4096_ECS_RUNTIME_p2 | completed | 1124910 | 2 | False | -| Neo_n4096_ECS_p0 | completed | 1124910 | 0 | True | -| Neo_n4096_ECS_p1 | completed | 1124910 | 0 | True | -| Neo_n4096_ECS_p2 | completed | 1124910 | 0 | True | -| Neo_n4096_TORCH_p0 | oom | 1124910 | 0 | False | -| Neo_n4096_TORCH_p1 | oom | 1124910 | 0 | False | -| Neo_n4096_TORCH_p2 | oom | 1124910 | 0 | False | -| Neo_n512_BASE_p0 | completed | 1124910 | 0 | False | -| Neo_n512_BASE_p1 | completed | 1124910 | 0 | False | -| Neo_n512_BASE_p2 | completed | 1124910 | 0 | False | -| Neo_n512_ECS_RUNTIME_p0 | completed | 1124910 | 2 | False | -| Neo_n512_ECS_RUNTIME_p1 | completed | 1124910 | 2 | False | -| Neo_n512_ECS_RUNTIME_p2 | completed | 1124910 | 2 | False | -| Neo_n512_ECS_p0 | completed | 1124910 | 0 | True | -| Neo_n512_ECS_p1 | completed | 1124910 | 0 | True | -| Neo_n512_ECS_p2 | completed | 1124910 | 0 | True | -| Neo_n512_TORCH_p0 | completed | 1124910 | 0 | False | -| Neo_n512_TORCH_p1 | completed | 1124910 | 0 | False | -| Neo_n512_TORCH_p2 | completed | 1124910 | 0 | False | -| Pro_n512_TORCH_p0 | oom | 22678990 | 0 | False | -| Pro_n64_BASE_p0 | completed | 22678990 | 0 | False | -| Pro_n64_ECS_p0 | completed | 22678990 | 0 | False | -| Pro_n64_ECS_p1 | completed | 22678990 | 0 | False | -| Pro_n64_TORCH_p0 | completed | 22678990 | 0 | False | diff --git a/doc/development/ecs-edge-cohort-multimodel-results.json b/doc/development/ecs-edge-cohort-multimodel-results.json deleted file mode 100644 index 5e00d3a703..0000000000 --- a/doc/development/ecs-edge-cohort-multimodel-results.json +++ /dev/null @@ -1,11013 +0,0 @@ -{ - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_floor": 1e-08 - }, - "range_definition": "min/max of max_abs over same-frame comparisons; NOT a confidence interval", - "statuses": [ - { - "run": "Mini_n1000_BASE_p0", - "model": "Mini", - "n": 1000, - "mode": "BASE", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "8625a6f9f07d0c8b3385d292657152a70bcc721e0a68e8a84ec14b464b2720ee", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 1884744704, - "reserved": 2017460224 - }, - "complete_peak": { - "allocated": 1884744704, - "reserved": 2017460224 - } - }, - { - "run": "Mini_n1000_BASE_p1", - "model": "Mini", - "n": 1000, - "mode": "BASE", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "8625a6f9f07d0c8b3385d292657152a70bcc721e0a68e8a84ec14b464b2720ee", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 1884744704, - "reserved": 2017460224 - }, - "complete_peak": { - "allocated": 1884744704, - "reserved": 2017460224 - } - }, - { - "run": "Mini_n1000_BASE_p2", - "model": "Mini", - "n": 1000, - "mode": "BASE", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "8625a6f9f07d0c8b3385d292657152a70bcc721e0a68e8a84ec14b464b2720ee", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 1884744704, - "reserved": 2017460224 - }, - "complete_peak": { - "allocated": 1884744704, - "reserved": 2017460224 - } - }, - { - "run": "Mini_n1000_ECS_p0", - "model": "Mini", - "n": 1000, - "mode": "ECS", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "f3b520a74b4a61cb4035f91fd5a53bc056e5fa85d7e6db4ba3526a003e4ccbef", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 1884744704, - "reserved": 2017460224 - }, - "complete_peak": { - "allocated": 1884744704, - "reserved": 2017460224 - } - }, - { - "run": "Mini_n1000_ECS_p1", - "model": "Mini", - "n": 1000, - "mode": "ECS", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "f3b520a74b4a61cb4035f91fd5a53bc056e5fa85d7e6db4ba3526a003e4ccbef", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 1884744704, - "reserved": 2017460224 - }, - "complete_peak": { - "allocated": 1884744704, - "reserved": 2017460224 - } - }, - { - "run": "Mini_n1000_ECS_p2", - "model": "Mini", - "n": 1000, - "mode": "ECS", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "f3b520a74b4a61cb4035f91fd5a53bc056e5fa85d7e6db4ba3526a003e4ccbef", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 1884744704, - "reserved": 2017460224 - }, - "complete_peak": { - "allocated": 1884744704, - "reserved": 2017460224 - } - }, - { - "run": "Mini_n1000_TORCH_p0", - "model": "Mini", - "n": 1000, - "mode": "TORCH", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "c540becf8e314c797db8c0e00ea5230e81df1df94bb39f6910a8cff8071bbca5", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 2970198016, - "reserved": 3319791616 - }, - "complete_peak": { - "allocated": 2970198016, - "reserved": 3319791616 - } - }, - { - "run": "Mini_n1000_TORCH_p1", - "model": "Mini", - "n": 1000, - "mode": "TORCH", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "c540becf8e314c797db8c0e00ea5230e81df1df94bb39f6910a8cff8071bbca5", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 2970198016, - "reserved": 3319791616 - }, - "complete_peak": { - "allocated": 2970198016, - "reserved": 3319791616 - } - }, - { - "run": "Mini_n1000_TORCH_p2", - "model": "Mini", - "n": 1000, - "mode": "TORCH", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "c540becf8e314c797db8c0e00ea5230e81df1df94bb39f6910a8cff8071bbca5", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 2970198016, - "reserved": 3319791616 - }, - "complete_peak": { - "allocated": 2970198016, - "reserved": 3319791616 - } - }, - { - "run": "Mini_n4096_BASE_p0", - "model": "Mini", - "n": 4096, - "mode": "BASE", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "224cf35c8c18efa76521e3be6bcadc40af824e737518a4643f85bd24c4c16bf0", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 7772357120, - "reserved": 8095006720 - }, - "complete_peak": { - "allocated": 7772357120, - "reserved": 8095006720 - } - }, - { - "run": "Mini_n4096_BASE_p1", - "model": "Mini", - "n": 4096, - "mode": "BASE", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "224cf35c8c18efa76521e3be6bcadc40af824e737518a4643f85bd24c4c16bf0", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 7671693824, - "reserved": 8095006720 - }, - "complete_peak": { - "allocated": 7671693824, - "reserved": 8095006720 - } - }, - { - "run": "Mini_n4096_BASE_p2", - "model": "Mini", - "n": 4096, - "mode": "BASE", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "224cf35c8c18efa76521e3be6bcadc40af824e737518a4643f85bd24c4c16bf0", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 7671693824, - "reserved": 8095006720 - }, - "complete_peak": { - "allocated": 7671693824, - "reserved": 8095006720 - } - }, - { - "run": "Mini_n4096_ECS_p0", - "model": "Mini", - "n": 4096, - "mode": "ECS", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "93486af5bf7c07be472bd5752eed586c5ceac40efbf9b70944446a57e74c7f28", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 7772357120, - "reserved": 8095006720 - }, - "complete_peak": { - "allocated": 7772357120, - "reserved": 8095006720 - } - }, - { - "run": "Mini_n4096_ECS_p1", - "model": "Mini", - "n": 4096, - "mode": "ECS", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "93486af5bf7c07be472bd5752eed586c5ceac40efbf9b70944446a57e74c7f28", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 7671693824, - "reserved": 8095006720 - }, - "complete_peak": { - "allocated": 7671693824, - "reserved": 8095006720 - } - }, - { - "run": "Mini_n4096_ECS_p2", - "model": "Mini", - "n": 4096, - "mode": "ECS", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "93486af5bf7c07be472bd5752eed586c5ceac40efbf9b70944446a57e74c7f28", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 7671693824, - "reserved": 8095006720 - }, - "complete_peak": { - "allocated": 7671693824, - "reserved": 8095006720 - } - }, - { - "run": "Mini_n4096_TORCH_p0", - "model": "Mini", - "n": 4096, - "mode": "TORCH", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "9d093dc41b4a7513c07a55f41581cc5458519ba9fb1969e071ed5ddbe937c8e9", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 12216360448, - "reserved": 13461618688 - }, - "complete_peak": { - "allocated": 12216360448, - "reserved": 13461618688 - } - }, - { - "run": "Mini_n4096_TORCH_p1", - "model": "Mini", - "n": 4096, - "mode": "TORCH", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "9d093dc41b4a7513c07a55f41581cc5458519ba9fb1969e071ed5ddbe937c8e9", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "complete_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - } - }, - { - "run": "Mini_n4096_TORCH_p2", - "model": "Mini", - "n": 4096, - "mode": "TORCH", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "9d093dc41b4a7513c07a55f41581cc5458519ba9fb1969e071ed5ddbe937c8e9", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "complete_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - } - }, - { - "run": "Mini_n512_BASE_p0", - "model": "Mini", - "n": 512, - "mode": "BASE", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "6e4519d893b867e2694985489c4bd25f32da235d52698211d5fc4510fb8753bd", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 972595712, - "reserved": 1052770304 - }, - "complete_peak": { - "allocated": 972595712, - "reserved": 1052770304 - } - }, - { - "run": "Mini_n512_BASE_p1", - "model": "Mini", - "n": 512, - "mode": "BASE", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "6e4519d893b867e2694985489c4bd25f32da235d52698211d5fc4510fb8753bd", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 972595712, - "reserved": 1052770304 - }, - "complete_peak": { - "allocated": 972595712, - "reserved": 1052770304 - } - }, - { - "run": "Mini_n512_BASE_p2", - "model": "Mini", - "n": 512, - "mode": "BASE", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "6e4519d893b867e2694985489c4bd25f32da235d52698211d5fc4510fb8753bd", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 972595712, - "reserved": 1052770304 - }, - "complete_peak": { - "allocated": 972595712, - "reserved": 1052770304 - } - }, - { - "run": "Mini_n512_ECS_p0", - "model": "Mini", - "n": 512, - "mode": "ECS", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "a59e0259cad41edca0b3f6fa19c79a2a1b3b2b3b4399c07710e111f9a721c5f3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 972595712, - "reserved": 1052770304 - }, - "complete_peak": { - "allocated": 972595712, - "reserved": 1052770304 - } - }, - { - "run": "Mini_n512_ECS_p1", - "model": "Mini", - "n": 512, - "mode": "ECS", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "a59e0259cad41edca0b3f6fa19c79a2a1b3b2b3b4399c07710e111f9a721c5f3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 972595712, - "reserved": 1052770304 - }, - "complete_peak": { - "allocated": 972595712, - "reserved": 1052770304 - } - }, - { - "run": "Mini_n512_ECS_p2", - "model": "Mini", - "n": 512, - "mode": "ECS", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "a59e0259cad41edca0b3f6fa19c79a2a1b3b2b3b4399c07710e111f9a721c5f3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 972595712, - "reserved": 1052770304 - }, - "complete_peak": { - "allocated": 972595712, - "reserved": 1052770304 - } - }, - { - "run": "Mini_n512_TORCH_p0", - "model": "Mini", - "n": 512, - "mode": "TORCH", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "02f212e68f8d3f4dc632d688eb9229058e9a3ef7964650c2efe2d952b936f4b9", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "complete_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - } - }, - { - "run": "Mini_n512_TORCH_p1", - "model": "Mini", - "n": 512, - "mode": "TORCH", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "02f212e68f8d3f4dc632d688eb9229058e9a3ef7964650c2efe2d952b936f4b9", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "complete_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - } - }, - { - "run": "Mini_n512_TORCH_p2", - "model": "Mini", - "n": 512, - "mode": "TORCH", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "02f212e68f8d3f4dc632d688eb9229058e9a3ef7964650c2efe2d952b936f4b9", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "complete_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - } - }, - { - "run": "Nano_n1000_BASE_p0", - "model": "Nano", - "n": 1000, - "mode": "BASE", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "46304479d6d1aca21b3ce68181af8752984588860ffabcc91f85c0d1bb36df99", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 1045293568, - "reserved": 1159725056 - }, - "complete_peak": { - "allocated": 1045293568, - "reserved": 1159725056 - } - }, - { - "run": "Nano_n1000_BASE_p1", - "model": "Nano", - "n": 1000, - "mode": "BASE", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "46304479d6d1aca21b3ce68181af8752984588860ffabcc91f85c0d1bb36df99", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 1045293568, - "reserved": 1159725056 - }, - "complete_peak": { - "allocated": 1045293568, - "reserved": 1159725056 - } - }, - { - "run": "Nano_n1000_BASE_p2", - "model": "Nano", - "n": 1000, - "mode": "BASE", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "46304479d6d1aca21b3ce68181af8752984588860ffabcc91f85c0d1bb36df99", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 1045293568, - "reserved": 1159725056 - }, - "complete_peak": { - "allocated": 1045293568, - "reserved": 1159725056 - } - }, - { - "run": "Nano_n1000_ECS_p0", - "model": "Nano", - "n": 1000, - "mode": "ECS", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "87fbc5bba196ee0c902a76eadd8acdc706737cb38d1cb7959105260d2fff699b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 1045293568, - "reserved": 1159725056 - }, - "complete_peak": { - "allocated": 1045293568, - "reserved": 1159725056 - } - }, - { - "run": "Nano_n1000_ECS_p1", - "model": "Nano", - "n": 1000, - "mode": "ECS", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "87fbc5bba196ee0c902a76eadd8acdc706737cb38d1cb7959105260d2fff699b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 1045293568, - "reserved": 1159725056 - }, - "complete_peak": { - "allocated": 1045293568, - "reserved": 1159725056 - } - }, - { - "run": "Nano_n1000_ECS_p2", - "model": "Nano", - "n": 1000, - "mode": "ECS", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "87fbc5bba196ee0c902a76eadd8acdc706737cb38d1cb7959105260d2fff699b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 1045293568, - "reserved": 1159725056 - }, - "complete_peak": { - "allocated": 1045293568, - "reserved": 1159725056 - } - }, - { - "run": "Nano_n1000_TORCH_p0", - "model": "Nano", - "n": 1000, - "mode": "TORCH", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "b86754c6c32ad76d6462a905951544cf6dcb42d4533d25f0505673a777a9ae79", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 1639991296, - "reserved": 1728053248 - }, - "complete_peak": { - "allocated": 1639991296, - "reserved": 1728053248 - } - }, - { - "run": "Nano_n1000_TORCH_p1", - "model": "Nano", - "n": 1000, - "mode": "TORCH", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "b86754c6c32ad76d6462a905951544cf6dcb42d4533d25f0505673a777a9ae79", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 1639991296, - "reserved": 1728053248 - }, - "complete_peak": { - "allocated": 1639991296, - "reserved": 1728053248 - } - }, - { - "run": "Nano_n1000_TORCH_p2", - "model": "Nano", - "n": 1000, - "mode": "TORCH", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "b86754c6c32ad76d6462a905951544cf6dcb42d4533d25f0505673a777a9ae79", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 1639991296, - "reserved": 1728053248 - }, - "complete_peak": { - "allocated": 1639991296, - "reserved": 1728053248 - } - }, - { - "run": "Nano_n4096_BASE_p0", - "model": "Nano", - "n": 4096, - "mode": "BASE", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "61d8093779706892b05c8cd5d33057cceb69fab734ae40337705eba3654ff09e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 4342519296, - "reserved": 4504682496 - }, - "complete_peak": { - "allocated": 4342519296, - "reserved": 4504682496 - } - }, - { - "run": "Nano_n4096_BASE_p1", - "model": "Nano", - "n": 4096, - "mode": "BASE", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "61d8093779706892b05c8cd5d33057cceb69fab734ae40337705eba3654ff09e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 4241856000, - "reserved": 4504682496 - }, - "complete_peak": { - "allocated": 4241856000, - "reserved": 4504682496 - } - }, - { - "run": "Nano_n4096_BASE_p2", - "model": "Nano", - "n": 4096, - "mode": "BASE", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "61d8093779706892b05c8cd5d33057cceb69fab734ae40337705eba3654ff09e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 4241856000, - "reserved": 4504682496 - }, - "complete_peak": { - "allocated": 4241856000, - "reserved": 4504682496 - } - }, - { - "run": "Nano_n4096_ECS_p0", - "model": "Nano", - "n": 4096, - "mode": "ECS", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "4f8e79499d28567ed6e211ab86f8ab810bff539dd94c0d5ee6670f579acfceea", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 4342519296, - "reserved": 4504682496 - }, - "complete_peak": { - "allocated": 4342519296, - "reserved": 4504682496 - } - }, - { - "run": "Nano_n4096_ECS_p1", - "model": "Nano", - "n": 4096, - "mode": "ECS", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "4f8e79499d28567ed6e211ab86f8ab810bff539dd94c0d5ee6670f579acfceea", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 4241856000, - "reserved": 4504682496 - }, - "complete_peak": { - "allocated": 4241856000, - "reserved": 4504682496 - } - }, - { - "run": "Nano_n4096_ECS_p2", - "model": "Nano", - "n": 4096, - "mode": "ECS", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "4f8e79499d28567ed6e211ab86f8ab810bff539dd94c0d5ee6670f579acfceea", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 4241856000, - "reserved": 4504682496 - }, - "complete_peak": { - "allocated": 4241856000, - "reserved": 4504682496 - } - }, - { - "run": "Nano_n4096_TORCH_p0", - "model": "Nano", - "n": 4096, - "mode": "TORCH", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "43b10dc8ccd688392f0f9d4d11704e2a68f8a57c6de79661babfdf074579c711", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 6695809536, - "reserved": 7105150976 - }, - "complete_peak": { - "allocated": 6695809536, - "reserved": 7105150976 - } - }, - { - "run": "Nano_n4096_TORCH_p1", - "model": "Nano", - "n": 4096, - "mode": "TORCH", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "43b10dc8ccd688392f0f9d4d11704e2a68f8a57c6de79661babfdf074579c711", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "complete_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - } - }, - { - "run": "Nano_n4096_TORCH_p2", - "model": "Nano", - "n": 4096, - "mode": "TORCH", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "43b10dc8ccd688392f0f9d4d11704e2a68f8a57c6de79661babfdf074579c711", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "complete_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - } - }, - { - "run": "Nano_n512_BASE_p0", - "model": "Nano", - "n": 512, - "mode": "BASE", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "dd4fd3d5192260196800015cce2abdea8a93f037a973334eb3b86e0fef4be208", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 541447680, - "reserved": 608174080 - }, - "complete_peak": { - "allocated": 541447680, - "reserved": 608174080 - } - }, - { - "run": "Nano_n512_BASE_p1", - "model": "Nano", - "n": 512, - "mode": "BASE", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "dd4fd3d5192260196800015cce2abdea8a93f037a973334eb3b86e0fef4be208", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 541447680, - "reserved": 608174080 - }, - "complete_peak": { - "allocated": 541447680, - "reserved": 608174080 - } - }, - { - "run": "Nano_n512_BASE_p2", - "model": "Nano", - "n": 512, - "mode": "BASE", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "dd4fd3d5192260196800015cce2abdea8a93f037a973334eb3b86e0fef4be208", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 541447680, - "reserved": 608174080 - }, - "complete_peak": { - "allocated": 541447680, - "reserved": 608174080 - } - }, - { - "run": "Nano_n512_ECS_p0", - "model": "Nano", - "n": 512, - "mode": "ECS", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "d198fcde748d3adf01649ce3c7188be3bd1a31199a716dd14d24e678e084da96", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 541447680, - "reserved": 608174080 - }, - "complete_peak": { - "allocated": 541447680, - "reserved": 608174080 - } - }, - { - "run": "Nano_n512_ECS_p1", - "model": "Nano", - "n": 512, - "mode": "ECS", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "d198fcde748d3adf01649ce3c7188be3bd1a31199a716dd14d24e678e084da96", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 541447680, - "reserved": 608174080 - }, - "complete_peak": { - "allocated": 541447680, - "reserved": 608174080 - } - }, - { - "run": "Nano_n512_ECS_p2", - "model": "Nano", - "n": 512, - "mode": "ECS", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "d198fcde748d3adf01649ce3c7188be3bd1a31199a716dd14d24e678e084da96", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 541447680, - "reserved": 608174080 - }, - "complete_peak": { - "allocated": 541447680, - "reserved": 608174080 - } - }, - { - "run": "Nano_n512_TORCH_p0", - "model": "Nano", - "n": 512, - "mode": "TORCH", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "9f7ed1784d69c0f2d520e25b25447333594fc68399b5721749738943eadb75fd", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "complete_peak": { - "allocated": 845872128, - "reserved": 901775360 - } - }, - { - "run": "Nano_n512_TORCH_p1", - "model": "Nano", - "n": 512, - "mode": "TORCH", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "9f7ed1784d69c0f2d520e25b25447333594fc68399b5721749738943eadb75fd", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "complete_peak": { - "allocated": 845872128, - "reserved": 901775360 - } - }, - { - "run": "Nano_n512_TORCH_p2", - "model": "Nano", - "n": 512, - "mode": "TORCH", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "9f7ed1784d69c0f2d520e25b25447333594fc68399b5721749738943eadb75fd", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "complete_peak": { - "allocated": 845872128, - "reserved": 901775360 - } - }, - { - "run": "Neo_n1000_BASE_p0", - "model": "Neo", - "n": 1000, - "mode": "BASE", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "1a2b97834230b1d66b8c8141266dd87a0a2103ab1e129ff497d8b170843a7b53", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 5869244928, - "reserved": 6488588288 - }, - "complete_peak": { - "allocated": 5869244928, - "reserved": 6488588288 - } - }, - { - "run": "Neo_n1000_BASE_p1", - "model": "Neo", - "n": 1000, - "mode": "BASE", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "1a2b97834230b1d66b8c8141266dd87a0a2103ab1e129ff497d8b170843a7b53", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 5869244928, - "reserved": 6488588288 - }, - "complete_peak": { - "allocated": 5869244928, - "reserved": 6488588288 - } - }, - { - "run": "Neo_n1000_BASE_p2", - "model": "Neo", - "n": 1000, - "mode": "BASE", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "1a2b97834230b1d66b8c8141266dd87a0a2103ab1e129ff497d8b170843a7b53", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 5869244928, - "reserved": 6488588288 - }, - "complete_peak": { - "allocated": 5869244928, - "reserved": 6488588288 - } - }, - { - "run": "Neo_n1000_ECS_RUNTIME_p0", - "model": "Neo", - "n": 1000, - "mode": "ECS_RUNTIME", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "1ad15e76e2aa7897cdb0c13a981ae726d8117e259558269df740e814eb3813d5", - "opaque_cohort_calls": 2, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 9, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [ - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - } - ], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 5448002048, - "reserved": 5691670528 - }, - "complete_peak": { - "allocated": 5449050624, - "reserved": 5691670528 - } - }, - { - "run": "Neo_n1000_ECS_RUNTIME_p1", - "model": "Neo", - "n": 1000, - "mode": "ECS_RUNTIME", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "1ad15e76e2aa7897cdb0c13a981ae726d8117e259558269df740e814eb3813d5", - "opaque_cohort_calls": 2, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 9, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [ - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - } - ], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 5448002048, - "reserved": 5691670528 - }, - "complete_peak": { - "allocated": 5449050624, - "reserved": 5691670528 - } - }, - { - "run": "Neo_n1000_ECS_RUNTIME_p2", - "model": "Neo", - "n": 1000, - "mode": "ECS_RUNTIME", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "1ad15e76e2aa7897cdb0c13a981ae726d8117e259558269df740e814eb3813d5", - "opaque_cohort_calls": 2, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 9, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [ - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - }, - { - "edges": 158002, - "cohort": 8192, - "chunks": 20 - } - ], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 5448002048, - "reserved": 5691670528 - }, - "complete_peak": { - "allocated": 5449050624, - "reserved": 5691670528 - } - }, - { - "run": "Neo_n1000_ECS_p0", - "model": "Neo", - "n": 1000, - "mode": "ECS", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "50fe77b1c829163d08ffcc6d840fe53e4350f699677957298be789c4d21754e2", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 5585725952, - "reserved": 6090129408 - }, - "complete_peak": { - "allocated": 5585725952, - "reserved": 6090129408 - } - }, - { - "run": "Neo_n1000_ECS_p1", - "model": "Neo", - "n": 1000, - "mode": "ECS", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "50fe77b1c829163d08ffcc6d840fe53e4350f699677957298be789c4d21754e2", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 5585725952, - "reserved": 6090129408 - }, - "complete_peak": { - "allocated": 5585725952, - "reserved": 6090129408 - } - }, - { - "run": "Neo_n1000_ECS_p2", - "model": "Neo", - "n": 1000, - "mode": "ECS", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "50fe77b1c829163d08ffcc6d840fe53e4350f699677957298be789c4d21754e2", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 5585725952, - "reserved": 6090129408 - }, - "complete_peak": { - "allocated": 5585725952, - "reserved": 6090129408 - } - }, - { - "run": "Neo_n1000_TORCH_p0", - "model": "Neo", - "n": 1000, - "mode": "TORCH", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "35f8d780596dfebf67f99061858fba9c9fa0de9c6f1ac9036bcab1e2c631dd6d", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 10390707200, - "reserved": 11903434752 - }, - "complete_peak": { - "allocated": 10390707200, - "reserved": 11903434752 - } - }, - { - "run": "Neo_n1000_TORCH_p1", - "model": "Neo", - "n": 1000, - "mode": "TORCH", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "35f8d780596dfebf67f99061858fba9c9fa0de9c6f1ac9036bcab1e2c631dd6d", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 10390707200, - "reserved": 11903434752 - }, - "complete_peak": { - "allocated": 10390707200, - "reserved": 11903434752 - } - }, - { - "run": "Neo_n1000_TORCH_p2", - "model": "Neo", - "n": 1000, - "mode": "TORCH", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "35f8d780596dfebf67f99061858fba9c9fa0de9c6f1ac9036bcab1e2c631dd6d", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 10390707200, - "reserved": 11903434752 - }, - "complete_peak": { - "allocated": 10390707200, - "reserved": 11903434752 - } - }, - { - "run": "Neo_n4096_BASE_p0", - "model": "Neo", - "n": 4096, - "mode": "BASE", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "19ca66269f1712384c51ef9eb5122e8a2bbc66230787c8008f9d89352873b0ce", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 24061592576, - "reserved": 25612517376 - }, - "complete_peak": { - "allocated": 24061592576, - "reserved": 25612517376 - } - }, - { - "run": "Neo_n4096_BASE_p1", - "model": "Neo", - "n": 4096, - "mode": "BASE", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "19ca66269f1712384c51ef9eb5122e8a2bbc66230787c8008f9d89352873b0ce", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 23970400256, - "reserved": 25610420224 - }, - "complete_peak": { - "allocated": 23970400256, - "reserved": 25610420224 - } - }, - { - "run": "Neo_n4096_BASE_p2", - "model": "Neo", - "n": 4096, - "mode": "BASE", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "19ca66269f1712384c51ef9eb5122e8a2bbc66230787c8008f9d89352873b0ce", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 23970400256, - "reserved": 25610420224 - }, - "complete_peak": { - "allocated": 23970400256, - "reserved": 25610420224 - } - }, - { - "run": "Neo_n4096_ECS_RUNTIME_p0", - "model": "Neo", - "n": 4096, - "mode": "ECS_RUNTIME", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "f03faf056cef0c142541bcf8c855e5b22713f9223ac3f36a897acea66674bb99", - "opaque_cohort_calls": 2, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 9, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [ - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - } - ], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 22255608320, - "reserved": 23284678656 - }, - "complete_peak": { - "allocated": 22256656896, - "reserved": 23284678656 - } - }, - { - "run": "Neo_n4096_ECS_RUNTIME_p1", - "model": "Neo", - "n": 4096, - "mode": "ECS_RUNTIME", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "f03faf056cef0c142541bcf8c855e5b22713f9223ac3f36a897acea66674bb99", - "opaque_cohort_calls": 2, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 9, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [ - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - } - ], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 22255608320, - "reserved": 23282581504 - }, - "complete_peak": { - "allocated": 22256656896, - "reserved": 23282581504 - } - }, - { - "run": "Neo_n4096_ECS_RUNTIME_p2", - "model": "Neo", - "n": 4096, - "mode": "ECS_RUNTIME", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "f03faf056cef0c142541bcf8c855e5b22713f9223ac3f36a897acea66674bb99", - "opaque_cohort_calls": 2, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 9, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [ - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - }, - { - "edges": 647170, - "cohort": 8192, - "chunks": 80 - } - ], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 22255608320, - "reserved": 23282581504 - }, - "complete_peak": { - "allocated": 22256656896, - "reserved": 23282581504 - } - }, - { - "run": "Neo_n4096_ECS_p0", - "model": "Neo", - "n": 4096, - "mode": "ECS", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "60c8057296067a15919c1abb7618d4fcfd1436a9aa649fc49c9c2fb8f3495dca", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 22907041792, - "reserved": 23955767296 - }, - "complete_peak": { - "allocated": 22907041792, - "reserved": 23955767296 - } - }, - { - "run": "Neo_n4096_ECS_p1", - "model": "Neo", - "n": 4096, - "mode": "ECS", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "60c8057296067a15919c1abb7618d4fcfd1436a9aa649fc49c9c2fb8f3495dca", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "complete_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - } - }, - { - "run": "Neo_n4096_ECS_p2", - "model": "Neo", - "n": 4096, - "mode": "ECS", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "60c8057296067a15919c1abb7618d4fcfd1436a9aa649fc49c9c2fb8f3495dca", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "complete_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - } - }, - { - "run": "Neo_n4096_TORCH_p0", - "model": "Neo", - "n": 4096, - "mode": "TORCH", - "gpu": "0", - "process": "p0", - "status": "oom", - "raw_status": "failed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 1124910, - "first_peak": null, - "complete_peak": { - "allocated": 32302947328, - "reserved": 32440844288 - } - }, - { - "run": "Neo_n4096_TORCH_p1", - "model": "Neo", - "n": 4096, - "mode": "TORCH", - "gpu": "0", - "process": "p1", - "status": "oom", - "raw_status": "oom", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 1124910, - "first_peak": null, - "complete_peak": { - "allocated": 32302947328, - "reserved": 32440844288 - } - }, - { - "run": "Neo_n4096_TORCH_p2", - "model": "Neo", - "n": 4096, - "mode": "TORCH", - "gpu": "0", - "process": "p2", - "status": "oom", - "raw_status": "oom", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 1124910, - "first_peak": null, - "complete_peak": { - "allocated": 32302947328, - "reserved": 32440844288 - } - }, - { - "run": "Neo_n512_BASE_p0", - "model": "Neo", - "n": 512, - "mode": "BASE", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "c8bf722e1a5145db4d3dac88eea0593748565992f75331a9fb5e0bf0c8ca75c3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 3016099840, - "reserved": 3242196992 - }, - "complete_peak": { - "allocated": 3016099840, - "reserved": 3242196992 - } - }, - { - "run": "Neo_n512_BASE_p1", - "model": "Neo", - "n": 512, - "mode": "BASE", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "c8bf722e1a5145db4d3dac88eea0593748565992f75331a9fb5e0bf0c8ca75c3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 3016099840, - "reserved": 3242196992 - }, - "complete_peak": { - "allocated": 3016099840, - "reserved": 3242196992 - } - }, - { - "run": "Neo_n512_BASE_p2", - "model": "Neo", - "n": 512, - "mode": "BASE", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "c8bf722e1a5145db4d3dac88eea0593748565992f75331a9fb5e0bf0c8ca75c3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 3016099840, - "reserved": 3242196992 - }, - "complete_peak": { - "allocated": 3016099840, - "reserved": 3242196992 - } - }, - { - "run": "Neo_n512_ECS_RUNTIME_p0", - "model": "Neo", - "n": 512, - "mode": "ECS_RUNTIME", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "cbe12e1581bde050b362c75729cfbe6efe355cb3ae52f4d39d51ea19784f3593", - "opaque_cohort_calls": 2, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 9, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [ - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - } - ], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 2798746112, - "reserved": 2948595712 - }, - "complete_peak": { - "allocated": 2799794688, - "reserved": 2948595712 - } - }, - { - "run": "Neo_n512_ECS_RUNTIME_p1", - "model": "Neo", - "n": 512, - "mode": "ECS_RUNTIME", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "cbe12e1581bde050b362c75729cfbe6efe355cb3ae52f4d39d51ea19784f3593", - "opaque_cohort_calls": 2, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 9, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [ - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - } - ], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 2798746112, - "reserved": 2948595712 - }, - "complete_peak": { - "allocated": 2799794688, - "reserved": 2948595712 - } - }, - { - "run": "Neo_n512_ECS_RUNTIME_p2", - "model": "Neo", - "n": 512, - "mode": "ECS_RUNTIME", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "cbe12e1581bde050b362c75729cfbe6efe355cb3ae52f4d39d51ea19784f3593", - "opaque_cohort_calls": 2, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 9, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [ - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - }, - { - "edges": 80898, - "cohort": 8192, - "chunks": 10 - } - ], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 2798746112, - "reserved": 2948595712 - }, - "complete_peak": { - "allocated": 2799794688, - "reserved": 2948595712 - } - }, - { - "run": "Neo_n512_ECS_p0", - "model": "Neo", - "n": 512, - "mode": "ECS", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "97b6e45c27f52dca1101520bb417952b7b3d99865eae401991d87a496041a829", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "complete_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - } - }, - { - "run": "Neo_n512_ECS_p1", - "model": "Neo", - "n": 512, - "mode": "ECS", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "97b6e45c27f52dca1101520bb417952b7b3d99865eae401991d87a496041a829", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "complete_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - } - }, - { - "run": "Neo_n512_ECS_p2", - "model": "Neo", - "n": 512, - "mode": "ECS", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "97b6e45c27f52dca1101520bb417952b7b3d99865eae401991d87a496041a829", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "complete_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - } - }, - { - "run": "Neo_n512_TORCH_p0", - "model": "Neo", - "n": 512, - "mode": "TORCH", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "25780fc62369deab593b7e688daac8bc93df9690003f5f1b0917be25e681c72f", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 5431681536, - "reserved": 6075449344 - }, - "complete_peak": { - "allocated": 5431681536, - "reserved": 6075449344 - } - }, - { - "run": "Neo_n512_TORCH_p1", - "model": "Neo", - "n": 512, - "mode": "TORCH", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "25780fc62369deab593b7e688daac8bc93df9690003f5f1b0917be25e681c72f", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "complete_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - } - }, - { - "run": "Neo_n512_TORCH_p2", - "model": "Neo", - "n": 512, - "mode": "TORCH", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "25780fc62369deab593b7e688daac8bc93df9690003f5f1b0917be25e681c72f", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "complete_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - } - }, - { - "run": "Pro_n4096_BASE_p0", - "model": "Pro", - "n": 4096, - "mode": "BASE", - "gpu": "0", - "process": "p0", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 32029964800, - "reserved": 32136757248 - } - }, - { - "run": "Pro_n4096_BASE_p1", - "model": "Pro", - "n": 4096, - "mode": "BASE", - "gpu": "0", - "process": "p1", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 31929301504, - "reserved": 31989956608 - } - }, - { - "run": "Pro_n4096_BASE_p2", - "model": "Pro", - "n": 4096, - "mode": "BASE", - "gpu": "0", - "process": "p2", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 31929301504, - "reserved": 31989956608 - } - }, - { - "run": "Pro_n4096_ECS_p0", - "model": "Pro", - "n": 4096, - "mode": "ECS", - "gpu": "0", - "process": "p0", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 32029964800, - "reserved": 32136757248 - } - }, - { - "run": "Pro_n4096_ECS_p1", - "model": "Pro", - "n": 4096, - "mode": "ECS", - "gpu": "0", - "process": "p1", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 31929301504, - "reserved": 31989956608 - } - }, - { - "run": "Pro_n4096_ECS_p2", - "model": "Pro", - "n": 4096, - "mode": "ECS", - "gpu": "0", - "process": "p2", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 31929301504, - "reserved": 31989956608 - } - }, - { - "run": "Pro_n4096_TORCH_p0", - "model": "Pro", - "n": 4096, - "mode": "TORCH", - "gpu": "0", - "process": "p0", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 32290010624, - "reserved": 32598130688 - } - }, - { - "run": "Pro_n4096_TORCH_p1", - "model": "Pro", - "n": 4096, - "mode": "TORCH", - "gpu": "0", - "process": "p1", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 32189347328, - "reserved": 32598130688 - } - }, - { - "run": "Pro_n4096_TORCH_p2", - "model": "Pro", - "n": 4096, - "mode": "TORCH", - "gpu": "0", - "process": "p2", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 32189347328, - "reserved": 32598130688 - } - }, - { - "run": "Pro_n512_BASE_p0", - "model": "Pro", - "n": 512, - "mode": "BASE", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "03b0d8cf53980781bdeb784606657500fd2a867d6c32e0a268f968c63064e3ac", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 26158820352, - "reserved": 27103592448 - }, - "complete_peak": { - "allocated": 26158820352, - "reserved": 27103592448 - } - }, - { - "run": "Pro_n512_BASE_p1", - "model": "Pro", - "n": 512, - "mode": "BASE", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "03b0d8cf53980781bdeb784606657500fd2a867d6c32e0a268f968c63064e3ac", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 26058157056, - "reserved": 27103592448 - }, - "complete_peak": { - "allocated": 26058157056, - "reserved": 27103592448 - } - }, - { - "run": "Pro_n512_BASE_p2", - "model": "Pro", - "n": 512, - "mode": "BASE", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "03b0d8cf53980781bdeb784606657500fd2a867d6c32e0a268f968c63064e3ac", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 26058157056, - "reserved": 27103592448 - }, - "complete_peak": { - "allocated": 26058157056, - "reserved": 27103592448 - } - }, - { - "run": "Pro_n512_ECS_p0", - "model": "Pro", - "n": 512, - "mode": "ECS", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "f0b67d5cb103a03d0058b9d5a9658f88df29a8d5d164b405d8521335ab8ec1ce", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 26158820352, - "reserved": 27103592448 - }, - "complete_peak": { - "allocated": 26158820352, - "reserved": 27103592448 - } - }, - { - "run": "Pro_n512_ECS_p1", - "model": "Pro", - "n": 512, - "mode": "ECS", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "f0b67d5cb103a03d0058b9d5a9658f88df29a8d5d164b405d8521335ab8ec1ce", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 26058157056, - "reserved": 27103592448 - }, - "complete_peak": { - "allocated": 26058157056, - "reserved": 27103592448 - } - }, - { - "run": "Pro_n512_ECS_p2", - "model": "Pro", - "n": 512, - "mode": "ECS", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "f0b67d5cb103a03d0058b9d5a9658f88df29a8d5d164b405d8521335ab8ec1ce", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 26058157056, - "reserved": 27103592448 - }, - "complete_peak": { - "allocated": 26058157056, - "reserved": 27103592448 - } - }, - { - "run": "Pro_n512_TORCH_p0", - "model": "Pro", - "n": 512, - "mode": "TORCH", - "gpu": "1", - "process": "p0", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 32676858368, - "reserved": 32847691776 - } - }, - { - "run": "Pro_n512_TORCH_p1", - "model": "Pro", - "n": 512, - "mode": "TORCH", - "gpu": "1", - "process": "p1", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 32676858368, - "reserved": 32847691776 - } - }, - { - "run": "Pro_n512_TORCH_p2", - "model": "Pro", - "n": 512, - "mode": "TORCH", - "gpu": "1", - "process": "p2", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 32676858368, - "reserved": 32847691776 - } - }, - { - "run": "Pro_n64_BASE_p0", - "model": "Pro", - "n": 64, - "mode": "BASE", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "31eaf0474fc2582f3f41c6b9d2d853d341219c9a4b3b73104ee1a919fd2d9a70", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 3656641536, - "reserved": 3783262208 - }, - "complete_peak": { - "allocated": 3656641536, - "reserved": 3783262208 - } - }, - { - "run": "Pro_n64_BASE_p1", - "model": "Pro", - "n": 64, - "mode": "BASE", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "31eaf0474fc2582f3f41c6b9d2d853d341219c9a4b3b73104ee1a919fd2d9a70", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 3555978240, - "reserved": 3699376128 - }, - "complete_peak": { - "allocated": 3555978240, - "reserved": 3699376128 - } - }, - { - "run": "Pro_n64_BASE_p2", - "model": "Pro", - "n": 64, - "mode": "BASE", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "31eaf0474fc2582f3f41c6b9d2d853d341219c9a4b3b73104ee1a919fd2d9a70", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 3555978240, - "reserved": 3699376128 - }, - "complete_peak": { - "allocated": 3555978240, - "reserved": 3699376128 - } - }, - { - "run": "Pro_n64_ECS_p0", - "model": "Pro", - "n": 64, - "mode": "ECS", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "f2d0ae9335e31e7bd09b3d90af402d5dae9eb5ed20226a4d9d1890bff5793f0d", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 3656641536, - "reserved": 3783262208 - }, - "complete_peak": { - "allocated": 3656641536, - "reserved": 3783262208 - } - }, - { - "run": "Pro_n64_ECS_p1", - "model": "Pro", - "n": 64, - "mode": "ECS", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "f2d0ae9335e31e7bd09b3d90af402d5dae9eb5ed20226a4d9d1890bff5793f0d", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 3555978240, - "reserved": 3699376128 - }, - "complete_peak": { - "allocated": 3555978240, - "reserved": 3699376128 - } - }, - { - "run": "Pro_n64_ECS_p2", - "model": "Pro", - "n": 64, - "mode": "ECS", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "f2d0ae9335e31e7bd09b3d90af402d5dae9eb5ed20226a4d9d1890bff5793f0d", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 3555978240, - "reserved": 3699376128 - }, - "complete_peak": { - "allocated": 3555978240, - "reserved": 3699376128 - } - }, - { - "run": "Pro_n64_TORCH_p0", - "model": "Pro", - "n": 64, - "mode": "TORCH", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "d54dc4989a6398f93d01ea9b60cfbc8d162c584844993d18a3afd203669452e4", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 7752399872, - "reserved": 8145338368 - }, - "complete_peak": { - "allocated": 7752399872, - "reserved": 8145338368 - } - }, - { - "run": "Pro_n64_TORCH_p1", - "model": "Pro", - "n": 64, - "mode": "TORCH", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "d54dc4989a6398f93d01ea9b60cfbc8d162c584844993d18a3afd203669452e4", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 7752399872, - "reserved": 8145338368 - }, - "complete_peak": { - "allocated": 7752399872, - "reserved": 8145338368 - } - }, - { - "run": "Pro_n64_TORCH_p2", - "model": "Pro", - "n": 64, - "mode": "TORCH", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "d54dc4989a6398f93d01ea9b60cfbc8d162c584844993d18a3afd203669452e4", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 7752399872, - "reserved": 8145338368 - }, - "complete_peak": { - "allocated": 7752399872, - "reserved": 8145338368 - } - } - ], - "comparisons": [ - { - "model": "Mini", - "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7881393432617188e-07, - 1.9073486328125e-05 - ], - "worst_mean_abs": 1.9073486328125e-05, - "worst_max_relative": 4.107218964838322e-09, - "worst_tolerance_ratio": 4.107130523301802e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.742866099778254e-06, - 7.457862025717077e-06 - ], - "worst_mean_abs": 1.5914368669058111e-06, - "worst_max_relative": 0.022706930419765924, - "worst_tolerance_ratio": 0.5330082713608827 - }, - "virial": { - "comparisons": 27, - "failures": 5, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.9414789234506458e-05, - 0.00010075638114237506 - ], - "worst_mean_abs": 4.490057265028725e-05, - "worst_max_relative": 0.00037430960387721865, - "worst_tolerance_ratio": 2.325619491095815 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.477172333207992e-09, - 3.453298559868284e-08 - ], - "worst_mean_abs": 1.5742615091094245e-08, - "worst_max_relative": 0.0003677758905958666, - "worst_tolerance_ratio": 0.0033971439422584896 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 2.682209014892578e-05 - ], - "worst_mean_abs": 2.682209014892578e-05, - "worst_max_relative": 5.776065127309253e-09, - "worst_tolerance_ratio": 5.7759407439755024e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.57359965291937e-06, - 8.402122760209352e-06 - ], - "worst_mean_abs": 1.5750863560325835e-06, - "worst_max_relative": 0.022694625408821053, - "worst_tolerance_ratio": 0.6534603706501315 - }, - "virial": { - "comparisons": 81, - "failures": 14, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.16080184003431e-05, - 0.00010169408309934624 - ], - "worst_mean_abs": 4.00106575227562e-05, - "worst_max_relative": 0.0003347357074241739, - "worst_tolerance_ratio": 2.0800050112545687 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.439189795427348e-09, - 3.501115054815873e-08 - ], - "worst_mean_abs": 1.5725543107664093e-08, - "worst_max_relative": 0.0003245584752382981, - "worst_tolerance_ratio": 0.00326680948823279 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.940696716308594e-07, - 2.9087066650390625e-05 - ], - "worst_mean_abs": 2.9087066650390625e-05, - "worst_max_relative": 6.263508908435247e-09, - "worst_tolerance_ratio": 6.263374035092612e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.664545644545882e-06, - 7.634197266348508e-06 - ], - "worst_mean_abs": 1.5398084600272588e-06, - "worst_max_relative": 0.01527470489153405, - "worst_tolerance_ratio": 0.4897388680845277 - }, - "virial": { - "comparisons": 27, - "failures": 2, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.8218679983306174e-05, - 8.902023510870549e-05 - ], - "worst_mean_abs": 3.9107133109395065e-05, - "worst_max_relative": 0.00019313039028895026, - "worst_tolerance_ratio": 1.3209042372833233 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.846861273568413e-09, - 3.064780917938492e-08 - ], - "worst_mean_abs": 1.3624246735633962e-08, - "worst_max_relative": 0.00018943096336173764, - "worst_tolerance_ratio": 0.0029313792112797502 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.384185791015625e-07, - 3.5762786865234375e-05 - ], - "worst_mean_abs": 3.5762786865234375e-05, - "worst_max_relative": 7.701035532087647e-09, - "worst_tolerance_ratio": 7.700869704207835e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.393918644180928e-06, - 8.533491972162466e-06 - ], - "worst_mean_abs": 1.557366035165822e-06, - "worst_max_relative": 0.017106518549718987, - "worst_tolerance_ratio": 0.6167101843814231 - }, - "virial": { - "comparisons": 81, - "failures": 6, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7799352178826666e-05, - 9.779887717087377e-05 - ], - "worst_mean_abs": 4.818979831123905e-05, - "worst_max_relative": 0.00024798785198630455, - "worst_tolerance_ratio": 1.5409381236871473 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.127945498257681e-09, - 3.3670112441208655e-08 - ], - "worst_mean_abs": 1.7532207829965393e-08, - "worst_max_relative": 0.00024433120825848395, - "worst_tolerance_ratio": 0.0027762899185930284 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.384185791015625e-07, - 2.7835369110107422e-05 - ], - "worst_mean_abs": 2.7835369110107422e-05, - "worst_max_relative": 5.994272019885146e-09, - "worst_tolerance_ratio": 5.99414293762598e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.506870500937566e-06, - 8.241168691469625e-06 - ], - "worst_mean_abs": 1.5532761270029396e-06, - "worst_max_relative": 0.025041921857038487, - "worst_tolerance_ratio": 0.70548537886412 - }, - "virial": { - "comparisons": 27, - "failures": 4, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.3876290850655124e-05, - 0.00011017325687845414 - ], - "worst_mean_abs": 4.179817674949188e-05, - "worst_max_relative": 0.0003778793094029295, - "worst_tolerance_ratio": 2.3481402054115694 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.637356115586247e-09, - 3.793035312921189e-08 - ], - "worst_mean_abs": 1.7095092173069228e-08, - "worst_max_relative": 0.00037597114801343295, - "worst_tolerance_ratio": 0.0031285542444244303 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.980232238769531e-07, - 2.7060508728027344e-05 - ], - "worst_mean_abs": 2.7060508728027344e-05, - "worst_max_relative": 5.827407916547872e-09, - "worst_tolerance_ratio": 5.827282427585e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.5380993724263305e-06, - 8.990824328591884e-06 - ], - "worst_mean_abs": 1.5569749687369438e-06, - "worst_max_relative": 0.021686035834322718, - "worst_tolerance_ratio": 0.6758367393868097 - }, - "virial": { - "comparisons": 81, - "failures": 15, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.569513067158141e-06, - 0.00011845013214184519 - ], - "worst_mean_abs": 4.965149203699997e-05, - "worst_max_relative": 0.0004456971202636045, - "worst_tolerance_ratio": 2.769559185063532 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.6002155639141128e-09, - 4.0779908550697685e-08 - ], - "worst_mean_abs": 1.924762625364578e-08, - "worst_max_relative": 0.00044005154582593144, - "worst_tolerance_ratio": 0.00336359111823531 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 3.8564205169677734e-05 - ], - "worst_mean_abs": 3.8564205169677734e-05, - "worst_max_relative": 8.304283310424971e-09, - "worst_tolerance_ratio": 8.30410449269479e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.663303791982656e-06, - 1.1937818188201277e-05 - ], - "worst_mean_abs": 2.152193331162966e-06, - "worst_max_relative": 0.027011933000708296, - "worst_tolerance_ratio": 0.8735868500593729 - }, - "virial": { - "comparisons": 243, - "failures": 32, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.733559977969207e-05, - 0.00023924866006552747 - ], - "worst_mean_abs": 8.830730162766464e-05, - "worst_max_relative": 0.00033093060677551645, - "worst_tolerance_ratio": 2.056393230686562 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.00678243900232e-08, - 8.236832076471967e-08 - ], - "worst_mean_abs": 3.3025334414918103e-08, - "worst_max_relative": 0.00032558612971655363, - "worst_tolerance_ratio": 0.006780276978945852 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 3.629922866821289e-05 - ], - "worst_mean_abs": 3.629922866821289e-05, - "worst_max_relative": 7.816941517443018e-09, - "worst_tolerance_ratio": 7.816773185329399e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.537658524015001e-06, - 1.3618943592419441e-05 - ], - "worst_mean_abs": 2.1200117095310723e-06, - "worst_max_relative": 0.03454607400986916, - "worst_tolerance_ratio": 0.817607665512196 - }, - "virial": { - "comparisons": 243, - "failures": 43, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.12305283659498e-05, - 0.00020637063148143397 - ], - "worst_mean_abs": 7.148432305993503e-05, - "worst_max_relative": 0.000424182295357236, - "worst_tolerance_ratio": 2.6358565297087027 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.796597570881021e-08, - 7.104910165756095e-08 - ], - "worst_mean_abs": 2.87626209603984e-08, - "worst_max_relative": 0.00042234026847539377, - "worst_tolerance_ratio": 0.005860238429637883 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 3.224611282348633e-05 - ], - "worst_mean_abs": 3.224611282348633e-05, - "worst_max_relative": 6.943767091573225e-09, - "worst_tolerance_ratio": 6.943617570099292e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.3174597951510805e-06, - 8.22734991834384e-06 - ], - "worst_mean_abs": 1.5536268872231973e-06, - "worst_max_relative": 0.024867903762799057, - "worst_tolerance_ratio": 0.651250070953936 - }, - "virial": { - "comparisons": 243, - "failures": 38, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.0912217609020445e-06, - 0.00011696194470545151 - ], - "worst_mean_abs": 4.99161199233939e-05, - "worst_max_relative": 0.0003482517415345143, - "worst_tolerance_ratio": 2.163954326281322 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.441359663041265e-09, - 4.026755667796422e-08 - ], - "worst_mean_abs": 2.1456696329332512e-08, - "worst_max_relative": 0.00034341701619046487, - "worst_tolerance_ratio": 0.0033146845764085 - } - } - }, - { - "model": "Mini", - "n": 1000, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.748603820800781e-07, - 3.9517879486083984e-05 - ], - "worst_mean_abs": 3.9517879486083984e-05, - "worst_max_relative": 4.356669741437475e-09, - "worst_tolerance_ratio": 4.356621711628606e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.942365068123401e-06, - 8.478775190390309e-06 - ], - "worst_mean_abs": 1.5863148284608308e-06, - "worst_max_relative": 0.028526428101089317, - "worst_tolerance_ratio": 0.64037145633476 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.820122779529811e-05, - 0.00014857636131182517 - ], - "worst_mean_abs": 7.005933384760275e-05, - "worst_max_relative": 7.778825565317479e-05, - "worst_tolerance_ratio": 0.6828019056856349 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.733765378630352e-09, - 2.6189691162276096e-08 - ], - "worst_mean_abs": 1.457033769568098e-08, - "worst_max_relative": 7.733627472768208e-05, - "worst_tolerance_ratio": 0.002168605657331468 - } - } - }, - { - "model": "Mini", - "n": 1000, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.172325134277344e-07, - 5.251169204711914e-05 - ], - "worst_mean_abs": 5.251169204711914e-05, - "worst_max_relative": 5.789179542546182e-09, - "worst_tolerance_ratio": 5.789115720130659e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.128346421663267e-06, - 8.85906298431216e-06 - ], - "worst_mean_abs": 1.5858116145045023e-06, - "worst_max_relative": 0.035866367370026735, - "worst_tolerance_ratio": 0.6952924318191501 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.881299246926261e-05, - 0.00018624514531495606 - ], - "worst_mean_abs": 7.087044207242254e-05, - "worst_max_relative": 8.846122945552217e-05, - "worst_tolerance_ratio": 0.7997259680431392 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.860993178725653e-09, - 3.282960218606301e-08 - ], - "worst_mean_abs": 1.508338001173599e-08, - "worst_max_relative": 8.597899611759951e-05, - "worst_tolerance_ratio": 0.0027151275182070653 - } - } - }, - { - "model": "Mini", - "n": 1000, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.364418029785156e-07, - 3.4749507904052734e-05 - ], - "worst_mean_abs": 3.4749507904052734e-05, - "worst_max_relative": 3.830978073473516e-09, - "worst_tolerance_ratio": 3.8309358391165834e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.791463756565918e-06, - 8.083614283727059e-06 - ], - "worst_mean_abs": 1.5654142928888798e-06, - "worst_max_relative": 0.022267338382567378, - "worst_tolerance_ratio": 0.5262451100879552 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.8142286400800742e-05, - 9.626649527660902e-05 - ], - "worst_mean_abs": 4.906634041638528e-05, - "worst_max_relative": 7.868577486122334e-05, - "worst_tolerance_ratio": 0.7113450717653167 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.86420350488204e-09, - 1.6968983211629318e-08 - ], - "worst_mean_abs": 1.0269484017041576e-08, - "worst_max_relative": 7.670224268113352e-05, - "worst_tolerance_ratio": 0.0016003199025075713 - } - } - }, - { - "model": "Mini", - "n": 1000, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7881393432617188e-07, - 5.239248275756836e-05 - ], - "worst_mean_abs": 5.239248275756836e-05, - "worst_max_relative": 5.77603728899446e-09, - "worst_tolerance_ratio": 5.775973611464394e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.876774522572958e-06, - 9.180504784378485e-06 - ], - "worst_mean_abs": 1.5166922351791586e-06, - "worst_max_relative": 0.024991496343053986, - "worst_tolerance_ratio": 0.6145430677102461 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.5804571143362978e-05, - 0.00015448823683072987 - ], - "worst_mean_abs": 6.872088453079172e-05, - "worst_max_relative": 8.254997716815356e-05, - "worst_tolerance_ratio": 0.7255680521387728 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.7208376095233e-09, - 2.723178287034056e-08 - ], - "worst_mean_abs": 1.2526201209286545e-08, - "worst_max_relative": 8.145594315865483e-05, - "worst_tolerance_ratio": 0.002248987714180648 - } - } - }, - { - "model": "Mini", - "n": 1000, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.384185791015625e-07, - 3.1948089599609375e-05 - ], - "worst_mean_abs": 3.1948089599609375e-05, - "worst_max_relative": 3.52254103850891e-09, - "worst_tolerance_ratio": 3.522502200009603e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.834985036701212e-06, - 8.293950088500424e-06 - ], - "worst_mean_abs": 1.5108064601431307e-06, - "worst_max_relative": 0.022459755247186467, - "worst_tolerance_ratio": 0.56193002673636 - }, - "virial": { - "comparisons": 27, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.425416394353675e-05, - 0.00011839176586647682 - ], - "worst_mean_abs": 6.122121819412346e-05, - "worst_max_relative": 0.0001267831416301408, - "worst_tolerance_ratio": 1.1128590436428347 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.018658010506755e-09, - 2.086902490400222e-08 - ], - "worst_mean_abs": 1.1913043066248526e-08, - "worst_max_relative": 0.00012627819848035887, - "worst_tolerance_ratio": 0.001730394962176401 - } - } - }, - { - "model": "Mini", - "n": 1000, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.384185791015625e-07, - 4.5180320739746094e-05 - ], - "worst_mean_abs": 4.5180320739746094e-05, - "worst_max_relative": 4.981503938591997e-09, - "worst_tolerance_ratio": 4.9814490139976675e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.954550295506067e-06, - 8.708296609150068e-06 - ], - "worst_mean_abs": 1.5252042484687849e-06, - "worst_max_relative": 0.024314376078653954, - "worst_tolerance_ratio": 0.5975201411033858 - }, - "virial": { - "comparisons": 81, - "failures": 2, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.6786013901537444e-05, - 0.00012927349403923927 - ], - "worst_mean_abs": 8.633279841221666e-05, - "worst_max_relative": 0.0001512958390354819, - "worst_tolerance_ratio": 1.3280231154655262 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9588860285534313e-09, - 2.2787157084869225e-08 - ], - "worst_mean_abs": 1.6278732358084545e-08, - "worst_max_relative": 0.00014966355988451065, - "worst_tolerance_ratio": 0.0018920518398214939 - } - } - }, - { - "model": "Mini", - "n": 1000, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 6.008148193359375e-05 - ], - "worst_mean_abs": 6.008148193359375e-05, - "worst_max_relative": 6.623715072515949e-09, - "worst_tolerance_ratio": 6.623642049820323e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.291399922200071e-06, - 1.2718351468876676e-05 - ], - "worst_mean_abs": 2.1091967869192595e-06, - "worst_max_relative": 0.028304485787336776, - "worst_tolerance_ratio": 0.8790025137802328 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0001898050359869785, - 0.0004217280413456592 - ], - "worst_mean_abs": 0.00012275276463464331, - "worst_max_relative": 0.00011132661163576985, - "worst_tolerance_ratio": 0.9771910074031923 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.345710737276408e-08, - 7.433838774759116e-08 - ], - "worst_mean_abs": 2.7130958842371993e-08, - "worst_max_relative": 0.00010724889769686823, - "worst_tolerance_ratio": 0.006129491384645123 - } - } - }, - { - "model": "Mini", - "n": 1000, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 4.5418739318847656e-05 - ], - "worst_mean_abs": 4.5418739318847656e-05, - "worst_max_relative": 5.007213208806261e-09, - "worst_tolerance_ratio": 5.0071580071249995e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.863358360671313e-06, - 1.1660318759654231e-05 - ], - "worst_mean_abs": 2.122320797962656e-06, - "worst_max_relative": 0.03168218354665909, - "worst_tolerance_ratio": 0.8441338653785047 - }, - "virial": { - "comparisons": 243, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0002126726797939682, - 0.00038946517976512496 - ], - "worst_mean_abs": 0.00013147606721784931, - "worst_max_relative": 0.00011711922097857225, - "worst_tolerance_ratio": 1.0280470606493994 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.74880078715667e-08, - 6.86513836126168e-08 - ], - "worst_mean_abs": 2.8893696401648187e-08, - "worst_max_relative": 0.00011674111640792188, - "worst_tolerance_ratio": 0.005660575607669639 - } - } - }, - { - "model": "Mini", - "n": 1000, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.384185791015625e-07, - 5.2988529205322266e-05 - ], - "worst_mean_abs": 5.2988529205322266e-05, - "worst_max_relative": 5.8417487484824516e-09, - "worst_tolerance_ratio": 5.841684346520871e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.501919348560591e-06, - 9.309888041819647e-06 - ], - "worst_mean_abs": 1.5298866226064236e-06, - "worst_max_relative": 0.03154387792380262, - "worst_tolerance_ratio": 0.6930236755093616 - }, - "virial": { - "comparisons": 243, - "failures": 8, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.849106578788451e-05, - 0.00015355807795458531 - ], - "worst_mean_abs": 8.145100116310446e-05, - "worst_max_relative": 0.00014648826238079898, - "worst_tolerance_ratio": 1.2858467375364764 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.2594370848182397e-09, - 2.706782291014842e-08 - ], - "worst_mean_abs": 1.5349518719225493e-08, - "worst_max_relative": 0.00014558851045815208, - "worst_tolerance_ratio": 0.0023133727922297533 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 6.22868537902832e-05 - ], - "worst_mean_abs": 6.22868537902832e-05, - "worst_max_relative": 1.676505295726619e-09, - "worst_tolerance_ratio": 1.6765007832777307e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.276442724135634e-06, - 9.493022817164132e-06 - ], - "worst_mean_abs": 1.5604888942388797e-06, - "worst_max_relative": 0.7221657199292606, - "worst_tolerance_ratio": 0.6766329649396017 - }, - "virial": { - "comparisons": 27, - "failures": 8, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.061616724866269e-05, - 0.0004385140394447262 - ], - "worst_mean_abs": 0.00014062627027793754, - "worst_max_relative": 0.003646330978402356, - "worst_tolerance_ratio": 12.078487533882 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.0662720149255617e-09, - 1.887140405054666e-08 - ], - "worst_mean_abs": 8.27017624404072e-09, - "worst_max_relative": 0.003516495170973442, - "worst_tolerance_ratio": 0.0015584606357800237 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 8.33272933959961e-05 - ], - "worst_mean_abs": 8.33272933959961e-05, - "worst_max_relative": 2.242938611229538e-09, - "worst_tolerance_ratio": 2.2429325738798685e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.791250073412414e-06, - 9.901864735928356e-06 - ], - "worst_mean_abs": 1.5610593938481738e-06, - "worst_max_relative": 0.4002606254997042, - "worst_tolerance_ratio": 0.8863501561494904 - }, - "virial": { - "comparisons": 81, - "failures": 23, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.726828905849857e-05, - 0.00038339606288673167 - ], - "worst_mean_abs": 0.00012411605811251606, - "worst_max_relative": 0.005435660459240495, - "worst_tolerance_ratio": 18.005649373090712 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.0838191543397916e-09, - 1.6499407919784437e-08 - ], - "worst_mean_abs": 6.620879229180118e-09, - "worst_max_relative": 0.005318989456488086, - "worst_tolerance_ratio": 0.0013625734568615139 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.0994415283203125e-06, - 0.0001398921012878418 - ], - "worst_mean_abs": 0.0001398921012878418, - "worst_max_relative": 3.765317327969958e-09, - "worst_tolerance_ratio": 3.76530719331883e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.087830623753177e-06, - 8.594069466738574e-06 - ], - "worst_mean_abs": 1.5664331380786528e-06, - "worst_max_relative": 0.20380743711916677, - "worst_tolerance_ratio": 0.7154379637523316 - }, - "virial": { - "comparisons": 27, - "failures": 8, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.909067436908998e-05, - 0.0002918480684002134 - ], - "worst_mean_abs": 0.00014369099240547141, - "worst_max_relative": 0.002270021526724481, - "worst_tolerance_ratio": 7.532844258693963 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.043441544284392e-09, - 1.2559649920779181e-08 - ], - "worst_mean_abs": 6.742370555133717e-09, - "worst_max_relative": 0.002241454623967595, - "worst_tolerance_ratio": 0.0010381545420209263 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5762786865234375e-07, - 0.00010132789611816406 - ], - "worst_mean_abs": 0.00010132789611816406, - "worst_max_relative": 2.727328283617756e-09, - "worst_tolerance_ratio": 2.727320942796688e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.8528062333594875e-06, - 9.191420122678373e-06 - ], - "worst_mean_abs": 1.5732223744548312e-06, - "worst_max_relative": 0.18329228341065706, - "worst_tolerance_ratio": 0.7799507458293996 - }, - "virial": { - "comparisons": 81, - "failures": 22, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.476562237698545e-05, - 0.0003680483274592916 - ], - "worst_mean_abs": 0.00015585519983603766, - "worst_max_relative": 0.002624879950042877, - "worst_tolerance_ratio": 8.723608658126022 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.8939265835423054e-09, - 1.5838919790317485e-08 - ], - "worst_mean_abs": 7.895335861396732e-09, - "worst_max_relative": 0.002555107312160029, - "worst_tolerance_ratio": 0.00130921213401913 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.940696716308594e-07, - 6.74128532409668e-05 - ], - "worst_mean_abs": 6.74128532409668e-05, - "worst_max_relative": 1.8145662145648e-09, - "worst_tolerance_ratio": 1.8145613302711886e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.750748702488707e-06, - 9.570433796790567e-06 - ], - "worst_mean_abs": 1.5654228514700462e-06, - "worst_max_relative": 0.1940384920707749, - "worst_tolerance_ratio": 0.6900402518680474 - }, - "virial": { - "comparisons": 27, - "failures": 8, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.40954579843789e-05, - 0.00031341504619852856 - ], - "worst_mean_abs": 0.00011494670785019669, - "worst_max_relative": 0.0023209112428726544, - "worst_tolerance_ratio": 7.697119905423461 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5043528513449364e-09, - 1.3418043221934562e-08 - ], - "worst_mean_abs": 5.061515259439919e-09, - "worst_max_relative": 0.002300637106666749, - "worst_tolerance_ratio": 0.001339775244846595 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.980232238769531e-07, - 8.285045623779297e-05 - ], - "worst_mean_abs": 8.285045623779297e-05, - "worst_max_relative": 2.229991942162116e-09, - "worst_tolerance_ratio": 2.2299859399614004e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.7165563111259985e-06, - 1.0402043724155874e-05 - ], - "worst_mean_abs": 1.5775589820036128e-06, - "worst_max_relative": 0.31907697952552433, - "worst_tolerance_ratio": 0.775910261198558 - }, - "virial": { - "comparisons": 81, - "failures": 23, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.1655765042160056e-05, - 0.00032096389321623064 - ], - "worst_mean_abs": 0.00015008436423366887, - "worst_max_relative": 0.0025925645377863913, - "worst_tolerance_ratio": 8.598036728535737 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.3623024097686454e-09, - 1.3812646276756269e-08 - ], - "worst_mean_abs": 6.986395788021346e-09, - "worst_max_relative": 0.0025183162807413994, - "worst_tolerance_ratio": 0.0011402141223968124 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0728836059570312e-06, - 0.00016301870346069336 - ], - "worst_mean_abs": 0.00016301870346069336, - "worst_max_relative": 4.387789895861748e-09, - "worst_tolerance_ratio": 4.387778085776192e-05 - }, - "forces": { - "comparisons": 243, - "failures": 2, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.423113859208243e-06, - 1.3698024262875919e-05 - ], - "worst_mean_abs": 2.096169248551909e-06, - "worst_max_relative": 1.0291521497278877, - "worst_tolerance_ratio": 1.1239877746851845 - }, - "virial": { - "comparisons": 243, - "failures": 70, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0008077665756331953, - 0.001487490278407222 - ], - "worst_mean_abs": 0.0003777903051544524, - "worst_max_relative": 0.004940751438751109, - "worst_tolerance_ratio": 16.366261048280453 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.4762146834677043e-08, - 6.401398254182733e-08 - ], - "worst_mean_abs": 2.2350332404915513e-08, - "worst_max_relative": 0.004732033259315227, - "worst_tolerance_ratio": 0.005286478508103251 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.6093254089355469e-06, - 0.00014352798461914062 - ], - "worst_mean_abs": 0.00014352798461914062, - "worst_max_relative": 3.863373507672836e-09, - "worst_tolerance_ratio": 3.8633631085755974e-05 - }, - "forces": { - "comparisons": 243, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.17761948571183e-06, - 1.4198029854473049e-05 - ], - "worst_mean_abs": 2.0938754517473338e-06, - "worst_max_relative": 1.0733294214283975, - "worst_tolerance_ratio": 1.029790420180238 - }, - "virial": { - "comparisons": 243, - "failures": 78, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0007983658128409843, - 0.0014929920704389588 - ], - "worst_mean_abs": 0.00041110880985206766, - "worst_max_relative": 0.0043664187794303444, - "worst_tolerance_ratio": 14.463781567674816 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.4357586029681864e-08, - 6.425075156288318e-08 - ], - "worst_mean_abs": 2.3453786021136437e-08, - "worst_max_relative": 0.004132374567092805, - "worst_tolerance_ratio": 0.005303810124016367 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 0.00012302398681640625 - ], - "worst_mean_abs": 0.00012302398681640625, - "worst_max_relative": 3.3112973984629697e-09, - "worst_tolerance_ratio": 3.311288485842567e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.8387619158727375e-06, - 9.65639859451528e-06 - ], - "worst_mean_abs": 1.5684248104771456e-06, - "worst_max_relative": 0.23001588493410238, - "worst_tolerance_ratio": 0.7937229548451024 - }, - "virial": { - "comparisons": 243, - "failures": 77, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.1898494316683355e-05, - 0.00035797328678199847 - ], - "worst_mean_abs": 0.0001650340310146683, - "worst_max_relative": 0.0031558916605099246, - "worst_tolerance_ratio": 10.488389693129538 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.8030971507543292e-09, - 1.5405341509400206e-08 - ], - "worst_mean_abs": 7.644362534762456e-09, - "worst_max_relative": 0.0031073255040813606, - "worst_tolerance_ratio": 0.0013527499848575806 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7881393432617188e-07, - 5.1856040954589844e-05 - ], - "worst_mean_abs": 5.1856040954589844e-05, - "worst_max_relative": 1.1146273195787414e-08, - "worst_tolerance_ratio": 0.00011146033615724139 - }, - "forces": { - "comparisons": 27, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.766965064133103e-06, - 1.7291203498359664e-05 - ], - "worst_mean_abs": 2.4852107935273687e-06, - "worst_max_relative": 0.010189450127120941, - "worst_tolerance_ratio": 1.1316950726095287 - }, - "virial": { - "comparisons": 27, - "failures": 19, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.055394600510631e-05, - 0.00017451233514942377 - ], - "worst_mean_abs": 7.271361934029713e-05, - "worst_max_relative": 0.000973825857175036, - "worst_tolerance_ratio": 5.19613769295286 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.364606633805698e-08, - 6.008095508228768e-08 - ], - "worst_mean_abs": 3.016862249368783e-08, - "worst_max_relative": 0.0009738258571749244, - "worst_tolerance_ratio": 0.005997799269904227 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.940696716308594e-07, - 5.030632019042969e-05 - ], - "worst_mean_abs": 5.030632019042969e-05, - "worst_max_relative": 1.0813166297665457e-08, - "worst_tolerance_ratio": 0.00010812933877461117 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.257411050038854e-06, - 1.4883388791631091e-05 - ], - "worst_mean_abs": 2.4939856850593307e-06, - "worst_max_relative": 0.010467927873105857, - "worst_tolerance_ratio": 0.92627465387243 - }, - "virial": { - "comparisons": 81, - "failures": 55, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.3969889001617126e-05, - 0.000177425786994867 - ], - "worst_mean_abs": 8.643101677442545e-05, - "worst_max_relative": 0.0015335712596714877, - "worst_tolerance_ratio": 8.176976981513697 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.06715270511374e-08, - 6.10839957516365e-08 - ], - "worst_mean_abs": 3.4568533389661146e-08, - "worst_max_relative": 0.0015335712596714383, - "worst_tolerance_ratio": 0.006079983328441283 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.556510925292969e-07, - 5.233287811279297e-05 - ], - "worst_mean_abs": 5.233287811279297e-05, - "worst_max_relative": 1.1248767940533848e-08, - "worst_tolerance_ratio": 0.00011248526157423533 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.955419840361856e-06, - 1.2407035157480095e-05 - ], - "worst_mean_abs": 2.3820959727540053e-06, - "worst_max_relative": 0.014175671068021032, - "worst_tolerance_ratio": 0.9985887251538444 - }, - "virial": { - "comparisons": 27, - "failures": 16, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.078018649089632e-05, - 0.00014113911835411663 - ], - "worst_mean_abs": 5.867724483298186e-05, - "worst_max_relative": 0.0008068531987614919, - "worst_tolerance_ratio": 4.305249171469632 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.4039767164337243e-08, - 4.859125300759638e-08 - ], - "worst_mean_abs": 2.300090254293145e-08, - "worst_max_relative": 0.0008068531987614425, - "worst_tolerance_ratio": 0.004836521115564516 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5762786865234375e-07, - 4.851818084716797e-05 - ], - "worst_mean_abs": 4.851818084716797e-05, - "worst_max_relative": 1.0428812073570891e-08, - "worst_tolerance_ratio": 0.00010428587914747008 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.637859011173532e-06, - 1.3563694178486685e-05 - ], - "worst_mean_abs": 2.4346400257469346e-06, - "worst_max_relative": 0.015886447905594896, - "worst_tolerance_ratio": 0.9570533597256069 - }, - "virial": { - "comparisons": 81, - "failures": 46, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.392236031578676e-05, - 0.00019932577964731912 - ], - "worst_mean_abs": 7.058121769615905e-05, - "worst_max_relative": 0.0010319400928531612, - "worst_tolerance_ratio": 5.504206441162648 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.192721904639523e-09, - 6.862370618949216e-08 - ], - "worst_mean_abs": 2.8727820049359945e-08, - "worst_max_relative": 0.0010319400928531695, - "worst_tolerance_ratio": 0.00683044422496838 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.384185791015625e-07, - 4.869699478149414e-05 - ], - "worst_mean_abs": 4.869699478149414e-05, - "worst_max_relative": 1.046940065239034e-08, - "worst_tolerance_ratio": 0.00010469175574859201 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.85038370768143e-06, - 1.1738225811797065e-05 - ], - "worst_mean_abs": 2.3721802568320454e-06, - "worst_max_relative": 0.01568527460065144, - "worst_tolerance_ratio": 0.8663496194533588 - }, - "virial": { - "comparisons": 27, - "failures": 17, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.7086178096880076e-05, - 0.0001370057513943035 - ], - "worst_mean_abs": 5.41683037192437e-05, - "worst_max_relative": 0.0007383546059137198, - "worst_tolerance_ratio": 3.9392610735795146 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.07666457614217e-09, - 4.716822102281311e-08 - ], - "worst_mean_abs": 2.0727788063474185e-08, - "worst_max_relative": 0.0007383546059137015, - "worst_tolerance_ratio": 0.004708738885116302 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.980232238769531e-07, - 6.03795051574707e-05 - ], - "worst_mean_abs": 6.03795051574707e-05, - "worst_max_relative": 1.2981031633325677e-08, - "worst_tolerance_ratio": 0.00012980752559227344 - }, - "forces": { - "comparisons": 81, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.53285565494133e-06, - 1.2596385623453443e-05 - ], - "worst_mean_abs": 2.4180107231326488e-06, - "worst_max_relative": 0.014537569015271005, - "worst_tolerance_ratio": 1.0298114212605975 - }, - "virial": { - "comparisons": 81, - "failures": 58, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.3916469979567978e-05, - 0.00021912684620095657 - ], - "worst_mean_abs": 9.241606229517776e-05, - "worst_max_relative": 0.001069438922939849, - "worst_tolerance_ratio": 5.703692380445624 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.233941499544845e-09, - 7.544080017407367e-08 - ], - "worst_mean_abs": 3.3064764676507106e-08, - "worst_max_relative": 0.0010694389229398242, - "worst_tolerance_ratio": 0.007531148182654655 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9802322387695312e-06, - 0.00011521577835083008 - ], - "worst_mean_abs": 0.00011521577835083008, - "worst_max_relative": 2.476522538788169e-08, - "worst_tolerance_ratio": 0.0002476469307953421 - }, - "forces": { - "comparisons": 243, - "failures": 2, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.866833237419769e-06, - 1.3863820811366168e-05 - ], - "worst_mean_abs": 2.5348655705687787e-06, - "worst_max_relative": 0.013337817701576112, - "worst_tolerance_ratio": 1.0895565306476451 - }, - "virial": { - "comparisons": 243, - "failures": 166, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1533558528009635e-05, - 0.00026236270172219633 - ], - "worst_mean_abs": 8.760870563310578e-05, - "worst_max_relative": 0.0017800165310995787, - "worst_tolerance_ratio": 9.491019155270966 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.970763506574212e-09, - 9.032600293808549e-08 - ], - "worst_mean_abs": 3.721045395060893e-08, - "worst_max_relative": 0.001780016531099546, - "worst_tolerance_ratio": 0.008990575212540899 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.172325134277344e-07, - 0.00011283159255981445 - ], - "worst_mean_abs": 0.00011283159255981445, - "worst_max_relative": 2.425275305704089e-08, - "worst_tolerance_ratio": 0.0002425223176386873 - }, - "forces": { - "comparisons": 243, - "failures": 4, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.494724019314503e-06, - 1.3567397007641091e-05 - ], - "worst_mean_abs": 2.5153659548103903e-06, - "worst_max_relative": 0.0181708317516515, - "worst_tolerance_ratio": 1.1458655299522276 - }, - "virial": { - "comparisons": 243, - "failures": 165, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.6507507705053612e-05, - 0.0002646941713170259 - ], - "worst_mean_abs": 8.891479116783045e-05, - "worst_max_relative": 0.0016192342608923164, - "worst_tolerance_ratio": 8.633730708953884 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.12598171586964e-09, - 9.112867926396365e-08 - ], - "worst_mean_abs": 4.0642593242164365e-08, - "worst_max_relative": 0.0016192342608922212, - "worst_tolerance_ratio": 0.009097245497940457 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.172325134277344e-07, - 5.412101745605469e-05 - ], - "worst_mean_abs": 5.412101745605469e-05, - "worst_max_relative": 1.163551516308483e-08, - "worst_tolerance_ratio": 0.00011635265015713475 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.594751452761784e-06, - 1.2694701985616064e-05 - ], - "worst_mean_abs": 2.406626944534996e-06, - "worst_max_relative": 0.013580493456645044, - "worst_tolerance_ratio": 0.9010885235448788 - }, - "virial": { - "comparisons": 243, - "failures": 149, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.3583172267138686e-05, - 0.00020684066423237724 - ], - "worst_mean_abs": 9.152253924828003e-05, - "worst_max_relative": 0.00122862157084563, - "worst_tolerance_ratio": 6.556428359117095 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.11919405277093e-09, - 7.121092412346996e-08 - ], - "worst_mean_abs": 3.897775028357132e-08, - "worst_max_relative": 0.0012286215708456672, - "worst_tolerance_ratio": 0.0070631307291112826 - } - } - }, - { - "model": "Nano", - "n": 1000, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7881393432617188e-07, - 6.705522537231445e-05 - ], - "worst_mean_abs": 6.705522537231445e-05, - "worst_max_relative": 7.380278326890236e-09, - "worst_tolerance_ratio": 7.380197098457416e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.814197049706763e-06, - 1.3283340038583447e-05 - ], - "worst_mean_abs": 2.4807729523439273e-06, - "worst_max_relative": 0.07064961006734138, - "worst_tolerance_ratio": 0.9788772275704567 - }, - "virial": { - "comparisons": 27, - "failures": 16, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.536978601194953e-05, - 0.0002621348498155207 - ], - "worst_mean_abs": 0.00012002781364079457, - "worst_max_relative": 0.0009239748258999796, - "worst_tolerance_ratio": 5.8244675613468155 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.760082845759998e-09, - 4.620674984019517e-08 - ], - "worst_mean_abs": 2.6329522555160016e-08, - "worst_max_relative": 0.0009239748259000392, - "worst_tolerance_ratio": 0.004602318845526104 - } - } - }, - { - "model": "Nano", - "n": 1000, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.940696716308594e-07, - 7.909536361694336e-05 - ], - "worst_mean_abs": 7.909536361694336e-05, - "worst_max_relative": 8.705448302029638e-09, - "worst_tolerance_ratio": 8.705352488580437e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.71709807728871e-06, - 1.3557718373746752e-05 - ], - "worst_mean_abs": 2.4842726585575423e-06, - "worst_max_relative": 0.0759977817387832, - "worst_tolerance_ratio": 0.9464874742734661 - }, - "virial": { - "comparisons": 81, - "failures": 37, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.9306211052858586e-05, - 0.0002863409727107413 - ], - "worst_mean_abs": 0.0001303773573005065, - "worst_max_relative": 0.0012003422249451164, - "worst_tolerance_ratio": 7.569965617367002 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.794077330569102e-09, - 5.047358527248032e-08 - ], - "worst_mean_abs": 2.8648492434288087e-08, - "worst_max_relative": 0.0012003422249451568, - "worst_tolerance_ratio": 0.005033468296844829 - } - } - }, - { - "model": "Nano", - "n": 1000, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0728836059570312e-06, - 5.555152893066406e-05 - ], - "worst_mean_abs": 5.555152893066406e-05, - "worst_max_relative": 6.114054849798781e-09, - "worst_tolerance_ratio": 6.113987558662058e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.786312321262812e-06, - 1.2459468539560703e-05 - ], - "worst_mean_abs": 2.398441079157478e-06, - "worst_max_relative": 0.054261871315451383, - "worst_tolerance_ratio": 0.981170727447744 - }, - "virial": { - "comparisons": 27, - "failures": 16, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.3762921964507484e-05, - 0.00024579854120920785 - ], - "worst_mean_abs": 8.738184682748834e-05, - "worst_max_relative": 0.0010202174990259238, - "worst_tolerance_ratio": 6.432208406329726 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.638471180983035e-09, - 4.33271337738181e-08 - ], - "worst_mean_abs": 1.942982704128361e-08, - "worst_max_relative": 0.0010202174990259479, - "worst_tolerance_ratio": 0.00432644372151242 - } - } - }, - { - "model": "Nano", - "n": 1000, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 7.152557373046875e-05 - ], - "worst_mean_abs": 7.152557373046875e-05, - "worst_max_relative": 7.873296361694648e-09, - "worst_tolerance_ratio": 7.873209696030856e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.121134496581362e-06, - 1.3018717602619745e-05 - ], - "worst_mean_abs": 2.4319626653784706e-06, - "worst_max_relative": 0.07096529492391204, - "worst_tolerance_ratio": 0.9636731237738646 - }, - "virial": { - "comparisons": 81, - "failures": 40, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.2807989383119036e-05, - 0.00024990545577008305 - ], - "worst_mean_abs": 0.00010055815697852645, - "worst_max_relative": 0.0014632222010244572, - "worst_tolerance_ratio": 9.228714532236777 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.308512609806571e-09, - 4.405106336146725e-08 - ], - "worst_mean_abs": 2.1024017026820106e-08, - "worst_max_relative": 0.001463222201024455, - "worst_tolerance_ratio": 0.004403780555167392 - } - } - }, - { - "model": "Nano", - "n": 1000, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-06, - 5.5849552154541016e-05 - ], - "worst_mean_abs": 5.5849552154541016e-05, - "worst_max_relative": 6.146855565015758e-09, - "worst_tolerance_ratio": 6.146787912875264e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.347885804089628e-06, - 1.2423431734021051e-05 - ], - "worst_mean_abs": 2.370844754204071e-06, - "worst_max_relative": 0.07831361613437446, - "worst_tolerance_ratio": 0.8888699896371453 - }, - "virial": { - "comparisons": 27, - "failures": 18, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.847402131780143e-05, - 0.00021978145290779683 - ], - "worst_mean_abs": 9.373285963277923e-05, - "worst_max_relative": 0.0007817389212867293, - "worst_tolerance_ratio": 4.930178883993715 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.544560093270894e-09, - 3.874107781233168e-08 - ], - "worst_mean_abs": 1.9247010281329946e-08, - "worst_max_relative": 0.0007817389212866785, - "worst_tolerance_ratio": 0.003869580060182906 - } - } - }, - { - "model": "Nano", - "n": 1000, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 6.943941116333008e-05 - ], - "worst_mean_abs": 6.943941116333008e-05, - "worst_max_relative": 7.642568505042894e-09, - "worst_tolerance_ratio": 7.64248439112325e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.23915536077402e-06, - 1.4299878046131198e-05 - ], - "worst_mean_abs": 2.407887343467058e-06, - "worst_max_relative": 0.05869106076708458, - "worst_tolerance_ratio": 0.9989764370069022 - }, - "virial": { - "comparisons": 81, - "failures": 48, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.857040161718949e-05, - 0.00023186765260030384 - ], - "worst_mean_abs": 8.918196586041007e-05, - "worst_max_relative": 0.0011053859730406233, - "worst_tolerance_ratio": 6.968473052985282 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.036130836032042e-09, - 4.0871523291447984e-08 - ], - "worst_mean_abs": 2.0005938244898643e-08, - "worst_max_relative": 0.001105385973040554, - "worst_tolerance_ratio": 0.004080365509216011 - } - } - }, - { - "model": "Nano", - "n": 1000, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.049041748046875e-05, - 0.0001621246337890625 - ], - "worst_mean_abs": 0.0001621246337890625, - "worst_max_relative": 1.7846138241864485e-08, - "worst_tolerance_ratio": 0.0001784594179969714 - }, - "forces": { - "comparisons": 243, - "failures": 2, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.188628087297701e-06, - 1.4893052075137803e-05 - ], - "worst_mean_abs": 2.4770690623598473e-06, - "worst_max_relative": 0.09800483993834193, - "worst_tolerance_ratio": 1.0179765327467225 - }, - "virial": { - "comparisons": 243, - "failures": 117, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.177535218368277e-05, - 0.000263732172986586 - ], - "worst_mean_abs": 0.0001287893058575672, - "worst_max_relative": 0.0014646597448872386, - "worst_tolerance_ratio": 9.232787445477102 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.601070405007388e-09, - 4.648831145715295e-08 - ], - "worst_mean_abs": 2.680569938080476e-08, - "worst_max_relative": 0.0014646597448872685, - "worst_tolerance_ratio": 0.004630363153779405 - } - } - }, - { - "model": "Nano", - "n": 1000, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.2636184692382812e-05, - 0.00016629695892333984 - ], - "worst_mean_abs": 0.00016629695892333984, - "worst_max_relative": 1.8305413858383056e-08, - "worst_tolerance_ratio": 0.0001830521236071876 - }, - "forces": { - "comparisons": 243, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.16956886065634e-06, - 1.3855962025743906e-05 - ], - "worst_mean_abs": 2.4856888680901968e-06, - "worst_max_relative": 0.07750219826656735, - "worst_tolerance_ratio": 1.0193027676902944 - }, - "virial": { - "comparisons": 243, - "failures": 130, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.3949001278712458e-05, - 0.00030735774929868676 - ], - "worst_mean_abs": 9.88773719763605e-05, - "worst_max_relative": 0.0012774312466267725, - "worst_tolerance_ratio": 8.052553651103347 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.458803219257161e-09, - 5.417823171275087e-08 - ], - "worst_mean_abs": 2.1585082166671613e-08, - "worst_max_relative": 0.0012774312466267916, - "worst_tolerance_ratio": 0.00541148836119021 - } - } - }, - { - "model": "Nano", - "n": 1000, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 7.56978988647461e-05 - ], - "worst_mean_abs": 7.56978988647461e-05, - "worst_max_relative": 8.332571982793504e-09, - "worst_tolerance_ratio": 8.332480261632657e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.040669119997347e-06, - 1.3581996914702188e-05 - ], - "worst_mean_abs": 2.3956786149273528e-06, - "worst_max_relative": 0.10272575989262127, - "worst_tolerance_ratio": 0.9698493269688897 - }, - "virial": { - "comparisons": 243, - "failures": 127, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.917792498153716e-05, - 0.00026902910003578917 - ], - "worst_mean_abs": 0.00010588919322393784, - "worst_max_relative": 0.0012909136884334223, - "worst_tolerance_ratio": 8.141944475670089 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.905928685786884e-09, - 4.7422005635034846e-08 - ], - "worst_mean_abs": 2.1961323641635452e-08, - "worst_max_relative": 0.001290913688433364, - "worst_tolerance_ratio": 0.004736656047334457 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.7550926208496094e-06, - 0.00018018484115600586 - ], - "worst_mean_abs": 0.00018018484115600586, - "worst_max_relative": 4.84178611221321e-09, - "worst_tolerance_ratio": 4.841773101779251e-05 - }, - "forces": { - "comparisons": 27, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1379689637491808e-05, - 1.4982336132618457e-05 - ], - "worst_mean_abs": 2.4547730052219226e-06, - "worst_max_relative": 0.049138968291372306, - "worst_tolerance_ratio": 1.0139251240867395 - }, - "virial": { - "comparisons": 27, - "failures": 12, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.570922696866546e-05, - 0.0006978675185784766 - ], - "worst_mean_abs": 0.0002187298961636349, - "worst_max_relative": 0.00027057793322872046, - "worst_tolerance_ratio": 2.338400680089673 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.118836185367045e-09, - 3.003265285029741e-08 - ], - "worst_mean_abs": 1.3221937558734407e-08, - "worst_max_relative": 0.00026816880233796657, - "worst_tolerance_ratio": 0.002997649770709088 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 0.00020241737365722656 - ], - "worst_mean_abs": 0.00020241737365722656, - "worst_max_relative": 5.439201305868633e-09, - "worst_tolerance_ratio": 5.439186690111687e-05 - }, - "forces": { - "comparisons": 81, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0645488186522556e-05, - 1.4430636024798105e-05 - ], - "worst_mean_abs": 2.46566899329842e-06, - "worst_max_relative": 0.07148408070325418, - "worst_tolerance_ratio": 1.0410711169993532 - }, - "virial": { - "comparisons": 81, - "failures": 31, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.50547983791239e-05, - 0.0006594723001405178 - ], - "worst_mean_abs": 0.00023053475940364935, - "worst_max_relative": 0.00032581061955011103, - "worst_tolerance_ratio": 2.815859630238766 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.964885182298301e-09, - 2.8380318795818353e-08 - ], - "worst_mean_abs": 1.3796734660870624e-08, - "worst_max_relative": 0.00032551804695630913, - "worst_tolerance_ratio": 0.0028348150680754898 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.384185791015625e-06, - 0.00019854307174682617 - ], - "worst_mean_abs": 0.00019854307174682617, - "worst_max_relative": 5.335067179365246e-09, - "worst_tolerance_ratio": 5.335052843500954e-05 - }, - "forces": { - "comparisons": 27, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0975230118503987e-05, - 1.587357682808488e-05 - ], - "worst_mean_abs": 2.4553912382552072e-06, - "worst_max_relative": 0.06999299304932845, - "worst_tolerance_ratio": 1.1102064938466425 - }, - "virial": { - "comparisons": 27, - "failures": 3, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.00011327967093732738, - 0.00039563343946547036 - ], - "worst_mean_abs": 0.0001354829945695456, - "worst_max_relative": 0.00014950168507444765, - "worst_tolerance_ratio": 1.3307480327673997 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.860255624461571e-09, - 1.7026042088350013e-08 - ], - "worst_mean_abs": 7.762377786989415e-09, - "worst_max_relative": 0.00014464547130629135, - "worst_tolerance_ratio": 0.0016974962104918695 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.9073486328125e-06, - 0.00023704767227172852 - ], - "worst_mean_abs": 0.00023704767227172852, - "worst_max_relative": 6.3697275014967495e-09, - "worst_tolerance_ratio": 6.369710385395575e-05 - }, - "forces": { - "comparisons": 81, - "failures": 6, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0602330129394488e-05, - 1.4191975860722295e-05 - ], - "worst_mean_abs": 2.4469045899728142e-06, - "worst_max_relative": 0.055807289324445675, - "worst_tolerance_ratio": 1.0603177923768075 - }, - "virial": { - "comparisons": 81, - "failures": 21, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.913783580169252e-05, - 0.0004544404157869053 - ], - "worst_mean_abs": 0.00016479349701025036, - "worst_max_relative": 0.00029586566081259353, - "worst_tolerance_ratio": 2.5569201058159927 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.3792624247740216e-09, - 1.9556793925989188e-08 - ], - "worst_mean_abs": 9.251974924723359e-09, - "worst_max_relative": 0.0002902433440044892, - "worst_tolerance_ratio": 0.0019498117609229012 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.2782554626464844e-06, - 0.00010496377944946289 - ], - "worst_mean_abs": 0.00010496377944946289, - "worst_max_relative": 2.820490341130655e-09, - "worst_tolerance_ratio": 2.820482762188252e-05 - }, - "forces": { - "comparisons": 27, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1012454613323897e-05, - 1.3474542688740598e-05 - ], - "worst_mean_abs": 2.449811873339659e-06, - "worst_max_relative": 0.05712531834738512, - "worst_tolerance_ratio": 1.082895966258643 - }, - "virial": { - "comparisons": 27, - "failures": 2, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.502211816084014e-05, - 0.0007513522047641885 - ], - "worst_mean_abs": 0.00018108663668983362, - "worst_max_relative": 0.0001329178480579422, - "worst_tolerance_ratio": 1.2806151022648269 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.450145628133662e-09, - 3.233436051010676e-08 - ], - "worst_mean_abs": 1.1021736675087993e-08, - "worst_max_relative": 0.00013291784805790884, - "worst_tolerance_ratio": 0.0032224318346624507 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7881393432617188e-07, - 0.00010454654693603516 - ], - "worst_mean_abs": 0.00010454654693603516, - "worst_max_relative": 2.809278852015124e-09, - "worst_tolerance_ratio": 2.8092713031991247e-05 - }, - "forces": { - "comparisons": 81, - "failures": 3, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0947816213580097e-05, - 1.4619595612330727e-05 - ], - "worst_mean_abs": 2.4549537244605734e-06, - "worst_max_relative": 0.06653307314399023, - "worst_tolerance_ratio": 1.0633569021722804 - }, - "virial": { - "comparisons": 81, - "failures": 31, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.139299662079935e-05, - 0.0006386222641046047 - ], - "worst_mean_abs": 0.0002539937718310823, - "worst_max_relative": 0.00024616351240990165, - "worst_tolerance_ratio": 2.127400706559791 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5027387675740877e-09, - 2.748303976003773e-08 - ], - "worst_mean_abs": 1.3628428496924967e-08, - "worst_max_relative": 0.0002280161720331115, - "worst_tolerance_ratio": 0.002742409539054613 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.381771087646484e-05, - 0.0004324913024902344 - ], - "worst_mean_abs": 0.0004324913024902344, - "worst_max_relative": 1.1621567925613308e-08, - "worst_tolerance_ratio": 0.00011621536697129094 - }, - "forces": { - "comparisons": 243, - "failures": 17, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0699448335649286e-05, - 1.5380760668648463e-05 - ], - "worst_mean_abs": 2.495833944008858e-06, - "worst_max_relative": 0.1218041691795592, - "worst_tolerance_ratio": 1.1737606695090133 - }, - "virial": { - "comparisons": 243, - "failures": 117, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.534001994853213e-05, - 0.0010465449554954986 - ], - "worst_mean_abs": 0.00033525630379976294, - "worst_max_relative": 0.000392902404057476, - "worst_tolerance_ratio": 3.395708892905022 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.6725984877084223e-09, - 4.503794846999953e-08 - ], - "worst_mean_abs": 2.0184461408731757e-08, - "worst_max_relative": 0.00039102251639289447, - "worst_tolerance_ratio": 0.00449537229050707 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.00014007091522216797, - 0.00042897462844848633 - ], - "worst_mean_abs": 0.00042897462844848633, - "worst_max_relative": 1.152764526163696e-08, - "worst_tolerance_ratio": 0.00011527614283989478 - }, - "forces": { - "comparisons": 243, - "failures": 14, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0595065332630327e-05, - 1.6019595547867027e-05 - ], - "worst_mean_abs": 2.4933623047420675e-06, - "worst_max_relative": 0.0874482499180023, - "worst_tolerance_ratio": 1.2258886678228993 - }, - "virial": { - "comparisons": 243, - "failures": 123, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.419615040551221e-05, - 0.0010597201746023188 - ], - "worst_mean_abs": 0.00034545831419389533, - "worst_max_relative": 0.00035317381025751937, - "worst_tolerance_ratio": 3.0523542542179176 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.616717896308061e-09, - 4.560494259298444e-08 - ], - "worst_mean_abs": 2.1400371781246815e-08, - "worst_max_relative": 0.00035240315221009375, - "worst_tolerance_ratio": 0.004544973120706526 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 0.00019782781600952148 - ], - "worst_mean_abs": 0.00019782781600952148, - "worst_max_relative": 5.315847483732588e-09, - "worst_tolerance_ratio": 5.3158331995135595e-05 - }, - "forces": { - "comparisons": 243, - "failures": 12, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0560452640362428e-05, - 1.6222246838282217e-05 - ], - "worst_mean_abs": 2.4624376478042813e-06, - "worst_max_relative": 0.09512105244866108, - "worst_tolerance_ratio": 1.165690936345912 - }, - "virial": { - "comparisons": 243, - "failures": 61, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.472756020199256e-05, - 0.0006499977757217223 - ], - "worst_mean_abs": 0.0002674953122048487, - "worst_max_relative": 0.000282155212670118, - "worst_tolerance_ratio": 2.4384372008718627 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.0422888713994324e-09, - 2.797258366669768e-08 - ], - "worst_mean_abs": 1.3092076453920842e-08, - "worst_max_relative": 0.00026665945244824915, - "worst_tolerance_ratio": 0.002792028462863683 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 1.9431114196777344e-05 - ], - "worst_mean_abs": 1.9431114196777344e-05, - "worst_max_relative": 4.188324242995521e-09, - "worst_tolerance_ratio": 4.188233966742289e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.2609731945854037e-06, - 4.747404886984441e-06 - ], - "worst_mean_abs": 8.978503810614952e-07, - "worst_max_relative": 0.017306737612618715, - "worst_tolerance_ratio": 0.38762796723166587 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.3201160093956332e-05, - 7.499779544417606e-05 - ], - "worst_mean_abs": 2.69405048188102e-05, - "worst_max_relative": 8.964576004914634e-05, - "worst_tolerance_ratio": 0.6231889149211002 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.516617465449846e-09, - 2.5820175837687476e-08 - ], - "worst_mean_abs": 1.2324172681592611e-08, - "worst_max_relative": 8.520618752773425e-05, - "worst_tolerance_ratio": 0.0022025215971098228 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.76837158203125e-07, - 1.8835067749023438e-05 - ], - "worst_mean_abs": 1.8835067749023438e-05, - "worst_max_relative": 4.059848039222653e-09, - "worst_tolerance_ratio": 4.0597605321796415e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.107717333250548e-06, - 5.44138504210423e-06 - ], - "worst_mean_abs": 9.249311995593949e-07, - "worst_max_relative": 0.023970364032297572, - "worst_tolerance_ratio": 0.43357300038769725 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.732121944772132e-06, - 7.460864499364561e-05 - ], - "worst_mean_abs": 2.28438773992343e-05, - "worst_max_relative": 9.538617603537895e-05, - "worst_tolerance_ratio": 0.6850553841253211 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.688710901165882e-09, - 2.5686199459085124e-08 - ], - "worst_mean_abs": 1.0444381785731363e-08, - "worst_max_relative": 8.921009301339311e-05, - "worst_tolerance_ratio": 0.0021948404759923523 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 2.5212764739990234e-05 - ], - "worst_mean_abs": 2.5212764739990234e-05, - "worst_max_relative": 5.4353916727162585e-09, - "worst_tolerance_ratio": 5.435274498554467e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.1476767397009553e-06, - 4.934298132752701e-06 - ], - "worst_mean_abs": 8.77427157594419e-07, - "worst_max_relative": 0.010513017843535599, - "worst_tolerance_ratio": 0.405881842281788 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0980348301714571e-05, - 4.944424244968104e-05 - ], - "worst_mean_abs": 2.3102641591628743e-05, - "worst_max_relative": 8.879032695546355e-05, - "worst_tolerance_ratio": 0.6620543041148937 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5805127304895656e-09, - 1.7022620819873158e-08 - ], - "worst_mean_abs": 9.680753474747053e-09, - "worst_max_relative": 8.730743784710452e-05, - "worst_tolerance_ratio": 0.0014579698068592367 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.384185791015625e-07, - 2.3543834686279297e-05 - ], - "worst_mean_abs": 2.3543834686279297e-05, - "worst_max_relative": 5.0756021805971586e-09, - "worst_tolerance_ratio": 5.0754927626434686e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.1349115907630676e-06, - 5.107811531956941e-06 - ], - "worst_mean_abs": 8.845002525243235e-07, - "worst_max_relative": 0.014682839719857066, - "worst_tolerance_ratio": 0.43502947533789327 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.663102446211269e-06, - 6.807341956971413e-05 - ], - "worst_mean_abs": 2.427963185406649e-05, - "worst_max_relative": 9.570601298052722e-05, - "worst_tolerance_ratio": 0.7136376509844654 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.3268045124268397e-09, - 2.3436257729630983e-08 - ], - "worst_mean_abs": 1.0438885066395518e-08, - "worst_max_relative": 9.286597361369884e-05, - "worst_tolerance_ratio": 0.0020072914446565035 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 1.627206802368164e-05 - ], - "worst_mean_abs": 1.627206802368164e-05, - "worst_max_relative": 3.5081241159433527e-09, - "worst_tolerance_ratio": 3.5080484853014864e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.2630516564324807e-06, - 4.8237928353955795e-06 - ], - "worst_mean_abs": 8.784970780970185e-07, - "worst_max_relative": 0.007430362293793376, - "worst_tolerance_ratio": 0.3028129795031166 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.221441437441854e-06, - 4.652849903408196e-05 - ], - "worst_mean_abs": 2.140936652510966e-05, - "worst_max_relative": 0.00010212266523684922, - "worst_tolerance_ratio": 0.7407159626475908 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.5127417577051258e-09, - 1.6018791210159478e-08 - ], - "worst_mean_abs": 8.932223261531584e-09, - "worst_max_relative": 0.00010105843412369265, - "worst_tolerance_ratio": 0.0013687301823958726 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 1.7404556274414062e-05 - ], - "worst_mean_abs": 1.7404556274414062e-05, - "worst_max_relative": 3.75227928827542e-09, - "worst_tolerance_ratio": 3.752198393961901e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.247226459279773e-06, - 4.922026811016167e-06 - ], - "worst_mean_abs": 8.943560492395342e-07, - "worst_max_relative": 0.010693852842127965, - "worst_tolerance_ratio": 0.3912418460824434 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.2897677962087073e-05, - 6.690316941870833e-05 - ], - "worst_mean_abs": 2.3082899057700087e-05, - "worst_max_relative": 0.00012418672821572164, - "worst_tolerance_ratio": 0.8632753370872855 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.927862932747318e-09, - 2.303336502432196e-08 - ], - "worst_mean_abs": 1.0508478704322638e-08, - "worst_max_relative": 0.00011956456218811446, - "worst_tolerance_ratio": 0.0019727836741424472 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 3.11732292175293e-05 - ], - "worst_mean_abs": 3.11732292175293e-05, - "worst_max_relative": 6.7203542344629495e-09, - "worst_tolerance_ratio": 6.720209359554062e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.320936966450972e-06, - 6.98078465077856e-06 - ], - "worst_mean_abs": 1.301702057805836e-06, - "worst_max_relative": 0.023747693641991956, - "worst_tolerance_ratio": 0.5511649375814351 - }, - "virial": { - "comparisons": 243, - "failures": 5, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.577082898535537e-05, - 0.000177129442924695 - ], - "worst_mean_abs": 4.4845525424299896e-05, - "worst_max_relative": 0.00016002130098533964, - "worst_tolerance_ratio": 1.1932279911921873 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.608631515313431e-08, - 6.098197067455624e-08 - ], - "worst_mean_abs": 1.9536046954743435e-08, - "worst_max_relative": 0.00015516985022330314, - "worst_tolerance_ratio": 0.00519714666448471 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 2.9265880584716797e-05 - ], - "worst_mean_abs": 2.9265880584716797e-05, - "worst_max_relative": 6.30916621246904e-09, - "worst_tolerance_ratio": 6.309030201799321e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.555514710347097e-06, - 7.4104944003394735e-06 - ], - "worst_mean_abs": 1.3147059162983785e-06, - "worst_max_relative": 0.019166484553874742, - "worst_tolerance_ratio": 0.49439101729730117 - }, - "virial": { - "comparisons": 243, - "failures": 2, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.720420472878686e-05, - 0.00015936589559828462 - ], - "worst_mean_abs": 4.3519479409454614e-05, - "worst_max_relative": 0.00013806815235107146, - "worst_tolerance_ratio": 1.0295242277198577 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.6579796509607068e-08, - 5.4866352038052124e-08 - ], - "worst_mean_abs": 1.850526839180634e-08, - "worst_max_relative": 0.00013791565426637806, - "worst_tolerance_ratio": 0.004675947256751742 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 2.3305416107177734e-05 - ], - "worst_mean_abs": 2.3305416107177734e-05, - "worst_max_relative": 5.024203650193988e-09, - "worst_tolerance_ratio": 5.024095340271387e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.149001635449622e-06, - 5.300833180399422e-06 - ], - "worst_mean_abs": 9.081053590347504e-07, - "worst_max_relative": 0.01951982001831704, - "worst_tolerance_ratio": 0.4047742918420026 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.727628684506271e-06, - 7.27847996699893e-05 - ], - "worst_mean_abs": 2.627854990433498e-05, - "worst_max_relative": 0.00012862412483404494, - "worst_tolerance_ratio": 0.9590701868020425 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.6604612887726198e-09, - 2.5058287573404003e-08 - ], - "worst_mean_abs": 1.1340602186929626e-08, - "worst_max_relative": 0.0001263035009572724, - "worst_tolerance_ratio": 0.002146216637660616 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "ECS_RUNTIME", - "right": "ECS_RUNTIME", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.172325134277344e-07, - 1.823902130126953e-05 - ], - "worst_mean_abs": 1.823902130126953e-05, - "worst_max_relative": 3.931371831813152e-09, - "worst_tolerance_ratio": 3.931287093980519e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.4027584945306444e-06, - 4.478831954202178e-06 - ], - "worst_mean_abs": 8.879678381754321e-07, - "worst_max_relative": 0.01887905391732344, - "worst_tolerance_ratio": 0.384610504452657 - }, - "virial": { - "comparisons": 27, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.187376995659406e-05, - 4.710241667282844e-05 - ], - "worst_mean_abs": 2.0205595327782433e-05, - "worst_max_relative": 0.00015129978263289597, - "worst_tolerance_ratio": 1.0518007657527986 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9627549210102695e-09, - 1.6216379079836418e-08 - ], - "worst_mean_abs": 8.28830918661883e-09, - "worst_max_relative": 0.00013901597435079626, - "worst_tolerance_ratio": 0.0013856132739718786 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "ECS_RUNTIME", - "right": "ECS_RUNTIME", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 1.430511474609375e-05 - ], - "worst_mean_abs": 1.430511474609375e-05, - "worst_max_relative": 3.08342888769659e-09, - "worst_tolerance_ratio": 3.083362426651388e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.251296565309758e-06, - 5.501838188592956e-06 - ], - "worst_mean_abs": 8.94282464388377e-07, - "worst_max_relative": 0.018301404993686796, - "worst_tolerance_ratio": 0.3389598237117009 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.899578593788647e-06, - 5.424304983137063e-05 - ], - "worst_mean_abs": 2.218789910611739e-05, - "worst_max_relative": 0.00013062633192669992, - "worst_tolerance_ratio": 0.9080476063585313 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.3753809232085477e-09, - 1.8674750055375222e-08 - ], - "worst_mean_abs": 9.325875661738854e-09, - "worst_max_relative": 0.00012723511511573475, - "worst_tolerance_ratio": 0.001591806855818132 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "ECS_RUNTIME", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 2.300739288330078e-05 - ], - "worst_mean_abs": 2.300739288330078e-05, - "worst_max_relative": 4.959955548634185e-09, - "worst_tolerance_ratio": 4.959848623747794e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.041573313211643e-06, - 5.381715737939885e-06 - ], - "worst_mean_abs": 8.940980457543222e-07, - "worst_max_relative": 0.01730310324091974, - "worst_tolerance_ratio": 0.4056752851276045 - }, - "virial": { - "comparisons": 243, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.280695550728524e-06, - 6.28518736505157e-05 - ], - "worst_mean_abs": 2.4657616244853447e-05, - "worst_max_relative": 0.00015057011349743692, - "worst_tolerance_ratio": 1.0466802364928165 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.714803833125945e-09, - 2.1638588438427364e-08 - ], - "worst_mean_abs": 1.0687658860052346e-08, - "worst_max_relative": 0.00013747832988509967, - "worst_tolerance_ratio": 0.0018533229130682667 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "ECS_RUNTIME", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 2.372264862060547e-05 - ], - "worst_mean_abs": 2.372264862060547e-05, - "worst_max_relative": 5.113352931576556e-09, - "worst_tolerance_ratio": 5.113242717008802e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.382804867475443e-06, - 7.11331466263232e-06 - ], - "worst_mean_abs": 1.3166069551366621e-06, - "worst_max_relative": 0.02655375733126387, - "worst_tolerance_ratio": 0.46895896698125333 - }, - "virial": { - "comparisons": 243, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.607469999015848e-05, - 0.00016483452873217175 - ], - "worst_mean_abs": 4.6549471445778146e-05, - "worst_max_relative": 0.00013903895986944434, - "worst_tolerance_ratio": 1.0367631879260903 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.6190931600583722e-08, - 5.6749088300084294e-08 - ], - "worst_mean_abs": 2.0157306509959463e-08, - "worst_max_relative": 0.00012932630906013269, - "worst_tolerance_ratio": 0.004836402164589076 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "ECS_RUNTIME", - "right": "ECS", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 2.110004425048828e-05 - ], - "worst_mean_abs": 2.110004425048828e-05, - "worst_max_relative": 4.548767522006548e-09, - "worst_tolerance_ratio": 4.548669461359525e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.023531462531537e-06, - 5.139336284543106e-06 - ], - "worst_mean_abs": 9.208346959116662e-07, - "worst_max_relative": 0.02196538192903394, - "worst_tolerance_ratio": 0.37540362920854503 - }, - "virial": { - "comparisons": 243, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.925895355891498e-06, - 6.314527961848171e-05 - ], - "worst_mean_abs": 2.5952830151918268e-05, - "worst_max_relative": 0.0001588631944276362, - "worst_tolerance_ratio": 1.1043263615259558 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.3844412347373556e-09, - 2.1739601990117263e-08 - ], - "worst_mean_abs": 1.1690886852271145e-08, - "worst_max_relative": 0.0001457990668108247, - "worst_tolerance_ratio": 0.0018530501501788162 - } - } - }, - { - "model": "Neo", - "n": 1000, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539062e-07, - 2.9385089874267578e-05 - ], - "worst_mean_abs": 2.9385089874267578e-05, - "worst_max_relative": 3.2432541782451404e-09, - "worst_tolerance_ratio": 3.243218382603148e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.633342629427716e-06, - 5.042250927900227e-06 - ], - "worst_mean_abs": 8.955368340426614e-07, - "worst_max_relative": 0.019529283716999562, - "worst_tolerance_ratio": 0.3544008260806043 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.79551512786702e-05, - 8.293916171453475e-05 - ], - "worst_mean_abs": 3.160659930988451e-05, - "worst_max_relative": 5.391707177716919e-05, - "worst_tolerance_ratio": 0.4761605395263849 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.4962958484163467e-09, - 1.4619761928846842e-08 - ], - "worst_mean_abs": 6.723154353794865e-09, - "worst_max_relative": 5.092272442244048e-05, - "worst_tolerance_ratio": 0.0012499379715431075 - } - } - }, - { - "model": "Neo", - "n": 1000, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 2.7358531951904297e-05 - ], - "worst_mean_abs": 2.7358531951904297e-05, - "worst_max_relative": 3.0195814762971996e-09, - "worst_tolerance_ratio": 3.0195481493201726e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.4707768179487175e-06, - 5.587821542363258e-06 - ], - "worst_mean_abs": 9.1447115139535e-07, - "worst_max_relative": 0.03025642234591212, - "worst_tolerance_ratio": 0.3545796580672326 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.4830776261298695e-05, - 0.0001008340942405539 - ], - "worst_mean_abs": 3.617341710502073e-05, - "worst_max_relative": 5.636826848955988e-05, - "worst_tolerance_ratio": 0.4978049224428248 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.1806387771883262e-09, - 1.7774118059310506e-08 - ], - "worst_mean_abs": 8.605640609729397e-09, - "worst_max_relative": 4.9030358175449284e-05, - "worst_tolerance_ratio": 0.0015196244616074491 - } - } - }, - { - "model": "Neo", - "n": 1000, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.152557373046875e-07, - 2.0742416381835938e-05 - ], - "worst_mean_abs": 2.0742416381835938e-05, - "worst_max_relative": 2.289308671490993e-09, - "worst_tolerance_ratio": 2.2892834050212908e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.33537617791535e-06, - 4.863794103471264e-06 - ], - "worst_mean_abs": 8.753199977989771e-07, - "worst_max_relative": 0.039481397851827686, - "worst_tolerance_ratio": 0.3434311438755049 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.661514428974442e-05, - 7.371263139077655e-05 - ], - "worst_mean_abs": 2.9762359849577142e-05, - "worst_max_relative": 4.005407482042947e-05, - "worst_tolerance_ratio": 0.3498361872269447 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.928766687504414e-09, - 1.299339298654889e-08 - ], - "worst_mean_abs": 6.664745576811708e-09, - "worst_max_relative": 3.4466479293943406e-05, - "worst_tolerance_ratio": 0.0011097018798516436 - } - } - }, - { - "model": "Neo", - "n": 1000, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 1.8477439880371094e-05 - ], - "worst_mean_abs": 1.8477439880371094e-05, - "worst_max_relative": 2.0396011677119513e-09, - "worst_tolerance_ratio": 2.0395786541655314e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.363191295235879e-06, - 5.304643678982757e-06 - ], - "worst_mean_abs": 8.877775632153787e-07, - "worst_max_relative": 0.035986585358925086, - "worst_tolerance_ratio": 0.3850449259112016 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.574394066494733e-05, - 0.00010225479562109285 - ], - "worst_mean_abs": 3.7090118130195864e-05, - "worst_max_relative": 6.306032100029021e-05, - "worst_tolerance_ratio": 0.550774980147506 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.277453541726926e-09, - 1.8024546390160712e-08 - ], - "worst_mean_abs": 8.831049912109184e-09, - "worst_max_relative": 5.688659105625272e-05, - "worst_tolerance_ratio": 0.0015366056238270908 - } - } - }, - { - "model": "Neo", - "n": 1000, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.556510925292969e-07, - 3.3020973205566406e-05 - ], - "worst_mean_abs": 3.3020973205566406e-05, - "worst_max_relative": 3.644964670313225e-09, - "worst_tolerance_ratio": 3.6449244364269796e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5435822987039955e-06, - 4.635432755861757e-06 - ], - "worst_mean_abs": 8.828076564637392e-07, - "worst_max_relative": 0.03565022753686914, - "worst_tolerance_ratio": 0.3128566411552532 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.599221879189372e-05, - 7.633215030011797e-05 - ], - "worst_mean_abs": 3.179121207757479e-05, - "worst_max_relative": 4.165436131010499e-05, - "worst_tolerance_ratio": 0.3678620572512016 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.645426277342322e-09, - 1.34551379794845e-08 - ], - "worst_mean_abs": 7.085925340050957e-09, - "worst_max_relative": 4.042028814875951e-05, - "worst_tolerance_ratio": 0.0011503664785505194 - } - } - }, - { - "model": "Neo", - "n": 1000, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.980232238769531e-07, - 3.063678741455078e-05 - ], - "worst_mean_abs": 3.063678741455078e-05, - "worst_max_relative": 3.381404968813222e-09, - "worst_tolerance_ratio": 3.3813676484074856e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.361861978135039e-06, - 5.388645796244873e-06 - ], - "worst_mean_abs": 9.034893317737176e-07, - "worst_max_relative": 0.0370182513885458, - "worst_tolerance_ratio": 0.34711442598892767 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0433619962668672e-05, - 0.00010179705985535747 - ], - "worst_mean_abs": 3.785335627723738e-05, - "worst_max_relative": 5.7465137916573e-05, - "worst_tolerance_ratio": 0.5019102458657091 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.8391437366094276e-09, - 1.7943860886743268e-08 - ], - "worst_mean_abs": 8.864620042806805e-09, - "worst_max_relative": 5.051624883690171e-05, - "worst_tolerance_ratio": 0.0015341363344884929 - } - } - }, - { - "model": "Neo", - "n": 1000, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 2.7358531951904297e-05 - ], - "worst_mean_abs": 2.7358531951904297e-05, - "worst_max_relative": 3.019581466503929e-09, - "worst_tolerance_ratio": 3.0195481395271188e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.920742192382477e-06, - 7.256596255444947e-06 - ], - "worst_mean_abs": 1.2787882238700446e-06, - "worst_max_relative": 0.04443341242762421, - "worst_tolerance_ratio": 0.5313000526596697 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.00015233349519405692, - 0.00029167834442489493 - ], - "worst_mean_abs": 6.962979531989334e-05, - "worst_max_relative": 6.993690481415829e-05, - "worst_tolerance_ratio": 0.610841140331658 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.6851964585877797e-08, - 5.141440866801572e-08 - ], - "worst_mean_abs": 1.686265737105481e-08, - "worst_max_relative": 5.607840267271822e-05, - "worst_tolerance_ratio": 0.004395750766945767 - } - } - }, - { - "model": "Neo", - "n": 1000, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 4.029273986816406e-05 - ], - "worst_mean_abs": 4.029273986816406e-05, - "worst_max_relative": 4.447139589012323e-09, - "worst_tolerance_ratio": 4.447090506144515e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.026079264780492e-06, - 8.691451490960844e-06 - ], - "worst_mean_abs": 1.280851849397413e-06, - "worst_max_relative": 0.04566510292217968, - "worst_tolerance_ratio": 0.5602939503659935 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.00015130114879013945, - 0.000335671715731678 - ], - "worst_mean_abs": 7.109763783846251e-05, - "worst_max_relative": 6.530826222970714e-05, - "worst_tolerance_ratio": 0.5704137676592913 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.666999194406161e-08, - 5.916916048440135e-08 - ], - "worst_mean_abs": 1.7165771659069047e-08, - "worst_max_relative": 6.236457476732796e-05, - "worst_tolerance_ratio": 0.005058754721040777 - } - } - }, - { - "model": "Neo", - "n": 1000, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 3.1888484954833984e-05 - ], - "worst_mean_abs": 3.1888484954833984e-05, - "worst_max_relative": 3.5194831507005216e-09, - "worst_tolerance_ratio": 3.519444307133772e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.3520700704059436e-06, - 5.041821395934676e-06 - ], - "worst_mean_abs": 8.901110789538332e-07, - "worst_max_relative": 0.040719471312637145, - "worst_tolerance_ratio": 0.3898827707648832 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0214205402592214e-05, - 0.00010584578105010678 - ], - "worst_mean_abs": 3.629722876163921e-05, - "worst_max_relative": 6.79690539129666e-05, - "worst_tolerance_ratio": 0.5936540163182049 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.6444365071033307e-09, - 1.865753267854542e-08 - ], - "worst_mean_abs": 8.749500643367554e-09, - "worst_max_relative": 6.316952219034617e-05, - "worst_tolerance_ratio": 0.0015905681629935873 - } - } - }, - { - "model": "Neo", - "n": 1000, - "left": "ECS_RUNTIME", - "right": "ECS_RUNTIME", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.384185791015625e-07, - 2.86102294921875e-05 - ], - "worst_mean_abs": 2.86102294921875e-05, - "worst_max_relative": 3.158092123710838e-09, - "worst_tolerance_ratio": 3.158057264026212e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5697123863531743e-06, - 4.866482790077953e-06 - ], - "worst_mean_abs": 8.71843400297769e-07, - "worst_max_relative": 0.024901377101051565, - "worst_tolerance_ratio": 0.3133980997930973 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.601116809291092e-05, - 0.00010153925137501574 - ], - "worst_mean_abs": 3.9492079969289444e-05, - "worst_max_relative": 4.76723214383088e-05, - "worst_tolerance_ratio": 0.4163750444749794 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.814842466752898e-09, - 1.7898416752176738e-08 - ], - "worst_mean_abs": 8.931792745649759e-09, - "worst_max_relative": 3.824128679262822e-05, - "worst_tolerance_ratio": 0.0015302507527934174 - } - } - }, - { - "model": "Neo", - "n": 1000, - "left": "ECS_RUNTIME", - "right": "ECS_RUNTIME", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.384185791015625e-07, - 2.777576446533203e-05 - ], - "worst_mean_abs": 2.777576446533203e-05, - "worst_max_relative": 3.065981103718349e-09, - "worst_tolerance_ratio": 3.065947260774519e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5047379043362525e-06, - 5.059271453333736e-06 - ], - "worst_mean_abs": 8.903590764758214e-07, - "worst_max_relative": 0.02847250811269939, - "worst_tolerance_ratio": 0.34366267329652256 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.4292230757551039e-05, - 0.0001104156477822471 - ], - "worst_mean_abs": 4.8674585956920424e-05, - "worst_max_relative": 4.0505170940642086e-05, - "worst_tolerance_ratio": 0.3537782159760424 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.1862362128977075e-09, - 1.9463067268965517e-08 - ], - "worst_mean_abs": 1.093853760133181e-08, - "worst_max_relative": 3.536443167796447e-05, - "worst_tolerance_ratio": 0.0016640230646324222 - } - } - }, - { - "model": "Neo", - "n": 1000, - "left": "ECS_RUNTIME", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 2.7179718017578125e-05 - ], - "worst_mean_abs": 2.7179718017578125e-05, - "worst_max_relative": 3.0001875179990396e-09, - "worst_tolerance_ratio": 3.0001544012986344e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.2885830449913556e-06, - 4.838688653308054e-06 - ], - "worst_mean_abs": 8.974894089132656e-07, - "worst_max_relative": 0.03750267267335105, - "worst_tolerance_ratio": 0.3613712292053565 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0719156023242249e-05, - 0.00010376051326943525 - ], - "worst_mean_abs": 4.32808850661844e-05, - "worst_max_relative": 6.901233463569448e-05, - "worst_tolerance_ratio": 0.6027662189389421 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.8894754406917347e-09, - 1.8289960618950163e-08 - ], - "worst_mean_abs": 9.741253750385066e-09, - "worst_max_relative": 6.221302847932587e-05, - "worst_tolerance_ratio": 0.001559232378907276 - } - } - }, - { - "model": "Neo", - "n": 1000, - "left": "ECS_RUNTIME", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 3.272294998168945e-05 - ], - "worst_mean_abs": 3.272294998168945e-05, - "worst_max_relative": 3.611656263857641e-09, - "worst_tolerance_ratio": 3.611616402179495e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.815899778520816e-06, - 7.409136284053375e-06 - ], - "worst_mean_abs": 1.2799668828152959e-06, - "worst_max_relative": 0.04246488869230901, - "worst_tolerance_ratio": 0.529415590283588 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.00015757149444084462, - 0.00035081970636952065 - ], - "worst_mean_abs": 7.662361022201895e-05, - "worst_max_relative": 6.22942494384205e-05, - "worst_tolerance_ratio": 0.5440888535771483 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.7775271506380594e-08, - 6.18393106548154e-08 - ], - "worst_mean_abs": 1.7776060046128894e-08, - "worst_max_relative": 6.140808028633187e-05, - "worst_tolerance_ratio": 0.005287043151532045 - } - } - }, - { - "model": "Neo", - "n": 1000, - "left": "ECS_RUNTIME", - "right": "ECS", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 3.4809112548828125e-05 - ], - "worst_mean_abs": 3.4809112548828125e-05, - "worst_max_relative": 3.8418283499868665e-09, - "worst_tolerance_ratio": 3.841785948784733e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.344283097561629e-06, - 5.309391424290766e-06 - ], - "worst_mean_abs": 9.063036967302448e-07, - "worst_max_relative": 0.0337890412816447, - "worst_tolerance_ratio": 0.3473774922295766 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1614812271742991e-05, - 0.00011694505049320014 - ], - "worst_mean_abs": 4.5252665304800705e-05, - "worst_max_relative": 5.8508429598578834e-05, - "worst_tolerance_ratio": 0.511022532090192 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.6118786997417617e-09, - 2.0614011057157322e-08 - ], - "worst_mean_abs": 1.0167814561372906e-08, - "worst_max_relative": 4.955974302234044e-05, - "worst_tolerance_ratio": 0.0017624246845168415 - } - } - }, - { - "model": "Neo", - "n": 4096, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.384185791015625e-07, - 4.64320182800293e-05 - ], - "worst_mean_abs": 4.64320182800293e-05, - "worst_max_relative": 1.2511782837943904e-09, - "worst_tolerance_ratio": 1.2511749123215628e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.006612300599954e-06, - 5.5649634305154905e-06 - ], - "worst_mean_abs": 9.24204651891453e-07, - "worst_max_relative": 0.04638977543659968, - "worst_tolerance_ratio": 0.45762864355362753 - }, - "virial": { - "comparisons": 27, - "failures": 5, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.3261900263935615e-05, - 0.00017641855885131008 - ], - "worst_mean_abs": 6.176949326001473e-05, - "worst_max_relative": 0.0003462478988203084, - "worst_tolerance_ratio": 2.0354331868617845 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.4277160951343533e-09, - 7.592153516977618e-09 - ], - "worst_mean_abs": 3.319596621695895e-09, - "worst_max_relative": 0.00033108076119606, - "worst_tolerance_ratio": 0.0006483897011119122 - } - } - }, - { - "model": "Neo", - "n": 4096, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.172325134277344e-07, - 5.626678466796875e-05 - ], - "worst_mean_abs": 5.626678466796875e-05, - "worst_max_relative": 1.5161903740432432e-09, - "worst_tolerance_ratio": 1.5161862884587026e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.911784567378618e-06, - 5.939335657956235e-06 - ], - "worst_mean_abs": 9.235166901001517e-07, - "worst_max_relative": 0.05466832139536, - "worst_tolerance_ratio": 0.40715872448751944 - }, - "virial": { - "comparisons": 81, - "failures": 15, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.274522682910174e-05, - 0.00025125827636429676 - ], - "worst_mean_abs": 8.923709778684163e-05, - "worst_max_relative": 0.00048536159158823675, - "worst_tolerance_ratio": 2.8536434786230034 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.788383645292775e-10, - 1.0812872628523928e-08 - ], - "worst_mean_abs": 5.3527442911898254e-09, - "worst_max_relative": 0.00044321573010890595, - "worst_tolerance_ratio": 0.0009234475088118105 - } - } - }, - { - "model": "Neo", - "n": 4096, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.384185791015625e-07, - 5.40614128112793e-05 - ], - "worst_mean_abs": 5.40614128112793e-05, - "worst_max_relative": 1.4568380792805779e-09, - "worst_tolerance_ratio": 1.4568341534278123e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.204245115602134e-06, - 5.1832413270336275e-06 - ], - "worst_mean_abs": 9.13824796910734e-07, - "worst_max_relative": 0.05844972749466132, - "worst_tolerance_ratio": 0.39319124731802485 - }, - "virial": { - "comparisons": 27, - "failures": 5, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.1738773590129767e-05, - 0.00010842949927791778 - ], - "worst_mean_abs": 4.631634302073214e-05, - "worst_max_relative": 0.0003797296434928179, - "worst_tolerance_ratio": 2.232552053656739 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.853475516792717e-10, - 4.666251721824333e-09 - ], - "worst_mean_abs": 2.5063077698456076e-09, - "worst_max_relative": 0.0003111970722678921, - "worst_tolerance_ratio": 0.00039846764536102206 - } - } - }, - { - "model": "Neo", - "n": 4096, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5762786865234375e-07, - 8.285045623779297e-05 - ], - "worst_mean_abs": 8.285045623779297e-05, - "worst_max_relative": 2.2326404946295473e-09, - "worst_tolerance_ratio": 2.2326344781628045e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.080200170619719e-06, - 5.679104731370899e-06 - ], - "worst_mean_abs": 9.19830079793565e-07, - "worst_max_relative": 0.06567696857503363, - "worst_tolerance_ratio": 0.41637204115749826 - }, - "virial": { - "comparisons": 81, - "failures": 14, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.125524217655439e-05, - 0.00017049881836328495 - ], - "worst_mean_abs": 7.710890105008496e-05, - "worst_max_relative": 0.0004854599328622272, - "worst_tolerance_ratio": 2.854298652629297 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.107572735249272e-10, - 7.337398126583405e-09 - ], - "worst_mean_abs": 3.933029052158386e-09, - "worst_max_relative": 0.0004688952443502357, - "worst_tolerance_ratio": 0.0006263316685596658 - } - } - }, - { - "model": "Neo", - "n": 4096, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 6.812810897827148e-05 - ], - "worst_mean_abs": 6.812810897827148e-05, - "worst_max_relative": 1.8358110143341388e-09, - "worst_tolerance_ratio": 1.835806067487603e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.013267599134451e-06, - 5.806176268663421e-06 - ], - "worst_mean_abs": 9.279718525367565e-07, - "worst_max_relative": 0.07600583073691304, - "worst_tolerance_ratio": 0.48031684020002197 - }, - "virial": { - "comparisons": 243, - "failures": 43, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.1126351798628207e-05, - 0.00024822615586117536 - ], - "worst_mean_abs": 9.79036613448287e-05, - "worst_max_relative": 0.0005510887995292004, - "worst_tolerance_ratio": 3.239432988792245 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.361754128591905e-10, - 1.0682385653132398e-08 - ], - "worst_mean_abs": 5.683358252322985e-09, - "worst_max_relative": 0.0005106279928969495, - "worst_tolerance_ratio": 0.0009118650107217193 - } - } - }, - { - "model": "Neo", - "n": 4096, - "left": "ECS_RUNTIME", - "right": "ECS_RUNTIME", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5762786865234375e-07, - 5.65648078918457e-05 - ], - "worst_mean_abs": 5.65648078918457e-05, - "worst_max_relative": 1.5242210432699846e-09, - "worst_tolerance_ratio": 1.5242169360456961e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.011071013110268e-06, - 5.387967661363291e-06 - ], - "worst_mean_abs": 9.248245991827885e-07, - "worst_max_relative": 0.03156320400212182, - "worst_tolerance_ratio": 0.40441575591492857 - }, - "virial": { - "comparisons": 27, - "failures": 6, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.3210579456645064e-05, - 0.000212725031701666 - ], - "worst_mean_abs": 7.947677190594465e-05, - "worst_max_relative": 0.0005106145571754262, - "worst_tolerance_ratio": 3.002365005634482 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.988647652059424e-10, - 9.15459863123913e-09 - ], - "worst_mean_abs": 4.1063543313722e-09, - "worst_max_relative": 0.0004523552834152322, - "worst_tolerance_ratio": 0.000782305939611223 - } - } - }, - { - "model": "Neo", - "n": 4096, - "left": "ECS_RUNTIME", - "right": "ECS_RUNTIME", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.384185791015625e-07, - 6.252527236938477e-05 - ], - "worst_mean_abs": 6.252527236938477e-05, - "worst_max_relative": 1.6848344303374224e-09, - "worst_tolerance_ratio": 1.6848298903181613e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.01429013763277e-06, - 6.203240378255259e-06 - ], - "worst_mean_abs": 9.300723181377313e-07, - "worst_max_relative": 0.05028517913571991, - "worst_tolerance_ratio": 0.4363624263685384 - }, - "virial": { - "comparisons": 81, - "failures": 18, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.70112598261818e-05, - 0.00015965467025580438 - ], - "worst_mean_abs": 7.798662345563183e-05, - "worst_max_relative": 0.0005044852835018811, - "worst_tolerance_ratio": 2.965709028961038 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.89032851656576e-10, - 6.8707213911334275e-09 - ], - "worst_mean_abs": 4.030487449442636e-09, - "worst_max_relative": 0.0004576428524409064, - "worst_tolerance_ratio": 0.0005871372929730839 - } - } - }, - { - "model": "Neo", - "n": 4096, - "left": "ECS_RUNTIME", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 6.562471389770508e-05 - ], - "worst_mean_abs": 6.562471389770508e-05, - "worst_max_relative": 1.768353391760181e-09, - "worst_tolerance_ratio": 1.7683486266875334e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.0562457996884405e-06, - 6.06768347211073e-06 - ], - "worst_mean_abs": 9.269528270914579e-07, - "worst_max_relative": 0.05541966003438398, - "worst_tolerance_ratio": 0.4396428415745402 - }, - "virial": { - "comparisons": 243, - "failures": 45, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.5601343136495416e-05, - 0.0002561021262295071 - ], - "worst_mean_abs": 9.509609134079117e-05, - "worst_max_relative": 0.0005999949664091773, - "worst_tolerance_ratio": 3.526915242980177 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.714021075215904e-10, - 1.1021327180754659e-08 - ], - "worst_mean_abs": 5.448347654483149e-09, - "worst_max_relative": 0.000545875738601154, - "worst_tolerance_ratio": 0.0009402588735358382 - } - } - }, - { - "model": "Neo", - "n": 4096, - "left": "ECS_RUNTIME", - "right": "ECS", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 7.30752944946289e-05 - ], - "worst_mean_abs": 7.30752944946289e-05, - "worst_max_relative": 1.969221044983487e-09, - "worst_tolerance_ratio": 1.9692157383732285e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.972335861135434e-06, - 5.79117048715716e-06 - ], - "worst_mean_abs": 9.270504371683768e-07, - "worst_max_relative": 0.07640685777968143, - "worst_tolerance_ratio": 0.4278519781945703 - }, - "virial": { - "comparisons": 243, - "failures": 43, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.0289837493692175e-05, - 0.00019545518495078795 - ], - "worst_mean_abs": 8.615662166332349e-05, - "worst_max_relative": 0.0005388515499075958, - "worst_tolerance_ratio": 3.1676925701848857 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.731709522091791e-10, - 8.411392651841432e-09 - ], - "worst_mean_abs": 4.566742367445485e-09, - "worst_max_relative": 0.0005043614934603541, - "worst_tolerance_ratio": 0.0007187953475612625 - } - } - }, - { - "model": "Pro", - "n": 64, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9802322387695312e-08, - 2.205371856689453e-06 - ], - "worst_mean_abs": 2.205371856689453e-06, - "worst_max_relative": 3.803005087449338e-09, - "worst_tolerance_ratio": 3.802349399653771e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.836824043039314e-07, - 1.120138253263292e-06 - ], - "worst_mean_abs": 2.7072980710955247e-07, - "worst_max_relative": 0.00023539000515267026, - "worst_tolerance_ratio": 0.1069256115075036 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.677356905815941e-06, - 4.709333710550823e-06 - ], - "worst_mean_abs": 2.007555334736387e-06, - "worst_max_relative": 1.2772568056882827e-05, - "worst_tolerance_ratio": 0.08673921033429122 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.3227540386033053e-09, - 1.2970602536466203e-08 - ], - "worst_mean_abs": 5.939678369988888e-09, - "worst_max_relative": 9.691509563143057e-06, - "worst_tolerance_ratio": 0.0010587397953746294 - } - } - }, - { - "model": "Pro", - "n": 64, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 2.0563602447509766e-06 - ], - "worst_mean_abs": 2.0563602447509766e-06, - "worst_max_relative": 3.546045284243301e-09, - "worst_tolerance_ratio": 3.5454338996771656e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.308566187802512e-07, - 1.3726140153380584e-06 - ], - "worst_mean_abs": 2.76556158085306e-07, - "worst_max_relative": 0.00022497410176645672, - "worst_tolerance_ratio": 0.10221615199260987 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1849798069452078e-06, - 5.181526118169799e-06 - ], - "worst_mean_abs": 2.4917043893858527e-06, - "worst_max_relative": 1.730106739253013e-05, - "worst_tolerance_ratio": 0.1297029723885502 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.928027439090929e-09, - 1.3559246964806038e-08 - ], - "worst_mean_abs": 6.56586121563603e-09, - "worst_max_relative": 1.249110400946927e-05, - "worst_tolerance_ratio": 0.0010986257545608643 - } - } - }, - { - "model": "Pro", - "n": 64, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 2.6226043701171875e-06 - ], - "worst_mean_abs": 2.6226043701171875e-06, - "worst_max_relative": 4.522492546885128e-09, - "worst_tolerance_ratio": 4.5217128100435517e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.688496165807578e-07, - 1.0005651631672663e-06 - ], - "worst_mean_abs": 2.488865072612645e-07, - "worst_max_relative": 0.000154453511687136, - "worst_tolerance_ratio": 0.0616950774446536 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.3667633777525445e-06, - 6.373700600192933e-06 - ], - "worst_mean_abs": 2.2479957339875214e-06, - "worst_max_relative": 1.8029040808023728e-05, - "worst_tolerance_ratio": 0.12243626772396692 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.4010382973288155e-09, - 1.755465682887203e-08 - ], - "worst_mean_abs": 7.807307774415918e-09, - "worst_max_relative": 1.50052539844941e-05, - "worst_tolerance_ratio": 0.0014112738018110813 - } - } - }, - { - "model": "Pro", - "n": 64, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 3.0994415283203125e-06 - ], - "worst_mean_abs": 3.0994415283203125e-06, - "worst_max_relative": 5.344763894874406e-09, - "worst_tolerance_ratio": 5.343842387706332e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.300232389122584e-07, - 1.0514475032863402e-06 - ], - "worst_mean_abs": 2.6113323731147275e-07, - "worst_max_relative": 0.00017563261135087222, - "worst_tolerance_ratio": 0.07015487987769255 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.116972372927627e-06, - 7.71725503234677e-06 - ], - "worst_mean_abs": 2.785421257034404e-06, - "worst_max_relative": 1.6533923579532577e-05, - "worst_tolerance_ratio": 0.1122821898075178 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.2444712061142624e-09, - 2.125511884554232e-08 - ], - "worst_mean_abs": 9.874388273625051e-09, - "worst_max_relative": 1.289334711099723e-05, - "worst_tolerance_ratio": 0.0017273932610432762 - } - } - }, - { - "model": "Pro", - "n": 64, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9802322387695312e-08, - 3.0100345611572266e-06 - ], - "worst_mean_abs": 3.0100345611572266e-06, - "worst_max_relative": 5.1896093782334826e-09, - "worst_tolerance_ratio": 5.1887147904010125e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.762762065903871e-07, - 1.0448454172973243e-06 - ], - "worst_mean_abs": 2.6035555022660417e-07, - "worst_max_relative": 0.0001570453217049622, - "worst_tolerance_ratio": 0.06976879806235865 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.721472321469797e-06, - 7.928070596463499e-06 - ], - "worst_mean_abs": 2.343582019787633e-06, - "worst_max_relative": 1.314665606591251e-05, - "worst_tolerance_ratio": 0.08927939747581534 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.41465599199009e-09, - 2.1835754038246336e-08 - ], - "worst_mean_abs": 8.867715026386122e-09, - "worst_max_relative": 1.1413206530463464e-05, - "worst_tolerance_ratio": 0.0017658764292438072 - } - } - }, - { - "model": "Pro", - "n": 64, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 4.112720489501953e-06 - ], - "worst_mean_abs": 4.112720489501953e-06, - "worst_max_relative": 7.090753394402829e-09, - "worst_tolerance_ratio": 7.089531086279943e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.097694740248016e-07, - 1.2420960784353952e-06 - ], - "worst_mean_abs": 2.5948061258459126e-07, - "worst_max_relative": 0.0002078401348765092, - "worst_tolerance_ratio": 0.07848616207961301 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1902146457298812e-06, - 6.365343558911718e-06 - ], - "worst_mean_abs": 2.5610812921208727e-06, - "worst_max_relative": 1.775710232290522e-05, - "worst_tolerance_ratio": 0.12058891956353995 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.3121738204623377e-09, - 1.7531639587980985e-08 - ], - "worst_mean_abs": 8.637307409463767e-09, - "worst_max_relative": 1.5286664639320423e-05, - "worst_tolerance_ratio": 0.0014299946183736045 - } - } - }, - { - "model": "Pro", - "n": 64, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9802322387695312e-08, - 4.023313522338867e-06 - ], - "worst_mean_abs": 4.023313522338867e-06, - "worst_max_relative": 6.937914660178055e-09, - "worst_tolerance_ratio": 6.936718472992541e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.49342002950948e-07, - 1.9088921821008853e-06 - ], - "worst_mean_abs": 4.104918905530515e-07, - "worst_max_relative": 0.00030073922668643184, - "worst_tolerance_ratio": 0.11726955656199457 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.213546985929682e-06, - 1.3288804643352137e-05 - ], - "worst_mean_abs": 3.360725938508471e-06, - "worst_max_relative": 1.6818499385015776e-05, - "worst_tolerance_ratio": 0.11541710669479967 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.549180285852745e-09, - 3.6600464912300845e-08 - ], - "worst_mean_abs": 1.0512492438979776e-08, - "worst_max_relative": 1.3879959843296357e-05, - "worst_tolerance_ratio": 0.0029901496599729666 - } - } - }, - { - "model": "Pro", - "n": 64, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 4.500150680541992e-06 - ], - "worst_mean_abs": 4.500150680541992e-06, - "worst_max_relative": 7.760186027310269e-09, - "worst_tolerance_ratio": 7.758848069791656e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.694055431135439e-07, - 1.897807413442365e-06 - ], - "worst_mean_abs": 4.0320700836019946e-07, - "worst_max_relative": 0.0003028601905305742, - "worst_tolerance_ratio": 0.128319062920667 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.129881760737362e-06, - 1.327322125987962e-05 - ], - "worst_mean_abs": 3.0737285930516734e-06, - "worst_max_relative": 2.1197254101867084e-05, - "worst_tolerance_ratio": 0.14395101210017142 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.870078614688245e-09, - 3.65575446407973e-08 - ], - "worst_mean_abs": 1.076947280718955e-08, - "worst_max_relative": 1.9299542793057537e-05, - "worst_tolerance_ratio": 0.002986643200818697 - } - } - }, - { - "model": "Pro", - "n": 64, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 3.635883331298828e-06 - ], - "worst_mean_abs": 3.635883331298828e-06, - "worst_max_relative": 6.268637063973441e-09, - "worst_tolerance_ratio": 6.267556472732592e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.872166344289553e-07, - 1.1671207111874082e-06 - ], - "worst_mean_abs": 2.586842571851433e-07, - "worst_max_relative": 0.00020567706074957497, - "worst_tolerance_ratio": 0.08654445754001032 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.499544235096579e-07, - 7.126769546061951e-06 - ], - "worst_mean_abs": 2.8240560454337625e-06, - "worst_max_relative": 2.240812587904599e-05, - "worst_tolerance_ratio": 0.15217400945873508 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.889928172605254e-10, - 1.9628784205666383e-08 - ], - "worst_mean_abs": 1.0324958575396934e-08, - "worst_max_relative": 2.0425068195041572e-05, - "worst_tolerance_ratio": 0.0015786812437780847 - } - } - }, - { - "model": "Pro", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 7.12275505065918e-06 - ], - "worst_mean_abs": 7.12275505065918e-06, - "worst_max_relative": 1.535558534169057e-09, - "worst_tolerance_ratio": 1.5355254305572864e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.576752588140835e-07, - 1.2281044208251046e-06 - ], - "worst_mean_abs": 2.367302973371732e-07, - "worst_max_relative": 0.0033962597714922776, - "worst_tolerance_ratio": 0.08957289998000123 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.5147943201762075e-06, - 2.1660835486159158e-05 - ], - "worst_mean_abs": 8.955624374627922e-06, - "worst_max_relative": 3.769365576609372e-05, - "worst_tolerance_ratio": 0.2729805447207528 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.114540369717698e-09, - 7.45737361793064e-09 - ], - "worst_mean_abs": 3.626988874223889e-09, - "worst_max_relative": 2.70958655516476e-05, - "worst_tolerance_ratio": 0.0006061566337325134 - } - } - }, - { - "model": "Pro", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9802322387695312e-08, - 8.165836334228516e-06 - ], - "worst_mean_abs": 8.165836334228516e-06, - "worst_max_relative": 1.7604311228549021e-09, - "worst_tolerance_ratio": 1.7603931714338762e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.544495440077071e-07, - 1.3003742784789551e-06 - ], - "worst_mean_abs": 2.433386927180002e-07, - "worst_max_relative": 0.00370881190888481, - "worst_tolerance_ratio": 0.07696327320957047 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.975478726214732e-06, - 1.7980439707798723e-05 - ], - "worst_mean_abs": 6.964719292117887e-06, - "worst_max_relative": 3.88064961458411e-05, - "worst_tolerance_ratio": 0.28104283383259954 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.997253580249454e-10, - 6.190290155472233e-09 - ], - "worst_mean_abs": 2.8201696906331123e-09, - "worst_max_relative": 3.0517400075554895e-05, - "worst_tolerance_ratio": 0.0005031644646046572 - } - } - }, - { - "model": "Pro", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.384185791015625e-07, - 8.165836334228516e-06 - ], - "worst_mean_abs": 8.165836334228516e-06, - "worst_max_relative": 1.7604311200951038e-09, - "worst_tolerance_ratio": 1.760393168674197e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.434803326906604e-07, - 1.2891272938020393e-06 - ], - "worst_mean_abs": 2.3701967932559728e-07, - "worst_max_relative": 0.004445660054855727, - "worst_tolerance_ratio": 0.07794902742189604 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.4945092304283776e-06, - 1.5322660473771066e-05 - ], - "worst_mean_abs": 8.65937363957952e-06, - "worst_max_relative": 3.245924575414504e-05, - "worst_tolerance_ratio": 0.24862768555982143 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.061008548692183e-10, - 5.275272229460226e-09 - ], - "worst_mean_abs": 3.3281194893243745e-09, - "worst_max_relative": 1.777806110928477e-05, - "worst_tolerance_ratio": 0.0004284302835379078 - } - } - }, - { - "model": "Pro", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 7.539987564086914e-06 - ], - "worst_mean_abs": 7.539987564086914e-06, - "worst_max_relative": 1.625507569956708e-09, - "worst_tolerance_ratio": 1.6254725272212222e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.076244775168107e-07, - 1.5195523195288274e-06 - ], - "worst_mean_abs": 2.3866009174275626e-07, - "worst_max_relative": 0.005405906946654774, - "worst_tolerance_ratio": 0.09230084116887002 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.3652813486995115e-06, - 1.891471632120556e-05 - ], - "worst_mean_abs": 8.586179844116693e-06, - "worst_max_relative": 2.8012208135760616e-05, - "worst_tolerance_ratio": 0.20651552488716088 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.447033147078066e-10, - 6.51194209666528e-09 - ], - "worst_mean_abs": 3.2346261699035066e-09, - "worst_max_relative": 2.4068683410404667e-05, - "worst_tolerance_ratio": 0.000530263496296573 - } - } - }, - { - "model": "Pro", - "n": 512, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9802322387695312e-08, - 9.059906005859375e-06 - ], - "worst_mean_abs": 9.059906005859375e-06, - "worst_max_relative": 1.9531790525757608e-09, - "worst_tolerance_ratio": 1.9531369458898076e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.428170579222183e-07, - 1.6497713382079837e-06 - ], - "worst_mean_abs": 2.422898338375736e-07, - "worst_max_relative": 0.005169339914793636, - "worst_tolerance_ratio": 0.10245559618495009 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.4501980202540352e-06, - 2.0536486857736236e-05 - ], - "worst_mean_abs": 8.182635733982529e-06, - "worst_max_relative": 3.856703373854477e-05, - "worst_tolerance_ratio": 0.279305619586037 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.848777862851526e-10, - 7.070283847970815e-09 - ], - "worst_mean_abs": 3.0359155135010474e-09, - "worst_max_relative": 2.8521296126945394e-05, - "worst_tolerance_ratio": 0.0005746928364611155 - } - } - } - ] -} \ No newline at end of file diff --git a/doc/development/ecs-edge-cohort-multimodel-summary.md b/doc/development/ecs-edge-cohort-multimodel-summary.md deleted file mode 100644 index 1653f68ec0..0000000000 --- a/doc/development/ecs-edge-cohort-multimodel-summary.md +++ /dev/null @@ -1,54 +0,0 @@ -> Historical baseline668b60cc, completed117-process archive (102 complete/15 OOM), finalized2026-10-26. This is not the newer master2ba617bc comparison; see ecs-validation-20261025/REPORT.md. - -# ECS 精度验收汇总(2026-10-19) - -> 以精度为先;下表数值为最差误差÷容差,≤1才满足该项既定判据。未满3个进程注明未齐。OOM不是PASS。 - -已记录117个进程,其中102个完整执行;标准矩阵108进程,加真实Neo分批9进程,共计划117。此轮不是性能测试。 - -## 模型与尺寸总表 - -| 模型 | 原子数 | Torch自身 | BASE自身 | PR候选自身 | PR vs BASE | PR vs Torch | PR实际路线 | -| --- | ---: | ---: | ---: | ---: | ---: | ---: | --- | -| Neo | 512 | 0.685 | 0.714 | 0.863 | 0.959 | 1.030 | single(非8192运行时分批) | -| Neo | 1000 | 0.498 | 0.551 | 0.502 | 0.594 | 0.570 | single(非8192运行时分批) | -| Neo | 4096 | OOM/缺参照 | 2.854 | 2.854 | 3.239 | OOM/缺参照 | single(非8192运行时分批) | -| Nano | 512 | 8.177 | 5.504 | 5.704 | 6.556 | 8.634 | 回退原生,不能算ECS验证 | -| Nano | 1000 | 7.570 | 9.229 | 6.968 | 8.142 | 8.053 | 回退原生,不能算ECS验证 | -| Nano | 4096 | 2.816 | 2.557 | 2.127 | 2.438 | 3.052 | 回退原生,不能算ECS验证 | -| Mini | 512 | 2.326 | 1.541 | 2.770 | 2.164 | 2.636 | 回退原生,不能算ECS验证 | -| Mini | 1000 | 0.800 | 0.726 | 1.328 | 1.286 | 1.028 | 回退原生,不能算ECS验证 | -| Mini | 4096 | 18.006 | 8.724 | 8.598 | 10.488 | 14.464 | 回退原生,不能算ECS验证 | -| Pro | 64 | 0.130 | 0.122 | 0.121 | 0.152 | 0.144 | 回退原生,不能算ECS验证 | -| Pro | 512 | OOM/缺参照 | 0.281 | 0.249 | 0.279 | OOM/缺参照 | 回退原生,不能算ECS验证 | -| Pro | 4096 | OOM/缺参照 | OOM/缺参照 | OOM/缺参照 | OOM/缺参照 | OOM/缺参照 | 回退原生,不能算ECS验证 | - -## 真正8192边运行时分批:与PR单批路径分开 - -| 模型 | 原子数 | 自身 | 对BASE | 对Torch | 对PR单批 | 已观察真实cohort | -| --- | ---: | ---: | ---: | ---: | ---: | --- | -| Neo | 512 | 1.052 | 1.047 | 1.037 | 1.104 | [(80898, 8192, 10)] | -| Neo | 1000 | 0.416 | 0.603 | 0.544 | 0.511 | [(158002, 8192, 20)] | -| Neo | 4096 | 3.002 | 3.527 | OOM/缺参照 | 3.168 | [(647170, 8192, 80)] | - -## 4096原子位力最大绝对误差范围(eV) - -范围是各对输出max_abs的min~max,非置信区间;所有比较仅对同一帧进行。 - -| 模型 | Torch自身 | BASE自身 | PR自身 | PR vs BASE | PR vs Torch | -| --- | --- | --- | --- | --- | --- | -| Neo | OOM/缺参照 | 2.275e-05 ~ 2.513e-04 | 2.126e-05 ~ 1.705e-04 | 2.113e-05 ~ 2.482e-04 | OOM/缺参照 | -| Nano | 9.505e-05 ~ 6.979e-04 | 5.914e-05 ~ 4.544e-04 | 6.502e-05 ~ 7.514e-04 | 7.473e-05 ~ 6.500e-04 | 9.420e-05 ~ 1.060e-03 | -| Mini | 5.062e-05 ~ 4.385e-04 | 4.477e-05 ~ 3.680e-04 | 3.166e-05 ~ 3.210e-04 | 4.190e-05 ~ 3.580e-04 | 7.984e-04 ~ 1.493e-03 | -| Pro | OOM/缺参照 | OOM/缺参照 | OOM/缺参照 | OOM/缺参照 | OOM/缺参照 | - -## 必须保留的限制 - -- 判据仍为逐元素atol=1e-5、rtol=1e-4,finite必需;relative分母max(abs(ref),1e-8)。不因BASE自身波动自动放宽。所有输出误差详情见ACCURACY_TABLE.md与pair_details.json。 -- Torch是关闭Triton的编译路径,不是无限精度真值。Neo4096该路径三次OOM,因此不能宣称该规模对Torch参照通过。 -- BASE固定PR原基线668b60cc;当前远端master4f78c2d0不属于本矩阵。原模型权重不改、TF32/AMP关闭;不混合FP16x3。 -- 非Neo模型的PR候选是安全回退,不是多模型ECS性能成果。ECS_RUNTIME实验只在独立进程把分支阈值置0,不改PR源文件;真实调用计数确认实际分批。 -- Pro是官方登记的Pro-MPtrj,不是OMat24-Pro;官方MD5/HF SHA256匹配。旧fitting type只在读取时兼容映射,严格权重检查零缺失;三路同样处理,见models/pro_mptrj/COMPATIBILITY.md。 -- 本轮只有碳晶胞/三帧扰动的实现等价性测试,不是DFT预测准确率、所有化学体系或完整MD轨迹验收。 -- 能量/位力eV、力eV/Å、stress eV/ų。相同数值atol跨单位不是相同物理精度;stress通过不能覆盖virial失败。任何阈值调整需事前约定,本轮未调整。 -- 九次调用包含首次编译,用于误差样本,不报稳态P50或加速比。详见SCIENCE_AND_PROTOCOL.md;原始NPZ逐次保留。 diff --git a/doc/development/ecs-edge-cohort-multimodel-update.md b/doc/development/ecs-edge-cohort-multimodel-update.md deleted file mode 100644 index b011945994..0000000000 --- a/doc/development/ecs-edge-cohort-multimodel-update.md +++ /dev/null @@ -1,64 +0,0 @@ -> **2026-10-26 status update:** the old-base matrix is now complete (117 processes,102 complete,15 OOM); earlier pending-Pro statements below describe the historical publication snapshot. The new135-process master2ba617bc comparison is in [ecs-validation-20261025](ecs-validation-20261025/README.md). Neither matrix establishes general production acceptance. - -# ECS multi-model and N4096 follow-up (2026-10-19) - -This is a measurement update for the default-off Draft PR, not a claim of multi-model production acceptance. The production implementation is unchanged from PR head `9e2e4c5de1b90cf2d6bc8b2706bc103a06778dae`; BASE is pinned to `668b60cc2a9559f79abb9c33acd959833376344f`, not subsequent upstream master. - -## Read the results by execution path - -- **PR candidate:** unmodified current PR code. In the measured Neo make_fx/AOT deployment graphs, the small-edge single-cohort branch is specialized even for N4096. Those runs are **not** evidence of an 8192-edge workspace bound at large E. -- **ECS_RUNTIME diagnostic:** separate processes set `SINGLE_COHORT_MAX_EDGES=0` before compilation, without editing production files. Runtime instrumentation confirms `(E, capacity, batches)` of `(80898,8192,10)`, `(158002,8192,20)` and `(647170,8192,80)`. At N4096 the final batch contains two edges. This override is not a fix submitted in the PR. -- **Nano, Mini, Pro:** the Neo-specific eligibility guard falls back to the native implementation. These are compatibility/repeatability observations, **not evidence of ECS acceleration or of generalized ECS support**. - -The associated [snapshot](ecs-edge-cohort-multimodel-summary.md), [full accuracy table](ecs-edge-cohort-multimodel-accuracy.md), and [machine-readable summary](ecs-edge-cohort-multimodel-results.json) retain incomplete runs and OOM explicitly. Pro measurements are still in progress at this snapshot; no pending cell is a pass. - -## Protocol and scientific gate - -RTX 5090; PyTorch 2.11.0+cu128, Triton 3.6.0; strict level-2 FP32 mixing, TF32/AMP disabled. Normal ASE energy/forces/virial/stress evaluation, diamond carbon at 3.567 Angstrom, seed0 and three 0.02-Angstrom-perturbed frames. Neo/Nano/Mini use N512/1000/4096; Pro uses N64/512/4096. For each model/size/mode: three independent processes, three frames, three repeats per frame. Completed groups therefore retain 27 evaluations per mode. Every comparison uses the same frame; inputs and model identity are checked. All modes for a model/size use the same physical GPU. - -TORCH means the normal compiled path with `DP_TRITON_INFER=0`, not eager execution or an exact reference. BASE uses level2; PR candidate additionally enables `DP_SO2_EDGE_COHORT_INFER=1`. Each model/mode has its own cache reused by subsequent repeats; this is not a latency study with matched autotune selections. The short user-requested pause does not become a timing sample. - -Every output must be finite and satisfy `abs(candidate-reference) <= 1e-5 + 1e-4*abs(reference)`. Max-relative uses `max(abs(reference),1e-8)`. Summary ratios are worst elementwise error/tolerance; <=1 is within the criterion. Full tables include energy, force, virial and stress separately and distinguish within-process repeats from across-process repeats. Ranges are min/max of pairwise max-absolute error, not confidence intervals. BASE or TORCH self-failure does **not** turn a candidate failure into a pass. All-pairs comparisons are descriptive, not independent statistical replicates. - -The N4096 Neo compiled TORCH path OOMed in all three processes. BASE self-repeat worst ratio is 2.854, PR self-repeat 2.854, PR-vs-BASE 3.239; actual runtime batching-vs-BASE is 3.527. Thus **N4096 is not accepted under the fixed criterion**. Existing fluctuations complicate attribution, but do not establish that the candidate is harmless. No threshold was relaxed. - -Energy and virial are in eV, force in eV/Angstrom, stress in eV/Angstrom^3; identical numerical tolerances across units are not equivalent physical tolerances. This is implementation-equivalence testing on perturbed carbon crystals, not DFT predictive-accuracy or long-MD validation. - -## N4096 historical performance, not a current-PR speed claim - -The following is explicitly the **2026-10-18 runtime prototype**, each arm one GPU0 process, 8 warmups and 30 synchronized wall-clock samples through the normal full API, plus separate memory replay. First/JIT execution is excluded from steady timing and included in the full memory window. Decimal GB=1e9 bytes. It is not the controlled N64 latency study and not a new performance measurement of the current PR. - -| Strategy | Frame P50 ms | Time reduction | Steady allocated GB | Steady reduction | Full-window peak including first GB | Full-peak reduction | -| --- | ---: | ---: | ---: | ---: | ---: | ---: | -| Historical BASE | 156.495125 | — | 23.970400 | — | 24.061593 | — | -| Historical runtime ECS prototype | 152.996582 | 2.2356% | 22.256657 | 7.1494% | 22.256657 | 7.5013% | - -BASE/candidate P90: 156.614295/153.179559 ms. Candidate first-call-only allocated peak is 22.255608 GB; the full window is slightly higher at 22.256657 GB and is the primary capacity value above. The historical third-frame virial check failed (error/tolerance 1.394), and TORCH OOMed. These are **unaccepted historical observations**, not a stable speedup claim or a substitute for new precision/latency acceptance. The newer multi-process results further prohibit treating this historical row as accepted. - -[Historical per-call timing, memory and accuracy JSON](ecs-edge-cohort-n4096-historical-results.json) contains both original result objects and the aggregate row. It is deliberately separate from the current accuracy snapshot. - -## Model identity - -- Neo: `DPA4-Neo-OMat24-v20260627.pt`, SHA256 `8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d`. -- Nano/Mini: official OMat24 v20260805 checkpoints; exact SHA256 and loaded parameter counts are retained in the machine-readable snapshot. -- Pro: **DPA-4.0.1-Pro-MPtrj v2026.06.05**, not OMat24-Pro. [Official registry](https://github.com/janosh/matbench-discovery/blob/main/models/deepmd/dpa-4.0.1-pro-mptrj.yml), [official record](https://doi.org/10.6084/m9.figshare.32647224). Downloaded mirror revision `452f673645030b1daeda91c75cf6e1b1c346ee5f` of `JinukMoon/oh-my-mlip-mirror-dpa4`; 273318000 bytes, official MD5 `2174bb3095b197489f978d31393c1e06`, SHA256 `446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221`, both verified. -- Pro's legacy checkpoint fitting type `ener` is unsupported by the current reader. All three modes apply the same **in-memory metadata-only** alias `ener -> dpa4_ener`, referring to the same historical SeZMEnergyFittingNet class; tensor contents and original file are unchanged. Strict CPU state loading has zero missing/unexpected keys. Therefore Pro BASE is the native computation with disclosed reader compatibility, not proof that the unmodified default reader loads this checkpoint directly. - -## Reproduction and limitations of published evidence - -The public benchmark already provides normal API runs for the three primary modes. For example, from the candidate checkout, with a prebuilt compatible CUDA installation, an idle selected GPU and separate output/cache directories: - -```bash -python source/tests/pt_expt/kernels/benchmark_so2_edge_cohort.py \ - --source-root /absolute/path/to/base-checkout --model /absolute/path/to/neo.pt \ - --mode base --gpu 0 --nrep 8 --warmup 8 --samples 30 \ - --out /absolute/path/to/new-base-output --cache-dir /absolute/path/to/new-base-cache -python source/tests/pt_expt/kernels/benchmark_so2_edge_cohort.py \ - --source-root /absolute/path/to/candidate-checkout --model /absolute/path/to/neo.pt \ - --mode ecs --gpu 0 --nrep 8 --warmup 8 --samples 30 \ - --out /absolute/path/to/new-ecs-output --cache-dir /absolute/path/to/new-ecs-cache -``` - -`nrep=2,4,5,8` corresponds to diamond N64,512,1000,4096. Use `--mode torch` for the compiled TORCH reference. Repeat independently with fresh outputs; do not compare across cards or source revisions. These commands exercise the current PR's deployment route and **do not force runtime batching**, and are not an exact replay of the new three-frame/repeat all-pairs matrix. Generated graph route inspection is mandatory. - -This supplement publishes complete aggregate metrics/route counts and the historical per-call result objects, not model weights, compiler caches, full matrix output-array archives or its independent orchestration harness. Therefore it does not claim that the original full matrix can be audited end-to-end from GitHub alone yet. Existing focused unit tests do not replace full-model numerical acceptance or PT2/C++ deployment validation. Keep this PR Draft and default-off; dynamic dispatch correction, unresolved accuracy failures and portable full-matrix reproduction remain gates. diff --git a/doc/development/ecs-edge-cohort-n4096-historical-results.json b/doc/development/ecs-edge-cohort-n4096-historical-results.json deleted file mode 100644 index fc93180ad3..0000000000 --- a/doc/development/ecs-edge-cohort-n4096-historical-results.json +++ /dev/null @@ -1 +0,0 @@ -{"label": "2026-10-18 historical prototype; not current PR accepted performance", "metrics": [{"label": "N4096 GPU0", "bases": ["model_n4096_BASE_r0"], "candidates": ["model_n4096_SPLIT_r0"], "base": {"p50": 156.49512538220733, "p90": 156.6142953466624, "complete": 24061592576, "first": 24061592576, "steady": 23970400256}, "candidate": {"p50": 152.99658162984997, "p90": 153.1795586925, "complete": 22256656896, "first": 22255608320, "steady": 22256656896}, "time_reduction_pct": 2.235560848181617, "throughput_increase_pct": 2.2866809931881393, "peak_reduction_pct": 7.501314280420135}], "base": {"variant": "BASE", "n_atoms": 4096, "status": "completed", "first_ms": 127721.33345692419, "wall_ms": {"median": 156.49512538220733, "p90": 156.6142953466624, "min": 156.24970709905028, "max": 156.7487590946257, "samples": [156.6109189298004, 156.6446830984205, 156.6600319929421, 156.5163000486791, 156.5106299240142, 156.38837916776538, 156.33732313290238, 156.52387496083975, 156.60078101791441, 156.53209085576236, 156.48909914307296, 156.39495220966637, 156.56973188742995, 156.49431897327304, 156.4414391759783, 156.60207299515605, 156.4169730991125, 156.50827600620687, 156.49593179114163, 156.46439278498292, 156.32704296149313, 156.4743521157652, 156.4188168849796, 156.34497697465122, 156.7487590946257, 156.57230583019555, 156.5067518968135, 156.24970709905028, 156.46444307640195, 156.38035396113992]}, "event_elapsed_ms": {"median": 156.46929168701172, "p90": 156.5800567626953, "min": 156.22454833984375, "max": 156.7229766845703, "samples": [156.55673217773438, 156.6096649169922, 156.6345977783203, 156.49026489257812, 156.48431396484375, 156.36288452148438, 156.31173706054688, 156.49862670898438, 156.57498168945312, 156.5063934326172, 156.463623046875, 156.36764526367188, 156.54428100585938, 156.46847534179688, 156.41448974609375, 156.57676696777344, 156.3907470703125, 156.48294067382812, 156.47010803222656, 156.4393310546875, 156.30213928222656, 156.44851684570312, 156.39334106445312, 156.31983947753906, 156.7229766845703, 156.54534912109375, 156.4803466796875, 156.22454833984375, 156.43887329101562, 156.35494995117188]}, "event_scope": "entire API call on default stream; includes host gaps, not kernel-sum", "throughput_atoms_per_s": 26173.339201437473, "memory": {"before": {"allocated": 5105152, "reserved": 10485760}, "first": {"allocated": 24061592576, "reserved": 25612517376}, "complete": {"allocated": 24061592576, "reserved": 25612517376}, "steady": {"allocated": 23970400256, "reserved": 25612517376}}, "accuracy": {}, "precision_pass": null, "finite": true, "repeat_noise": [{"0_energy": {"passed": true, "finite": true, "max_abs": 2.9265880584716797e-05, "mean_abs": 2.9265880584716797e-05, "max_relative": 7.886113191931168e-10, "max_ratio": 7.886091941720186e-06, "bitwise_equal": false}, "0_forces": {"passed": true, "finite": true, "max_abs": 4.884153433692973e-06, "mean_abs": 9.149693440342201e-07, "max_relative": 0.00889732273496248, "max_ratio": 0.2910700292909392, "bitwise_equal": false}, "0_virial": {"passed": true, "finite": true, "max_abs": 5.8138769023940995e-05, "mean_abs": 2.451276976723883e-05, "max_relative": 8.539738394836927e-06, "max_ratio": 0.08416117881003406, "bitwise_equal": false}, "0_stress": {"passed": true, "finite": true, "max_abs": 2.17191859625248e-09, "mean_abs": 1.0305605540217744e-09, "max_relative": 7.413133353615878e-06, "max_ratio": 0.0002165573843127067, "bitwise_equal": false}, "1_energy": {"passed": true, "finite": true, "max_abs": 2.7418136596679688e-05, "mean_abs": 2.7418136596679688e-05, "max_relative": 7.388215798445052e-10, "max_ratio": 7.388195889876355e-06, "bitwise_equal": false}, "1_forces": {"passed": true, "finite": true, "max_abs": 5.104048616644263e-06, "mean_abs": 9.041639133447527e-07, "max_relative": 0.004201276226914469, "max_ratio": 0.3953098166826058, "bitwise_equal": false}, "1_virial": {"passed": true, "finite": true, "max_abs": 6.962561059253858e-05, "mean_abs": 2.107040639979611e-05, "max_relative": 5.43448615477429e-06, "max_ratio": 0.052840692037927565, "bitwise_equal": false}, "1_stress": {"passed": true, "finite": true, "max_abs": 2.996330586424456e-09, "mean_abs": 1.1047521660612597e-09, "max_relative": 4.99864983666676e-06, "max_ratio": 0.0002560513501337903, "bitwise_equal": false}, "2_energy": {"passed": true, "finite": true, "max_abs": 6.318092346191406e-06, "mean_abs": 6.318092346191406e-06, "max_relative": 1.7025891569317975e-10, "max_ratio": 1.7025845688348422e-06, "bitwise_equal": false}, "2_forces": {"passed": true, "finite": true, "max_abs": 4.345201946698296e-06, "mean_abs": 8.973631530350161e-07, "max_relative": 0.009160570898173351, "max_ratio": 0.2585237591083319, "bitwise_equal": false}, "2_virial": {"passed": false, "finite": true, "max_abs": 4.878430729604588e-05, "mean_abs": 3.48720067884963e-05, "max_relative": 0.00033190783739215886, "max_ratio": 1.951259215314597, "bitwise_equal": false}, "2_stress": {"passed": true, "finite": true, "max_abs": 2.0994273645935646e-09, "mean_abs": 1.573438653265807e-09, "max_relative": 0.00030282239781688844, "max_ratio": 0.00018589707072300967, "bitwise_equal": false}}, {"0_energy": {"passed": true, "finite": true, "max_abs": 1.5735626220703125e-05, "mean_abs": 1.5735626220703125e-05, "max_relative": 4.24019120706686e-10, "max_ratio": 4.2401797812915054e-06, "bitwise_equal": false}, "0_forces": {"passed": true, "finite": true, "max_abs": 4.3063727730441315e-06, "mean_abs": 9.188343195349852e-07, "max_relative": 0.006987951957098469, "max_ratio": 0.3120841199726096, "bitwise_equal": false}, "0_virial": {"passed": true, "finite": true, "max_abs": 6.109445045909823e-05, "mean_abs": 3.24522909918517e-05, "max_relative": 1.8795819182412397e-05, "max_ratio": 0.18234821568949947, "bitwise_equal": false}, "0_stress": {"passed": true, "finite": true, "max_abs": 2.5286423024364034e-09, "mean_abs": 1.3836886305613391e-09, "max_relative": 1.807701579455256e-05, "max_ratio": 0.00025251101374019124, "bitwise_equal": false}, "1_energy": {"passed": true, "finite": true, "max_abs": 3.445148468017578e-05, "mean_abs": 3.445148468017578e-05, "max_relative": 9.28345376413313e-10, "max_ratio": 9.283428748583768e-06, "bitwise_equal": false}, "1_forces": {"passed": true, "finite": true, "max_abs": 4.32300487318571e-06, "mean_abs": 9.033382835171473e-07, "max_relative": 0.01992064925111337, "max_ratio": 0.31270697386062474, "bitwise_equal": false}, "1_virial": {"passed": true, "finite": true, "max_abs": 7.120987754660746e-05, "mean_abs": 3.692904697663282e-05, "max_relative": 2.6659592549725727e-05, "max_ratio": 0.2564222778183442, "bitwise_equal": false}, "1_stress": {"passed": true, "finite": true, "max_abs": 3.0645093442027704e-09, "mean_abs": 1.7591220708337056e-09, "max_relative": 2.5538060802868567e-05, "max_ratio": 0.0002767056309370525, "bitwise_equal": false}, "2_energy": {"passed": true, "finite": true, "max_abs": 1.8298625946044922e-05, "mean_abs": 1.8298625946044922e-05, "max_relative": 4.931083690359074e-10, "max_ratio": 4.931070402191477e-06, "bitwise_equal": false}, "2_forces": {"passed": true, "finite": true, "max_abs": 4.929079365112443e-06, "mean_abs": 9.045929155445032e-07, "max_relative": 0.01990776395603181, "max_ratio": 0.34067505914575524, "bitwise_equal": false}, "2_virial": {"passed": true, "finite": true, "max_abs": 4.2985089976355084e-05, "mean_abs": 1.5045866729130392e-05, "max_relative": 4.8285469002276166e-05, "max_ratio": 0.283868622467302, "bitwise_equal": false}, "2_stress": {"passed": true, "finite": true, "max_abs": 1.8498586794313265e-09, "mean_abs": 7.57343633627384e-10, "max_relative": 3.625686855444034e-05, "max_ratio": 0.0001579067987562571, "bitwise_equal": false}}, {"0_energy": {"passed": true, "finite": true, "max_abs": 1.138448715209961e-05, "mean_abs": 1.138448715209961e-05, "max_relative": 3.067714092991554e-10, "max_ratio": 3.067705826616203e-06, "bitwise_equal": false}, "0_forces": {"passed": true, "finite": true, "max_abs": 4.337393775699638e-06, "mean_abs": 9.153347373364882e-07, "max_relative": 0.003453387066208108, "max_ratio": 0.3243502877882624, "bitwise_equal": false}, "0_virial": {"passed": true, "finite": true, "max_abs": 5.974733539915178e-05, "mean_abs": 1.7404405973901287e-05, "max_relative": 7.671207762715631e-06, "max_ratio": 0.07442245715065961, "bitwise_equal": false}, "0_stress": {"passed": true, "finite": true, "max_abs": 2.571220087538295e-09, "mean_abs": 8.507799138810654e-10, "max_relative": 6.457081150393548e-06, "max_ratio": 0.00021996820202594585, "bitwise_equal": false}, "1_energy": {"passed": true, "finite": true, "max_abs": 7.867813110351562e-06, "mean_abs": 7.867813110351562e-06, "max_relative": 2.1200967073798844e-10, "max_ratio": 2.1200909944862587e-06, "bitwise_equal": false}, "1_forces": {"passed": true, "finite": true, "max_abs": 4.462131720117668e-06, "mean_abs": 8.939192206212782e-07, "max_relative": 0.006532996118553083, "max_ratio": 0.2969028415738903, "bitwise_equal": false}, "1_virial": {"passed": true, "finite": true, "max_abs": 8.251958126948011e-05, "mean_abs": 4.200807418936531e-05, "max_relative": 2.3517496601978674e-05, "max_ratio": 0.22620042774300894, "bitwise_equal": false}, "1_stress": {"passed": true, "finite": true, "max_abs": 3.551221216396838e-09, "mean_abs": 2.001896538951505e-09, "max_relative": 2.331850128288378e-05, "max_ratio": 0.00030346951407896554, "bitwise_equal": false}, "2_energy": {"passed": true, "finite": true, "max_abs": 2.6881694793701172e-05, "mean_abs": 2.6881694793701172e-05, "max_relative": 7.244034997889063e-10, "max_ratio": 7.244015476835036e-06, "bitwise_equal": false}, "2_forces": {"passed": true, "finite": true, "max_abs": 4.435662745549962e-06, "mean_abs": 8.951618996311229e-07, "max_relative": 0.008627904809941005, "max_ratio": 0.3208832000069531, "bitwise_equal": false}, "2_virial": {"passed": true, "finite": true, "max_abs": 6.991453687987814e-05, "mean_abs": 2.1630571821671137e-05, "max_relative": 8.316946456667983e-05, "max_ratio": 0.48895044048911596, "bitwise_equal": false}, "2_stress": {"passed": true, "finite": true, "max_abs": 3.00876450143317e-09, "mean_abs": 1.153982387823025e-09, "max_relative": 6.545378981810836e-05, "max_ratio": 0.0002568327926427503, "bitwise_equal": false}}], "wrappers": ["/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/megakernel_20261018/results/model_n4096_BASE_r0/inductor/cn/ccnwp66p5csppow52lqfxt6bvq23uclugz3vo2xshmrimvm4d7nm.py"], "pbs_calls": 0, "gpu_end": "index, name, uuid, driver_version, clocks.current.sm [MHz], clocks.current.memory [MHz], temperature.gpu, power.draw [W]\n0, NVIDIA GeForce RTX 5090, GPU-8a1f47f6-0655-97e5-8ed5-433be97af788, 595.91.07, 2520 MHz, 13801 MHz, 54, 553.00 W\n1, NVIDIA GeForce RTX 5090, GPU-fcc63da0-f1b3-74c7-f868-681a40ef5f03, 595.91.07, 2392 MHz, 13801 MHz, 39, 52.09 W\n"}, "candidate": {"variant": "COHORT", "n_atoms": 4096, "status": "completed", "cohort_calls": [{"edges": 647170, "cohort": 8192, "shape": [2, 2, 647170, 320], "scratch_bytes": 48234496, "chunks": 80}, {"edges": 647170, "cohort": 8192, "shape": [2, 2, 647170, 320], "scratch_bytes": 48234496, "chunks": 80}], "first_ms": 130661.74752404913, "wall_ms": {"median": 152.99658162984997, "p90": 153.1795586925, "min": 152.67666708678007, "max": 153.37918419390917, "samples": [152.80796587467194, 152.67666708678007, 152.8230239637196, 152.69553288817406, 152.8115631081164, 153.11050694435835, 152.9747301246971, 152.96156611293554, 152.96317916363478, 152.75542601011693, 152.97105396166444, 153.01843313500285, 152.74724084883928, 153.37918419390917, 152.67967293038964, 153.13789900392294, 153.12884212471545, 152.86589483730495, 152.83745108172297, 153.1532269436866, 153.0529980082065, 153.17489788867533, 153.14369997940958, 152.74089900776744, 153.0236629769206, 153.27849402092397, 153.03492406383157, 153.1700089108199, 153.22150592692196, 153.0451129656285]}, "event_elapsed_ms": {"median": 152.96900177001953, "p90": 153.15320434570313, "min": 152.64944458007812, "max": 153.35218811035156, "samples": [152.76416015625, 152.64944458007812, 152.79225158691406, 152.6684112548828, 152.7843780517578, 153.0836181640625, 152.94805908203125, 152.93299865722656, 152.9363555908203, 152.72866821289062, 152.94143676757812, 152.9899444580078, 152.71241760253906, 153.35218811035156, 152.6525115966797, 153.11004638671875, 153.10208129882812, 152.839111328125, 152.8105926513672, 153.12716674804688, 153.0273895263672, 153.1485137939453, 153.1181182861328, 152.71612548828125, 152.99781799316406, 153.25001525878906, 153.0081024169922, 153.1427764892578, 153.19541931152344, 153.0175323486328]}, "event_scope": "entire API call on default stream; includes host gaps, not kernel-sum", "throughput_atoms_per_s": 26771.839974239407, "memory": {"before": {"allocated": 5105152, "reserved": 10485760}, "first": {"allocated": 22255608320, "reserved": 23284678656}, "complete": {"allocated": 22256656896, "reserved": 23284678656}, "steady": {"allocated": 22256656896, "reserved": 23284678656}}, "accuracy": {"0_energy": {"passed": true, "finite": true, "max_abs": 3.343820571899414e-05, "mean_abs": 3.343820571899414e-05, "max_relative": 9.010406315017077e-10, "max_ratio": 9.01038203524445e-06, "bitwise_equal": false}, "0_forces": {"passed": true, "finite": true, "max_abs": 4.501290604252972e-06, "mean_abs": 8.91570794295819e-07, "max_relative": 0.005271177009723984, "max_ratio": 0.3066038253772984, "bitwise_equal": false}, "0_virial": {"passed": true, "finite": true, "max_abs": 3.648587642857137e-05, "mean_abs": 2.5113980236351414e-05, "max_relative": 5.359243840853268e-06, "max_ratio": 0.05281663890890637, "bitwise_equal": false}, "0_stress": {"passed": true, "finite": true, "max_abs": 1.5677478502678852e-09, "mean_abs": 1.0383072766689974e-09, "max_relative": 5.35099423106069e-06, "max_ratio": 0.00015631680409278805, "bitwise_equal": false}, "1_energy": {"passed": true, "finite": true, "max_abs": 2.568960189819336e-05, "mean_abs": 2.568960189819336e-05, "max_relative": 6.922436976369169e-10, "max_ratio": 6.92241832290589e-06, "bitwise_equal": false}, "1_forces": {"passed": true, "finite": true, "max_abs": 4.585176689886339e-06, "mean_abs": 9.03569674277525e-07, "max_relative": 0.02285817500002087, "max_ratio": 0.3945459308993431, "bitwise_equal": false}, "1_virial": {"passed": true, "finite": true, "max_abs": 3.517240652772813e-05, "mean_abs": 1.1819337419992513e-05, "max_relative": 1.3954780960416497e-05, "max_ratio": 0.13422248347013363, "bitwise_equal": false}, "1_stress": {"passed": true, "finite": true, "max_abs": 1.4151081694521814e-09, "mean_abs": 4.355814262791754e-10, "max_relative": 1.3046341526179833e-05, "max_ratio": 0.00014135748956382648, "bitwise_equal": false}, "2_energy": {"passed": true, "finite": true, "max_abs": 2.181529998779297e-05, "mean_abs": 2.181529998779297e-05, "max_relative": 5.878751239972056e-10, "max_ratio": 5.87873539805238e-06, "bitwise_equal": false}, "2_forces": {"passed": true, "finite": true, "max_abs": 4.215275630770066e-06, "mean_abs": 8.904889935006855e-07, "max_relative": 0.019653782612936366, "max_ratio": 0.2874058287597916, "bitwise_equal": false}, "2_virial": {"passed": false, "finite": true, "max_abs": 5.778060074135283e-05, "mean_abs": 3.161071630145932e-05, "max_relative": 0.00023704483448762598, "max_ratio": 1.3935673269149225, "bitwise_equal": false}, "2_stress": {"passed": true, "finite": true, "max_abs": 2.4865818779029603e-09, "mean_abs": 1.303268248067739e-09, "max_relative": 0.00019835846034592781, "max_ratio": 0.00021213693395571626, "bitwise_equal": false}}, "precision_pass": false, "finite": true, "repeat_noise": [{"0_energy": {"passed": true, "finite": true, "max_abs": 3.254413604736328e-05, "mean_abs": 3.254413604736328e-05, "max_relative": 8.769486352168433e-10, "max_ratio": 8.76946272158763e-06, "bitwise_equal": false}, "0_forces": {"passed": true, "finite": true, "max_abs": 4.417631743081074e-06, "mean_abs": 8.952935879356224e-07, "max_relative": 0.008491087125014079, "max_ratio": 0.3145522822525354, "bitwise_equal": false}, "0_virial": {"passed": true, "finite": true, "max_abs": 6.0164278977481445e-05, "mean_abs": 3.642535952789553e-05, "max_relative": 9.36718038851264e-06, "max_ratio": 0.09087599442425827, "bitwise_equal": false}, "0_stress": {"passed": true, "finite": true, "max_abs": 2.589163210220402e-09, "mean_abs": 1.7415695341842635e-09, "max_relative": 8.87234163493955e-06, "max_ratio": 0.00022120559967418757, "bitwise_equal": false}, "1_energy": {"passed": true, "finite": true, "max_abs": 4.357099533081055e-05, "mean_abs": 4.357099533081055e-05, "max_relative": 1.1740838575923202e-09, "max_ratio": 1.1740806938610818e-05, "bitwise_equal": false}, "1_forces": {"passed": true, "finite": true, "max_abs": 4.675827472766514e-06, "mean_abs": 9.063906547856029e-07, "max_relative": 0.036599505319544375, "max_ratio": 0.25737358251348613, "bitwise_equal": false}, "1_virial": {"passed": true, "finite": true, "max_abs": 6.619611639280265e-05, "mean_abs": 1.5910744091129914e-05, "max_relative": 7.100533705438889e-06, "max_ratio": 0.06829566278201162, "bitwise_equal": false}, "1_stress": {"passed": true, "finite": true, "max_abs": 2.8487426792511705e-09, "mean_abs": 7.86154918125996e-10, "max_relative": 4.018101960426984e-06, "max_ratio": 0.00024352512769494378, "bitwise_equal": false}, "2_energy": {"passed": true, "finite": true, "max_abs": 5.543231964111328e-06, "mean_abs": 5.543231964111328e-06, "max_relative": 1.493781051901628e-10, "max_ratio": 1.4937770264958134e-06, "bitwise_equal": false}, "2_forces": {"passed": true, "finite": true, "max_abs": 5.050062881650774e-06, "mean_abs": 9.144685035093681e-07, "max_relative": 0.01441034960873239, "max_ratio": 0.26638835178894216, "bitwise_equal": false}, "2_virial": {"passed": false, "finite": true, "max_abs": 8.364572613572818e-05, "mean_abs": 3.839447309850197e-05, "max_relative": 0.000184569063466378, "max_ratio": 1.0849605187992253, "bitwise_equal": false}, "2_stress": {"passed": true, "finite": true, "max_abs": 3.5996847377872676e-09, "mean_abs": 1.8820248030649647e-09, "max_relative": 0.00011520072200172714, "max_ratio": 0.0003072746604392913, "bitwise_equal": false}}, {"0_energy": {"passed": true, "finite": true, "max_abs": 4.5239925384521484e-05, "mean_abs": 4.5239925384521484e-05, "max_relative": 1.2190549709333042e-09, "max_ratio": 1.2190516860228957e-05, "bitwise_equal": false}, "0_forces": {"passed": true, "finite": true, "max_abs": 4.041406871380104e-06, "mean_abs": 9.10446354352643e-07, "max_relative": 0.010763071033174065, "max_ratio": 0.33355556159599536, "bitwise_equal": false}, "0_virial": {"passed": true, "finite": true, "max_abs": 7.440286099757998e-05, "mean_abs": 4.985620084922241e-05, "max_relative": 1.4714845122841687e-05, "max_ratio": 0.1427565402627751, "bitwise_equal": false}, "0_stress": {"passed": true, "finite": true, "max_abs": 2.685574055564903e-09, "mean_abs": 2.074982249124145e-09, "max_relative": 1.0691958937955372e-05, "max_ratio": 0.00026777288197899044, "bitwise_equal": false}, "1_energy": {"passed": true, "finite": true, "max_abs": 2.8133392333984375e-05, "mean_abs": 2.8133392333984375e-05, "max_relative": 7.580951857504448e-10, "max_ratio": 7.580931429581814e-06, "bitwise_equal": false}, "1_forces": {"passed": true, "finite": true, "max_abs": 4.483156914147912e-06, "mean_abs": 9.03248236864816e-07, "max_relative": 0.04296409797590931, "max_ratio": 0.3690551714081974, "bitwise_equal": false}, "1_virial": {"passed": true, "finite": true, "max_abs": 4.099238883004119e-05, "mean_abs": 1.4892180924480019e-05, "max_relative": 1.626399347358029e-05, "max_ratio": 0.15643334146976215, "bitwise_equal": false}, "1_stress": {"passed": true, "finite": true, "max_abs": 1.5855046972318345e-09, "mean_abs": 6.310284352658936e-10, "max_relative": 1.4617473127173401e-05, "max_ratio": 0.00015837868206729078, "bitwise_equal": false}, "2_energy": {"passed": true, "finite": true, "max_abs": 2.6166439056396484e-05, "mean_abs": 2.6166439056396484e-05, "max_relative": 7.05128905144962e-10, "max_ratio": 7.051270049802818e-06, "bitwise_equal": false}, "2_forces": {"passed": true, "finite": true, "max_abs": 5.150550572707857e-06, "mean_abs": 9.104971860139301e-07, "max_relative": 0.00848035650300558, "max_ratio": 0.27860275748639024, "bitwise_equal": false}, "2_virial": {"passed": false, "finite": true, "max_abs": 0.0001093739360840118, "mean_abs": 4.6400631288048525e-05, "max_relative": 0.000256288674699523, "max_ratio": 1.5066132082220152, "bitwise_equal": false}, "2_stress": {"passed": true, "finite": true, "max_abs": 4.706895460199201e-09, "mean_abs": 2.3719541324566295e-09, "max_relative": 0.0002549724062461468, "max_ratio": 0.0004017878813312413, "bitwise_equal": false}}, {"0_energy": {"passed": true, "finite": true, "max_abs": 1.7821788787841797e-05, "mean_abs": 1.7821788787841797e-05, "max_relative": 4.802337764282713e-10, "max_ratio": 4.802324823726559e-06, "bitwise_equal": false}, "0_forces": {"passed": true, "finite": true, "max_abs": 5.0092467134277285e-06, "mean_abs": 9.146910072664108e-07, "max_relative": 0.005768027904387839, "max_ratio": 0.25206304738573826, "bitwise_equal": false}, "0_virial": {"passed": true, "finite": true, "max_abs": 8.904238183049529e-05, "mean_abs": 4.9794779707321465e-05, "max_relative": 7.67255975425693e-06, "max_ratio": 0.07576742928305333, "bitwise_equal": false}, "0_stress": {"passed": true, "finite": true, "max_abs": 3.8319292287869455e-09, "mean_abs": 2.51668933997219e-09, "max_relative": 6.952811946488008e-06, "max_ratio": 0.0003273815260532409, "bitwise_equal": false}, "1_energy": {"passed": true, "finite": true, "max_abs": 5.27501106262207e-05, "mean_abs": 5.27501106262207e-05, "max_relative": 1.421428473282084e-09, "max_ratio": 1.42142464304659e-05, "bitwise_equal": false}, "1_forces": {"passed": true, "finite": true, "max_abs": 4.4334826725389576e-06, "mean_abs": 9.03712043306938e-07, "max_relative": 0.021659841146778047, "max_ratio": 0.2560348612406004, "bitwise_equal": false}, "1_virial": {"passed": true, "finite": true, "max_abs": 0.00011154932775525594, "mean_abs": 5.0556706962683824e-05, "max_relative": 1.44654286966944e-05, "max_ratio": 0.1391340540373662, "bitwise_equal": false}, "1_stress": {"passed": true, "finite": true, "max_abs": 4.800513202229961e-09, "mean_abs": 2.6663310544559663e-09, "max_relative": 1.3561270113081683e-05, "max_ratio": 0.0004102277252605286, "bitwise_equal": false}, "2_energy": {"passed": true, "finite": true, "max_abs": 9.715557098388672e-06, "mean_abs": 9.715557098388672e-06, "max_relative": 2.61813238128995e-10, "max_ratio": 2.618125326008791e-06, "bitwise_equal": false}, "2_forces": {"passed": true, "finite": true, "max_abs": 4.431313683994631e-06, "mean_abs": 9.057077641526737e-07, "max_relative": 0.00852032258076752, "max_ratio": 0.290614836431981, "bitwise_equal": false}, "2_virial": {"passed": false, "finite": true, "max_abs": 4.987805443201765e-05, "mean_abs": 2.7012913177230462e-05, "max_relative": 0.0002144051028488081, "max_ratio": 1.2603470335234133, "bitwise_equal": false}, "2_stress": {"passed": true, "finite": true, "max_abs": 2.0668965696954422e-09, "mean_abs": 1.1189062796575815e-09, "max_relative": 0.00019382247305812142, "max_ratio": 0.00020639913063781194, "bitwise_equal": false}}], "wrappers": ["/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/megakernel_20261018/results/model_n4096_SPLIT_r0/inductor/6p/c6psnzostje44djrfofoyjfda4nemxgr37x23mi2ttc3n4hjmz5m.py"], "pbs_calls": 2, "gpu_end": "index, name, uuid, driver_version, clocks.current.sm [MHz], clocks.current.memory [MHz], temperature.gpu, power.draw [W]\n0, NVIDIA GeForce RTX 5090, GPU-8a1f47f6-0655-97e5-8ed5-433be97af788, 595.91.07, 2580 MHz, 13801 MHz, 56, 566.91 W\n1, NVIDIA GeForce RTX 5090, GPU-fcc63da0-f1b3-74c7-f868-681a40ef5f03, 595.91.07, 180 MHz, 405 MHz, 35, 12.92 W\n"}} diff --git a/doc/development/ecs-validation-20261025/ACCURACY_TABLE.md b/doc/development/ecs-validation-20261025/ACCURACY_TABLE.md deleted file mode 100644 index a68839dd9c..0000000000 --- a/doc/development/ecs-validation-20261025/ACCURACY_TABLE.md +++ /dev/null @@ -1,266 +0,0 @@ -# ECS 多模型多尺寸精度测试 - -> 精度优先;未放宽阈值。误差范围为每对输出max_abs的min~max,不是置信区间。基线SHA与模型SHA见JSON。 - -模式:TORCH=纯PyTorch编译;ECS=当前PR候选(非Neo为回退);ECS_RUNTIME=强制真实8192分批。单位:能量/位力eV,力eV/Å,stress eV/ų。所有结果均不是DFT预测误差。 - -| 模型 | 原子数 | 对照 | 范围 | 完成进程数 | 能量max_abs范围 | 力max_abs范围 | 位力max_abs范围 | stress max_abs范围 | 最差误差/容差 | 状态 | -| --- | ---: | --- | --- | --- | --- | --- | --- | --- | ---: | --- | -| Mini | 96 | TORCH vs TORCH | within_process | 3/3 | 1.788e-07~1.234e-05 | 4.585e-06~8.618e-06 | 1.402e-05~6.538e-05 | 2.375e-08~1.200e-07 | 1.1463 | FAIL | -| Mini | 96 | TORCH vs TORCH | across_process | 3/3 | 0.000e+00~1.246e-05 | 4.587e-06~8.061e-06 | 7.968e-06~6.371e-05 | 1.463e-08~1.170e-07 | 1.5990 | FAIL | -| Mini | 96 | BASE vs BASE | within_process | 3/3 | 1.192e-07~9.894e-06 | 4.567e-06~6.735e-06 | 1.251e-05~4.619e-05 | 2.294e-08~8.481e-08 | 1.8636 | FAIL | -| Mini | 96 | BASE vs BASE | across_process | 3/3 | 5.960e-08~1.049e-05 | 4.451e-06~7.551e-06 | 1.017e-05~4.644e-05 | 1.809e-08~8.526e-08 | 1.7011 | FAIL | -| Mini | 96 | ECS vs ECS | within_process | 3/3 | 3.576e-07~1.740e-05 | 4.543e-06~7.322e-06 | 7.101e-06~7.174e-05 | 1.285e-08~1.317e-07 | 2.1289 | FAIL | -| Mini | 96 | ECS vs ECS | across_process | 3/3 | 5.960e-08~1.699e-05 | 4.675e-06~8.280e-06 | 8.842e-06~5.695e-05 | 1.572e-08~1.046e-07 | 2.1372 | FAIL | -| Mini | 96 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~1.836e-05 | 5.616e-06~1.080e-05 | 1.972e-05~8.237e-05 | 3.388e-08~1.512e-07 | 1.7538 | FAIL | -| Mini | 96 | ECS vs TORCH | cross_implementation | 3/3 | 0.000e+00~1.651e-05 | 5.894e-06~1.135e-05 | 1.419e-05~9.370e-05 | 2.501e-08~1.720e-07 | 1.9425 | FAIL | -| Mini | 96 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~1.663e-05 | 4.214e-06~8.067e-06 | 8.232e-06~8.385e-05 | 1.474e-08~1.540e-07 | 1.9484 | FAIL | -| Mini | 512 | TORCH vs TORCH | within_process | 3/3 | 4.172e-07~3.606e-05 | 5.870e-06~7.873e-06 | 2.876e-05~1.708e-04 | 9.493e-09~5.882e-08 | 2.6615 | FAIL | -| Mini | 512 | TORCH vs TORCH | across_process | 3/3 | 1.788e-07~3.493e-05 | 5.543e-06~8.601e-06 | 2.627e-05~1.340e-04 | 9.046e-09~4.613e-08 | 2.1807 | FAIL | -| Mini | 512 | BASE vs BASE | within_process | 3/3 | 7.153e-07~3.594e-05 | 5.392e-06~8.266e-06 | 2.302e-05~9.672e-05 | 7.924e-09~3.330e-08 | 2.4707 | FAIL | -| Mini | 512 | BASE vs BASE | across_process | 3/3 | 1.192e-07~2.855e-05 | 5.616e-06~8.582e-06 | 1.416e-05~1.244e-04 | 4.757e-09~4.283e-08 | 2.6165 | FAIL | -| Mini | 512 | ECS vs ECS | within_process | 3/3 | 5.960e-07~2.813e-05 | 5.659e-06~9.532e-06 | 1.953e-05~1.400e-04 | 6.450e-09~4.821e-08 | 1.9644 | FAIL | -| Mini | 512 | ECS vs ECS | across_process | 3/3 | 0.000e+00~2.646e-05 | 5.619e-06~8.691e-06 | 1.610e-05~1.445e-04 | 5.544e-09~4.975e-08 | 3.1341 | FAIL | -| Mini | 512 | BASE vs TORCH | cross_implementation | 3/3 | 5.960e-08~3.952e-05 | 7.673e-06~1.210e-05 | 9.353e-05~2.595e-04 | 3.220e-08~8.933e-08 | 2.7111 | FAIL | -| Mini | 512 | ECS vs TORCH | cross_implementation | 3/3 | 5.960e-08~3.040e-05 | 7.604e-06~1.289e-05 | 9.723e-05~2.485e-04 | 3.347e-08~8.555e-08 | 3.0424 | FAIL | -| Mini | 512 | ECS vs BASE | cross_implementation | 3/3 | 5.960e-08~3.386e-05 | 5.100e-06~8.801e-06 | 1.883e-05~1.636e-04 | 6.483e-09~5.634e-08 | 3.0773 | FAIL | -| Mini | 4096 | TORCH vs TORCH | within_process | 3/3 | 5.364e-07~7.576e-05 | 6.887e-06~1.004e-05 | 9.010e-05~3.499e-04 | 3.878e-09~1.506e-08 | 10.2623 | FAIL | -| Mini | 4096 | TORCH vs TORCH | across_process | 3/3 | 1.788e-07~7.707e-05 | 6.973e-06~8.997e-06 | 6.730e-05~3.137e-04 | 2.584e-09~1.350e-08 | 8.9322 | FAIL | -| Mini | 4096 | BASE vs BASE | within_process | 3/3 | 2.086e-06~9.507e-05 | 6.874e-06~9.211e-06 | 8.355e-05~2.777e-04 | 3.595e-09~1.195e-08 | 10.3628 | FAIL | -| Mini | 4096 | BASE vs BASE | across_process | 3/3 | 7.749e-07~1.156e-04 | 7.001e-06~9.328e-06 | 5.222e-05~3.119e-04 | 2.040e-09~1.342e-08 | 12.0549 | FAIL | -| Mini | 4096 | ECS vs ECS | within_process | 3/3 | 5.960e-07~7.117e-05 | 7.187e-06~1.007e-05 | 5.141e-05~3.646e-04 | 2.061e-09~1.569e-08 | 6.1755 | FAIL | -| Mini | 4096 | ECS vs ECS | across_process | 3/3 | 5.364e-07~8.416e-05 | 7.002e-06~9.466e-06 | 4.396e-05~3.296e-04 | 1.892e-09~1.418e-08 | 7.3596 | FAIL | -| Mini | 4096 | BASE vs TORCH | cross_implementation | 3/3 | 3.576e-07~1.388e-04 | 9.301e-06~1.306e-05 | 7.796e-04~1.488e-03 | 3.355e-08~6.403e-08 | 12.5994 | FAIL | -| Mini | 4096 | ECS vs TORCH | cross_implementation | 3/3 | 1.311e-06~1.465e-04 | 9.302e-06~1.398e-05 | 8.275e-04~1.521e-03 | 3.561e-08~6.544e-08 | 9.8370 | FAIL | -| Mini | 4096 | ECS vs BASE | cross_implementation | 3/3 | 2.384e-07~1.084e-04 | 6.848e-06~1.005e-05 | 3.919e-05~3.468e-04 | 1.687e-09~1.492e-08 | 11.9793 | FAIL | -| Nano | 96 | TORCH vs TORCH | within_process | 3/3 | 4.768e-07~2.658e-05 | 7.035e-06~1.130e-05 | 1.325e-05~7.839e-05 | 2.318e-08~1.439e-07 | 5.5420 | FAIL | -| Nano | 96 | TORCH vs TORCH | across_process | 3/3 | 0.000e+00~2.420e-05 | 6.704e-06~1.136e-05 | 1.439e-05~7.676e-05 | 2.480e-08~1.409e-07 | 5.4077 | FAIL | -| Nano | 96 | BASE vs BASE | within_process | 3/3 | 1.192e-07~1.299e-05 | 6.957e-06~1.220e-05 | 1.406e-05~7.483e-05 | 2.405e-08~1.374e-07 | 5.7063 | FAIL | -| Nano | 96 | BASE vs BASE | across_process | 3/3 | 1.788e-07~1.878e-05 | 6.726e-06~1.142e-05 | 1.593e-05~8.811e-05 | 2.581e-08~1.618e-07 | 8.3241 | FAIL | -| Nano | 96 | ECS vs ECS | within_process | 3/3 | 0.000e+00~1.794e-05 | 7.266e-06~1.080e-05 | 1.871e-05~8.601e-05 | 3.432e-08~1.579e-07 | 7.3608 | FAIL | -| Nano | 96 | ECS vs ECS | across_process | 3/3 | 1.192e-07~2.122e-05 | 7.020e-06~1.150e-05 | 1.177e-05~8.074e-05 | 2.161e-08~1.482e-07 | 6.4631 | FAIL | -| Nano | 96 | BASE vs TORCH | cross_implementation | 3/3 | 1.788e-07~3.499e-05 | 6.454e-06~1.286e-05 | 1.219e-05~9.567e-05 | 2.155e-08~1.757e-07 | 9.4133 | FAIL | -| Nano | 96 | ECS vs TORCH | cross_implementation | 3/3 | 0.000e+00~3.982e-05 | 6.870e-06~1.269e-05 | 1.227e-05~9.163e-05 | 2.207e-08~1.682e-07 | 8.0976 | FAIL | -| Nano | 96 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~2.354e-05 | 6.351e-06~1.155e-05 | 1.137e-05~1.014e-04 | 2.003e-08~1.862e-07 | 9.1350 | FAIL | -| Nano | 512 | TORCH vs TORCH | within_process | 3/3 | 8.941e-07~3.463e-05 | 8.984e-06~1.488e-05 | 4.949e-05~1.978e-04 | 1.683e-08~6.809e-08 | 7.7673 | FAIL | -| Nano | 512 | TORCH vs TORCH | across_process | 3/3 | 3.576e-07~6.020e-05 | 8.737e-06~1.247e-05 | 3.414e-05~2.010e-04 | 1.174e-08~6.921e-08 | 7.8147 | FAIL | -| Nano | 512 | BASE vs BASE | within_process | 3/3 | 1.371e-06~5.305e-05 | 8.899e-06~1.278e-05 | 4.218e-05~1.863e-04 | 1.452e-08~6.415e-08 | 4.2656 | FAIL | -| Nano | 512 | BASE vs BASE | across_process | 3/3 | 8.941e-07~6.390e-05 | 8.700e-06~1.347e-05 | 1.671e-05~1.607e-04 | 5.273e-09~5.534e-08 | 4.6439 | FAIL | -| Nano | 512 | ECS vs ECS | within_process | 3/3 | 1.907e-06~4.596e-05 | 8.712e-06~1.348e-05 | 3.527e-05~1.795e-04 | 1.214e-08~6.181e-08 | 7.0513 | FAIL | -| Nano | 512 | ECS vs ECS | across_process | 3/3 | 1.073e-06~5.358e-05 | 8.399e-06~1.288e-05 | 1.549e-05~2.203e-04 | 5.095e-09~7.585e-08 | 7.1989 | FAIL | -| Nano | 512 | BASE vs TORCH | cross_implementation | 3/3 | 2.980e-07~1.107e-04 | 9.036e-06~1.477e-05 | 2.200e-05~2.575e-04 | 6.814e-09~8.866e-08 | 7.1940 | FAIL | -| Nano | 512 | ECS vs TORCH | cross_implementation | 3/3 | 6.676e-06~1.102e-04 | 8.284e-06~1.325e-05 | 2.255e-05~2.560e-04 | 7.763e-09~8.813e-08 | 9.4950 | FAIL | -| Nano | 512 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~6.342e-05 | 8.381e-06~1.570e-05 | 2.904e-05~1.981e-04 | 9.659e-09~6.821e-08 | 6.2237 | FAIL | -| Nano | 4096 | TORCH vs TORCH | within_process | 3/3 | 1.848e-06~1.260e-04 | 1.119e-05~1.436e-05 | 5.544e-05~3.779e-04 | 2.386e-09~1.626e-08 | 2.4958 | FAIL | -| Nano | 4096 | TORCH vs TORCH | across_process | 3/3 | 7.749e-07~1.612e-04 | 1.085e-05~1.484e-05 | 7.050e-05~4.504e-04 | 3.034e-09~1.938e-08 | 2.6872 | FAIL | -| Nano | 4096 | BASE vs BASE | within_process | 3/3 | 1.091e-05~1.924e-04 | 1.079e-05~1.563e-05 | 8.116e-05~4.467e-04 | 3.240e-09~1.922e-08 | 2.2079 | FAIL | -| Nano | 4096 | BASE vs BASE | across_process | 3/3 | 7.749e-07~1.666e-04 | 1.064e-05~1.480e-05 | 9.755e-05~5.898e-04 | 4.198e-09~2.538e-08 | 3.8540 | FAIL | -| Nano | 4096 | ECS vs ECS | within_process | 3/3 | 2.801e-06~1.946e-04 | 1.118e-05~1.424e-05 | 9.154e-05~4.406e-04 | 3.940e-09~1.896e-08 | 2.3048 | FAIL | -| Nano | 4096 | ECS vs ECS | across_process | 3/3 | 1.132e-06~2.133e-04 | 1.075e-05~1.605e-05 | 6.212e-05~5.332e-04 | 2.673e-09~2.294e-08 | 4.1555 | FAIL | -| Nano | 4096 | BASE vs TORCH | cross_implementation | 3/3 | 1.556e-04~4.887e-04 | 1.069e-05~1.613e-05 | 5.668e-05~7.157e-04 | 2.388e-09~3.080e-08 | 4.1304 | FAIL | -| Nano | 4096 | ECS vs TORCH | cross_implementation | 3/3 | 1.753e-04~5.112e-04 | 1.066e-05~1.554e-05 | 7.483e-05~7.943e-04 | 3.220e-09~3.418e-08 | 4.4355 | FAIL | -| Nano | 4096 | ECS vs BASE | cross_implementation | 3/3 | 2.384e-07~2.006e-04 | 1.020e-05~1.522e-05 | 3.754e-05~6.358e-04 | 1.501e-09~2.736e-08 | 4.1590 | FAIL | -| Neo | 96 | TORCH vs TORCH | within_process | 3/3 | 0.000e+00~1.222e-05 | 2.529e-06~4.930e-06 | 4.051e-06~2.011e-05 | 6.975e-09~3.692e-08 | 0.5965 | PASS | -| Neo | 96 | TORCH vs TORCH | across_process | 3/3 | 1.788e-07~1.091e-05 | 2.529e-06~4.594e-06 | 4.727e-06~2.222e-05 | 8.078e-09~4.080e-08 | 0.4535 | PASS | -| Neo | 96 | BASE vs BASE | within_process | 3/3 | 4.768e-07~7.212e-06 | 2.483e-06~3.981e-06 | 3.664e-06~2.443e-05 | 4.932e-09~4.486e-08 | 0.3532 | PASS | -| Neo | 96 | BASE vs BASE | across_process | 3/3 | 5.960e-08~1.073e-05 | 2.437e-06~4.474e-06 | 3.807e-06~1.991e-05 | 6.350e-09~3.656e-08 | 0.4794 | PASS | -| Neo | 96 | ECS vs ECS | within_process | 3/3 | 5.960e-08~6.557e-06 | 2.617e-06~4.197e-06 | 2.986e-06~2.181e-05 | 5.483e-09~4.005e-08 | 0.4760 | PASS | -| Neo | 96 | ECS vs ECS | across_process | 3/3 | 1.192e-07~6.855e-06 | 2.545e-06~4.369e-06 | 3.881e-06~2.690e-05 | 7.126e-09~4.938e-08 | 0.5175 | PASS | -| Neo | 96 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~1.115e-05 | 3.603e-06~7.196e-06 | 1.558e-05~4.824e-05 | 2.862e-08~8.858e-08 | 0.5819 | PASS | -| Neo | 96 | ECS vs TORCH | cross_implementation | 3/3 | 0.000e+00~1.127e-05 | 3.614e-06~7.185e-06 | 1.331e-05~5.232e-05 | 2.154e-08~9.607e-08 | 0.5914 | PASS | -| Neo | 96 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~1.037e-05 | 2.304e-06~5.034e-06 | 2.399e-06~2.851e-05 | 2.107e-09~5.235e-08 | 0.5769 | PASS | -| Neo | 512 | TORCH vs TORCH | within_process | 3/3 | 1.192e-07~1.776e-05 | 3.427e-06~4.336e-06 | 1.278e-05~5.254e-05 | 4.298e-09~1.809e-08 | 0.4674 | PASS | -| Neo | 512 | TORCH vs TORCH | across_process | 3/3 | 4.172e-07~1.734e-05 | 3.283e-06~4.901e-06 | 1.086e-05~6.951e-05 | 3.545e-09~2.393e-08 | 0.7340 | PASS | -| Neo | 512 | BASE vs BASE | within_process | 3/3 | 1.192e-07~2.247e-05 | 3.262e-06~4.286e-06 | 7.840e-06~6.508e-05 | 2.699e-09~2.240e-08 | 0.6034 | PASS | -| Neo | 512 | BASE vs BASE | across_process | 3/3 | 5.960e-08~1.889e-05 | 2.996e-06~5.144e-06 | 8.897e-06~6.434e-05 | 2.589e-09~2.215e-08 | 0.5044 | PASS | -| Neo | 512 | ECS vs ECS | within_process | 3/3 | 9.537e-07~1.884e-05 | 3.293e-06~5.012e-06 | 9.156e-06~5.708e-05 | 3.152e-09~1.965e-08 | 0.8473 | PASS | -| Neo | 512 | ECS vs ECS | across_process | 3/3 | 1.192e-07~2.056e-05 | 3.137e-06~4.858e-06 | 6.668e-06~5.049e-05 | 2.046e-09~1.738e-08 | 0.8394 | PASS | -| Neo | 512 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~2.021e-05 | 4.529e-06~7.150e-06 | 7.708e-05~1.673e-04 | 2.654e-08~5.758e-08 | 0.8254 | PASS | -| Neo | 512 | ECS vs TORCH | cross_implementation | 3/3 | 2.980e-07~2.718e-05 | 4.555e-06~7.020e-06 | 7.569e-05~1.572e-04 | 2.606e-08~5.411e-08 | 1.0809 | FAIL | -| Neo | 512 | ECS vs BASE | cross_implementation | 3/3 | 1.192e-07~2.670e-05 | 3.075e-06~5.255e-06 | 4.760e-06~7.743e-05 | 1.186e-09~2.666e-08 | 0.8589 | PASS | -| Neo | 4096 | BASE vs BASE | within_process | 3/3 | 1.788e-07~5.084e-05 | 3.915e-06~5.114e-06 | 2.331e-05~1.037e-04 | 1.003e-09~4.284e-09 | 1.3472 | FAIL | -| Neo | 4096 | BASE vs BASE | across_process | 3/3 | 5.364e-07~5.960e-05 | 4.095e-06~5.564e-06 | 2.725e-05~1.374e-04 | 1.066e-09~5.913e-09 | 1.7886 | FAIL | -| Neo | 4096 | ECS vs ECS | within_process | 3/3 | 2.086e-06~5.770e-05 | 4.087e-06~5.089e-06 | 3.967e-05~2.099e-04 | 1.707e-09~9.031e-09 | 2.6929 | FAIL | -| Neo | 4096 | ECS vs ECS | across_process | 3/3 | 1.788e-07~5.788e-05 | 4.010e-06~5.939e-06 | 2.293e-05~2.537e-04 | 8.575e-10~1.092e-08 | 3.4631 | FAIL | -| Neo | 4096 | ECS vs BASE | cross_implementation | 3/3 | 1.788e-07~6.694e-05 | 4.074e-06~6.208e-06 | 1.792e-05~1.883e-04 | 6.963e-10~8.102e-09 | 2.7953 | FAIL | -| NeoCu | 96 | TORCH vs TORCH | within_process | 3/3 | 1.192e-07~3.338e-06 | 3.603e-07~5.453e-07 | 1.724e-06~1.361e-05 | 1.519e-09~1.200e-08 | 0.1450 | PASS | -| NeoCu | 96 | TORCH vs TORCH | across_process | 3/3 | 0.000e+00~3.636e-06 | 3.280e-07~6.306e-07 | 1.289e-06~1.229e-05 | 1.134e-09~1.083e-08 | 0.1805 | PASS | -| NeoCu | 96 | BASE vs BASE | within_process | 3/3 | 5.960e-08~4.292e-06 | 3.674e-07~6.496e-07 | 1.058e-06~1.315e-05 | 9.327e-10~1.159e-08 | 0.2355 | PASS | -| NeoCu | 96 | BASE vs BASE | across_process | 3/3 | 0.000e+00~4.590e-06 | 3.296e-07~5.808e-07 | 1.086e-06~1.663e-05 | 9.277e-10~1.466e-08 | 0.2466 | PASS | -| NeoCu | 96 | ECS vs ECS | within_process | 3/3 | 1.192e-07~4.292e-06 | 3.467e-07~5.431e-07 | 1.491e-06~1.204e-05 | 1.314e-09~1.061e-08 | 0.2134 | PASS | -| NeoCu | 96 | ECS vs ECS | across_process | 3/3 | 0.000e+00~4.411e-06 | 3.581e-07~6.476e-07 | 9.126e-07~1.739e-05 | 8.043e-10~1.533e-08 | 0.2576 | PASS | -| NeoCu | 96 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~6.855e-06 | 3.360e-07~6.391e-07 | 3.217e-06~2.707e-05 | 2.835e-09~2.386e-08 | 0.2037 | PASS | -| NeoCu | 96 | ECS vs TORCH | cross_implementation | 3/3 | 0.000e+00~5.782e-06 | 3.374e-07~6.297e-07 | 3.805e-06~2.837e-05 | 3.353e-09~2.500e-08 | 0.2452 | PASS | -| NeoCu | 96 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~5.841e-06 | 3.036e-07~6.730e-07 | 5.077e-07~1.968e-05 | 4.474e-10~1.734e-08 | 0.2689 | PASS | -| NeoCu | 512 | TORCH vs TORCH | within_process | 3/3 | 0.000e+00~1.115e-05 | 4.107e-07~5.963e-07 | 3.552e-06~3.151e-05 | 5.869e-10~5.207e-09 | 0.2895 | PASS | -| NeoCu | 512 | TORCH vs TORCH | across_process | 3/3 | 3.576e-07~1.138e-05 | 4.138e-07~6.573e-07 | 2.813e-06~4.521e-05 | 4.174e-10~7.471e-09 | 0.2794 | PASS | -| NeoCu | 512 | BASE vs BASE | within_process | 3/3 | 1.192e-07~8.345e-06 | 4.176e-07~5.775e-07 | 4.065e-06~3.114e-05 | 6.577e-10~5.145e-09 | 0.3275 | PASS | -| NeoCu | 512 | BASE vs BASE | across_process | 3/3 | 0.000e+00~1.007e-05 | 4.184e-07~6.110e-07 | 1.907e-06~3.137e-05 | 3.124e-10~5.184e-09 | 0.3759 | PASS | -| NeoCu | 512 | ECS vs ECS | within_process | 3/3 | 6.557e-07~6.557e-06 | 4.320e-07~7.186e-07 | 2.182e-06~4.652e-05 | 3.606e-10~7.687e-09 | 0.2868 | PASS | -| NeoCu | 512 | ECS vs ECS | across_process | 3/3 | 5.960e-08~1.085e-05 | 4.208e-07~6.428e-07 | 2.016e-06~4.702e-05 | 3.332e-10~7.770e-09 | 0.4818 | PASS | -| NeoCu | 512 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~1.919e-05 | 4.175e-07~7.357e-07 | 4.216e-05~1.130e-04 | 6.966e-09~1.867e-08 | 0.3659 | PASS | -| NeoCu | 512 | ECS vs TORCH | cross_implementation | 3/3 | 5.960e-08~1.860e-05 | 4.282e-07~7.158e-07 | 3.795e-05~1.295e-04 | 6.271e-09~2.139e-08 | 0.3641 | PASS | -| NeoCu | 512 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~1.073e-05 | 3.929e-07~6.560e-07 | 1.895e-06~4.981e-05 | 2.801e-10~8.231e-09 | 0.4547 | PASS | -| NeoCu | 4096 | TORCH vs TORCH | within_process | 3/3 | 8.345e-07~1.687e-05 | 5.199e-07~6.523e-07 | 7.247e-06~8.839e-05 | 1.497e-10~1.826e-09 | 0.3163 | PASS | -| NeoCu | 4096 | TORCH vs TORCH | across_process | 3/3 | 5.960e-08~2.599e-05 | 5.038e-07~7.152e-07 | 8.798e-06~1.036e-04 | 1.817e-10~2.140e-09 | 0.3102 | PASS | -| NeoCu | 4096 | BASE vs BASE | within_process | 3/3 | 7.153e-07~4.148e-05 | 5.221e-07~7.069e-07 | 5.660e-06~7.616e-05 | 9.913e-11~1.573e-09 | 0.2691 | PASS | -| NeoCu | 4096 | BASE vs BASE | across_process | 3/3 | 1.192e-07~3.791e-05 | 5.172e-07~6.890e-07 | 8.123e-06~1.054e-04 | 1.678e-10~2.178e-09 | 0.3652 | PASS | -| NeoCu | 4096 | ECS vs ECS | within_process | 3/3 | 1.788e-07~2.778e-05 | 5.439e-07~7.169e-07 | 7.803e-06~1.111e-04 | 1.612e-10~2.295e-09 | 0.2754 | PASS | -| NeoCu | 4096 | ECS vs ECS | across_process | 3/3 | 5.960e-08~3.821e-05 | 5.166e-07~7.105e-07 | 7.015e-06~9.401e-05 | 1.449e-10~1.942e-09 | 0.4257 | PASS | -| NeoCu | 4096 | BASE vs TORCH | cross_implementation | 3/3 | 3.046e-05~8.726e-05 | 5.351e-07~8.014e-07 | 4.939e-04~6.932e-04 | 1.020e-08~1.432e-08 | 0.4284 | PASS | -| NeoCu | 4096 | ECS vs TORCH | cross_implementation | 3/3 | 2.074e-05~8.494e-05 | 5.446e-07~7.932e-07 | 4.744e-04~6.950e-04 | 9.798e-09~1.435e-08 | 0.4357 | PASS | -| NeoCu | 4096 | ECS vs BASE | cross_implementation | 3/3 | 5.960e-08~3.868e-05 | 5.229e-07~7.972e-07 | 5.578e-06~1.249e-04 | 9.600e-11~2.581e-09 | 0.3727 | PASS | -| Pro | 96 | TORCH vs TORCH | within_process | 3/3 | 2.980e-08~3.546e-06 | 7.446e-07~1.197e-06 | 1.965e-06~9.613e-06 | 2.423e-09~1.765e-08 | 0.1584 | PASS | -| Pro | 96 | TORCH vs TORCH | across_process | 3/3 | 5.960e-08~4.083e-06 | 7.445e-07~1.667e-06 | 1.298e-06~8.369e-06 | 1.832e-09~1.537e-08 | 0.1908 | PASS | -| Pro | 96 | BASE vs BASE | within_process | 3/3 | 2.980e-08~2.086e-06 | 6.661e-07~1.003e-06 | 1.850e-06~6.390e-06 | 2.572e-09~1.173e-08 | 0.1034 | PASS | -| Pro | 96 | BASE vs BASE | across_process | 3/3 | 2.980e-08~3.368e-06 | 6.060e-07~1.153e-06 | 1.505e-06~8.763e-06 | 2.631e-09~1.609e-08 | 0.1715 | PASS | -| Pro | 96 | ECS vs ECS | within_process | 3/3 | 2.980e-08~2.652e-06 | 7.281e-07~1.056e-06 | 1.903e-06~7.248e-06 | 1.676e-09~1.331e-08 | 0.1771 | PASS | -| Pro | 96 | ECS vs ECS | across_process | 3/3 | 0.000e+00~3.338e-06 | 6.510e-07~1.144e-06 | 1.396e-06~7.585e-06 | 1.931e-09~1.393e-08 | 0.2516 | PASS | -| Pro | 96 | BASE vs TORCH | cross_implementation | 3/3 | 0.000e+00~5.037e-06 | 1.030e-06~1.919e-06 | 6.303e-06~1.613e-05 | 1.023e-08~2.962e-08 | 0.1988 | PASS | -| Pro | 96 | ECS vs TORCH | cross_implementation | 3/3 | 0.000e+00~5.871e-06 | 1.039e-06~1.691e-06 | 5.839e-06~1.643e-05 | 9.968e-09~3.017e-08 | 0.2784 | PASS | -| Pro | 96 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~3.725e-06 | 6.266e-07~1.310e-06 | 1.210e-06~9.066e-06 | 1.710e-09~1.665e-08 | 0.2276 | PASS | -| Pro | 512 | BASE vs BASE | within_process | 3/3 | 1.192e-07~7.242e-06 | 8.882e-07~1.212e-06 | 3.637e-06~1.652e-05 | 6.287e-10~5.687e-09 | 0.2266 | PASS | -| Pro | 512 | BASE vs BASE | across_process | 3/3 | 2.980e-08~1.019e-05 | 8.338e-07~1.360e-06 | 3.104e-06~2.018e-05 | 8.452e-10~6.947e-09 | 0.2604 | PASS | -| Pro | 512 | ECS vs ECS | within_process | 3/3 | 2.980e-08~7.421e-06 | 8.405e-07~1.356e-06 | 3.452e-06~1.421e-05 | 1.188e-09~4.893e-09 | 0.2375 | PASS | -| Pro | 512 | ECS vs ECS | across_process | 3/3 | 2.980e-08~8.345e-06 | 8.582e-07~1.497e-06 | 2.475e-06~1.641e-05 | 6.944e-10~5.648e-09 | 0.2399 | PASS | -| Pro | 512 | ECS vs BASE | cross_implementation | 3/3 | 0.000e+00~1.121e-05 | 8.272e-07~1.477e-06 | 2.360e-06~1.753e-05 | 5.223e-10~6.034e-09 | 0.2884 | PASS | - -## 所有进程状态(含OOM/失败,不能略去) - -| 运行 | 状态 | 参数量 | opaque ECS调用 | single路径标记 | -| --- | --- | ---: | ---: | --- | -| Mini_n4096_BASE_p0 | completed | 654988 | 0 | False | -| Mini_n4096_BASE_p1 | completed | 654988 | 0 | False | -| Mini_n4096_BASE_p2 | completed | 654988 | 0 | False | -| Mini_n4096_ECS_p0 | completed | 654988 | 0 | False | -| Mini_n4096_ECS_p1 | completed | 654988 | 0 | False | -| Mini_n4096_ECS_p2 | completed | 654988 | 0 | False | -| Mini_n4096_TORCH_p0 | completed | 654988 | 0 | False | -| Mini_n4096_TORCH_p1 | completed | 654988 | 0 | False | -| Mini_n4096_TORCH_p2 | completed | 654988 | 0 | False | -| Mini_n512_BASE_p0 | completed | 654988 | 0 | False | -| Mini_n512_BASE_p1 | completed | 654988 | 0 | False | -| Mini_n512_BASE_p2 | completed | 654988 | 0 | False | -| Mini_n512_ECS_p0 | completed | 654988 | 0 | False | -| Mini_n512_ECS_p1 | completed | 654988 | 0 | False | -| Mini_n512_ECS_p2 | completed | 654988 | 0 | False | -| Mini_n512_TORCH_p0 | completed | 654988 | 0 | False | -| Mini_n512_TORCH_p1 | completed | 654988 | 0 | False | -| Mini_n512_TORCH_p2 | completed | 654988 | 0 | False | -| Mini_n96_BASE_p0 | completed | 654988 | 0 | False | -| Mini_n96_BASE_p1 | completed | 654988 | 0 | False | -| Mini_n96_BASE_p2 | completed | 654988 | 0 | False | -| Mini_n96_ECS_p0 | completed | 654988 | 0 | False | -| Mini_n96_ECS_p1 | completed | 654988 | 0 | False | -| Mini_n96_ECS_p2 | completed | 654988 | 0 | False | -| Mini_n96_TORCH_p0 | completed | 654988 | 0 | False | -| Mini_n96_TORCH_p1 | completed | 654988 | 0 | False | -| Mini_n96_TORCH_p2 | completed | 654988 | 0 | False | -| Nano_n4096_BASE_p0 | completed | 480268 | 0 | False | -| Nano_n4096_BASE_p1 | completed | 480268 | 0 | False | -| Nano_n4096_BASE_p2 | completed | 480268 | 0 | False | -| Nano_n4096_ECS_p0 | completed | 480268 | 0 | False | -| Nano_n4096_ECS_p1 | completed | 480268 | 0 | False | -| Nano_n4096_ECS_p2 | completed | 480268 | 0 | False | -| Nano_n4096_TORCH_p0 | completed | 480268 | 0 | False | -| Nano_n4096_TORCH_p1 | completed | 480268 | 0 | False | -| Nano_n4096_TORCH_p2 | completed | 480268 | 0 | False | -| Nano_n512_BASE_p0 | completed | 480268 | 0 | False | -| Nano_n512_BASE_p1 | completed | 480268 | 0 | False | -| Nano_n512_BASE_p2 | completed | 480268 | 0 | False | -| Nano_n512_ECS_p0 | completed | 480268 | 0 | False | -| Nano_n512_ECS_p1 | completed | 480268 | 0 | False | -| Nano_n512_ECS_p2 | completed | 480268 | 0 | False | -| Nano_n512_TORCH_p0 | completed | 480268 | 0 | False | -| Nano_n512_TORCH_p1 | completed | 480268 | 0 | False | -| Nano_n512_TORCH_p2 | completed | 480268 | 0 | False | -| Nano_n96_BASE_p0 | completed | 480268 | 0 | False | -| Nano_n96_BASE_p1 | completed | 480268 | 0 | False | -| Nano_n96_BASE_p2 | completed | 480268 | 0 | False | -| Nano_n96_ECS_p0 | completed | 480268 | 0 | False | -| Nano_n96_ECS_p1 | completed | 480268 | 0 | False | -| Nano_n96_ECS_p2 | completed | 480268 | 0 | False | -| Nano_n96_TORCH_p0 | completed | 480268 | 0 | False | -| Nano_n96_TORCH_p1 | completed | 480268 | 0 | False | -| Nano_n96_TORCH_p2 | completed | 480268 | 0 | False | -| NeoCu_n4096_BASE_p0 | completed | 1124910 | 0 | False | -| NeoCu_n4096_BASE_p1 | completed | 1124910 | 0 | False | -| NeoCu_n4096_BASE_p2 | completed | 1124910 | 0 | False | -| NeoCu_n4096_ECS_p0 | completed | 1124910 | 0 | True | -| NeoCu_n4096_ECS_p1 | completed | 1124910 | 0 | True | -| NeoCu_n4096_ECS_p2 | completed | 1124910 | 0 | True | -| NeoCu_n4096_TORCH_p0 | completed | 1124910 | 0 | False | -| NeoCu_n4096_TORCH_p1 | completed | 1124910 | 0 | False | -| NeoCu_n4096_TORCH_p2 | completed | 1124910 | 0 | False | -| NeoCu_n512_BASE_p0 | completed | 1124910 | 0 | False | -| NeoCu_n512_BASE_p1 | completed | 1124910 | 0 | False | -| NeoCu_n512_BASE_p2 | completed | 1124910 | 0 | False | -| NeoCu_n512_ECS_p0 | completed | 1124910 | 0 | True | -| NeoCu_n512_ECS_p1 | completed | 1124910 | 0 | True | -| NeoCu_n512_ECS_p2 | completed | 1124910 | 0 | True | -| NeoCu_n512_TORCH_p0 | completed | 1124910 | 0 | False | -| NeoCu_n512_TORCH_p1 | completed | 1124910 | 0 | False | -| NeoCu_n512_TORCH_p2 | completed | 1124910 | 0 | False | -| NeoCu_n96_BASE_p0 | completed | 1124910 | 0 | False | -| NeoCu_n96_BASE_p1 | completed | 1124910 | 0 | False | -| NeoCu_n96_BASE_p2 | completed | 1124910 | 0 | False | -| NeoCu_n96_ECS_p0 | completed | 1124910 | 0 | True | -| NeoCu_n96_ECS_p1 | completed | 1124910 | 0 | True | -| NeoCu_n96_ECS_p2 | completed | 1124910 | 0 | True | -| NeoCu_n96_TORCH_p0 | completed | 1124910 | 0 | False | -| NeoCu_n96_TORCH_p1 | completed | 1124910 | 0 | False | -| NeoCu_n96_TORCH_p2 | completed | 1124910 | 0 | False | -| Neo_n4096_BASE_p0 | completed | 1124910 | 0 | False | -| Neo_n4096_BASE_p1 | completed | 1124910 | 0 | False | -| Neo_n4096_BASE_p2 | completed | 1124910 | 0 | False | -| Neo_n4096_ECS_p0 | completed | 1124910 | 0 | True | -| Neo_n4096_ECS_p1 | completed | 1124910 | 0 | True | -| Neo_n4096_ECS_p2 | completed | 1124910 | 0 | True | -| Neo_n4096_TORCH_p0 | oom | 1124910 | 0 | False | -| Neo_n4096_TORCH_p1 | oom | 1124910 | 0 | False | -| Neo_n4096_TORCH_p2 | oom | 1124910 | 0 | False | -| Neo_n512_BASE_p0 | completed | 1124910 | 0 | False | -| Neo_n512_BASE_p1 | completed | 1124910 | 0 | False | -| Neo_n512_BASE_p2 | completed | 1124910 | 0 | False | -| Neo_n512_ECS_p0 | completed | 1124910 | 0 | True | -| Neo_n512_ECS_p1 | completed | 1124910 | 0 | True | -| Neo_n512_ECS_p2 | completed | 1124910 | 0 | True | -| Neo_n512_TORCH_p0 | completed | 1124910 | 0 | False | -| Neo_n512_TORCH_p1 | completed | 1124910 | 0 | False | -| Neo_n512_TORCH_p2 | completed | 1124910 | 0 | False | -| Neo_n96_BASE_p0 | completed | 1124910 | 0 | False | -| Neo_n96_BASE_p1 | completed | 1124910 | 0 | False | -| Neo_n96_BASE_p2 | completed | 1124910 | 0 | False | -| Neo_n96_ECS_p0 | completed | 1124910 | 0 | True | -| Neo_n96_ECS_p1 | completed | 1124910 | 0 | True | -| Neo_n96_ECS_p2 | completed | 1124910 | 0 | True | -| Neo_n96_TORCH_p0 | completed | 1124910 | 0 | False | -| Neo_n96_TORCH_p1 | completed | 1124910 | 0 | False | -| Neo_n96_TORCH_p2 | completed | 1124910 | 0 | False | -| Pro_n4096_BASE_p0 | oom | 22678990 | 0 | False | -| Pro_n4096_BASE_p1 | oom | 22678990 | 0 | False | -| Pro_n4096_BASE_p2 | oom | 22678990 | 0 | False | -| Pro_n4096_ECS_p0 | oom | 22678990 | 0 | False | -| Pro_n4096_ECS_p1 | oom | 22678990 | 0 | False | -| Pro_n4096_ECS_p2 | oom | 22678990 | 0 | False | -| Pro_n4096_TORCH_p0 | oom | 22678990 | 0 | False | -| Pro_n4096_TORCH_p1 | oom | 22678990 | 0 | False | -| Pro_n4096_TORCH_p2 | oom | 22678990 | 0 | False | -| Pro_n512_BASE_p0 | completed | 22678990 | 0 | False | -| Pro_n512_BASE_p1 | completed | 22678990 | 0 | False | -| Pro_n512_BASE_p2 | completed | 22678990 | 0 | False | -| Pro_n512_ECS_p0 | completed | 22678990 | 0 | False | -| Pro_n512_ECS_p1 | completed | 22678990 | 0 | False | -| Pro_n512_ECS_p2 | completed | 22678990 | 0 | False | -| Pro_n512_TORCH_p0 | oom | 22678990 | 0 | False | -| Pro_n512_TORCH_p1 | oom | 22678990 | 0 | False | -| Pro_n512_TORCH_p2 | oom | 22678990 | 0 | False | -| Pro_n96_BASE_p0 | completed | 22678990 | 0 | False | -| Pro_n96_BASE_p1 | completed | 22678990 | 0 | False | -| Pro_n96_BASE_p2 | completed | 22678990 | 0 | False | -| Pro_n96_ECS_p0 | completed | 22678990 | 0 | False | -| Pro_n96_ECS_p1 | completed | 22678990 | 0 | False | -| Pro_n96_ECS_p2 | completed | 22678990 | 0 | False | -| Pro_n96_TORCH_p0 | completed | 22678990 | 0 | False | -| Pro_n96_TORCH_p1 | completed | 22678990 | 0 | False | -| Pro_n96_TORCH_p2 | completed | 22678990 | 0 | False | diff --git a/doc/development/ecs-validation-20261025/README.md b/doc/development/ecs-validation-20261025/README.md deleted file mode 100644 index 529ec8ab0a..0000000000 --- a/doc/development/ecs-validation-20261025/README.md +++ /dev/null @@ -1,74 +0,0 @@ -# Manual ECS validation artifact (2026-10-25 measurements; 2026-10-26 publication) - -## What is being compared - -This artifact records **135 process outcomes: 120 completed, 15 OOM**, not 135 numerical passes. Each complete arm has three fresh processes, three identical perturbed frames repeated three times per process. The three columns are compiled pure TORCH, native master, and the isolated candidate port. Sources are pinned; raw results are not mixed across trees. - -The master/candidate port uses `2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c`, which includes merged #6058 residual-inplace. The existing personal PR still has the original668 base; **this evidence update does not silently rebase that PR or replace its production source**. `port-to-2ba617bc.patch` reproduces the tested three-file port on the pinned master. Generated source hashes are checked against the measurement manifests. - -## Files - -- `REPORT.md`: explicit three-column strict and empirical-band PASS/FAIL, per-output errors, P50/P90, CUDA Event time, first/full/steady allocated peaks, changes and route limits. -- `ACCURACY_TABLE.md`: separate within/across-process and implementation comparisons, strict failures and ranges. -- `summary.json`: complete aggregate metrics including mean_abs/max_relative, finite status, route counts, checkpoint identity and per-process peaks. -- `runs.json`: all135 original worker result/manifest records, including per-call timing samples and exceptions. OOM is retained. -- `provenance.json`: pinned sources, per-run NPZ hashes, source-consistency checks and publication-time environment snapshot. -- `validation.json`: prior60-test focused CUDA result and the published worker's separate complete Neo96/GPU1 smoke (3warmups/10samples,finite). The GPU0 attempt correctly stopped on a busy GPU. Smoke is not pooled into the135-run matrix and is not a new cross-reference accuracy acceptance. -- `worker.py`, `run_matrix.py`, `analyze.py`, `report.py`: standalone manual tools, not added to routine GPU CI. `pro_cpu_load_check.json` is the historical metadata-compatibility proof for the verified Pro checkpoint, not a new numerical reference. - -The original input/output NPZ archives total approximately47MiB and remain in the local experiment archive; they are **not committed here**. JSON timing/config/error summaries are inspectable, and the published harness permits fresh reproduction, but the published subset does not itself permit recomputing every original output comparison. NPZ hashes in provenance support later transfer/integrity checking; a hash is not a substitute for the arrays. - -## Checkpoints and scope - -Neo: DPA4-Neo-OMat24-v20260627.pt, SHA256 `8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d`. Nano/Mini: official OMat24 v20260805; SHA256 and loaded counts in manifests. Pro: DPA-4.0.1-Pro-MPtrj v2026.06.05, **not OMat24-Pro**; SHA256 `446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221`, official MD5 `2174bb3095b197489f978d31393c1e06`,273318000 bytes. [Official Pro record](https://doi.org/10.6084/m9.figshare.32647224). - -Pro's historical fitting type alias is mapped in memory only (`ener -> dpa4_ener`), equally for all arms. Copy the included proof as `cpu_load_check.json` beside the verified Pro checkpoint before using the worker. This proof records strict CPU load on the historical reader; it is not evidence of passing inference on every current environment. The worker requires the exact verified Pro SHA; it does not patch arbitrary checkpoint files. No checkpoint tensors are changed or uploaded. - -The candidate guard supports the fixed Neo layout. Nano/Mini/Pro execute **native fallback**, not optimized ECS. Their timing variation cannot be credited to ECS. Neo's measured AOT graphs specialize the single-cohort path, including4096; this is not evidence of actual bounded8192-edge runtime batches. No deployment fix is included in this evidence publication. - -## Measurement protocol and limits - -- RTX5090 x2, PyTorch2.11.0+cu128, Triton3.6.0, CUDA runtime12.8. Driver595.91.07 observed on the same server at publication. The supplied environment snapshot is **post-run**, not a clock/temperature trace of the timed window. This matrix did not collect continuous GPU telemetry, unlike the earlier controlled N64 study. -- Each worker checks for existing GPU compute clients before initialization. Same physical GPU for all arms/repeats of a model/system/size: Neo/Pro GPU0, Nano/Mini GPU1. Two GPUs may run distinct cases simultaneously; CPU/package contention is not excluded. No global clock/driver changes, no killed foreign process. -- FP32 mixing, TF32/AMP off, no FP16x3. Preserve original non-mixing model precision. Normal ASE energy/forces/virial/stress API includes neighbor construction. -- Diamond C3.567Angstrom; bccCu2.87Angstrom. Seed0, sigma0.02Angstrom, three exact same frames checked across arms. Diamond N96 repeats(2,2,3), N512(4,4,4), N4096(8,8,8). Cu96(4,4,3),512(8,8,4),4096(16,16,8). -- Accuracy9calls includes first compilation but those calls are not latency samples. Then8 warmups and30 synchronized wall/Event samples; separate30call steady-memory replay. Full peak takes the maximum including first execution and subsequent phases; steady reset is never substituted for first capacity. Allocated/reserved bytes retained; decimalGB=1e9B. -- Explicit cache per model/system/mode is reused in later independent repeats. The first worker was cold; later repeats benefit from that cache. All generic autotune choices are **not** frozen across arms. Therefore these independent-process quantiles do not establish a stable isolated sub-percent ECS cost/benefit. Earlier controlled N64 evidence remains a different experiment. -- Median of three process P50/P90 values, worst process capacity. Timing/accuracy/profile are distinct; no profiled timings are included. No DFT/long-MD accuracy, H20,10k-atoms, PT2/C++ or new training acceptance claim. - -## Numerical criteria - -Strict elementwise criterion: finite and `abs(got-ref)<=1e-5+1e-4*abs(ref)`. Max-relative denominator `max(abs(ref),1e-8)`. Energy/virial in eV, force eV/Angstrom, stress eV/Angstrom^3; same numeric tolerance across units does not imply same physical accuracy. - -Meeting-band diagnostic: separately per output/model/system/size, worst same-frame cross-implementation max_abs divided by pure-TORCH's own worst repeat max_abs (within and across processes). <=3 is marked band PASS; it is an empirical sampled repeat band, not a formal error bound. Strict failures remain failures; zero self-band requires zero deviation. Missing/OOM reference is N/A, not PASS. A maximum over more repeat samples may increase; this protocol does not allow enlarging the sample set only to inflate tolerance. - -## Reproduce on explicit source trees - -Use a compatible CUDA/native DeePMD installation. Set source roots explicitly; the worker checks imported package provenance and avoids silently using an unrelated editable checkout. Obtain checkpoints separately under their licenses. Start with idle GPUs and new output/cache directories. - -```bash -git clone https://github.com/deepmodeling/deepmd-kit.git base -git -C base checkout --detach 2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c -git clone --shared base candidate -git -C candidate apply /absolute/path/to/this-artifact/port-to-2ba617bc.patch -``` - -Create a local model-map JSON with Neo/Nano/Mini/Pro mapped to absolute checkpoint paths (not committed weights). For Pro, place its checked compatibility proof beside the checkpoint as described above. Then, using the appropriate Python environment: - -```bash -python run_matrix.py --base-root /absolute/base --candidate-root /absolute/candidate \ - --model-map /absolute/models.json --out-root /absolute/new-results \ - --gpu 0 --models Neo Pro -python run_matrix.py --base-root /absolute/base --candidate-root /absolute/candidate \ - --model-map /absolute/models.json --out-root /absolute/new-results \ - --gpu 1 --models Nano Mini -python report.py --root /absolute/new-results -``` - -The two commands can use different GPUs concurrently. Do not run two workers on one GPU. Default is all three sizes and three independent processes; `--sizes 96` permits an initial smoke, not full acceptance. Existing outcomes are not overwritten; explicit `--skip-existing` only resumes, not a new rerun. The public runner reproduces the calculation/protocol with explicit paths; orchestration/path handling is adapted from the local runner. Validate it on the target environment rather than claiming a new135-process run from `--help` success. - -## Conclusion and open gates - -Current-master Neo4096: P50 **156.512587->156.594862ms**, full allocated peak **22.313645->22.806378GB** (increase2.2082%). Neo96: **17.992521->18.035012ms**, full peak **0.646372->0.658145GB** (increase1.8213%). Small timing differences lack matched-autotune/process uncertainty; the observed memory increases are retained. No new positive ECS performance claim is made. - -Remaining: fix real dynamic deployment dispatch; resolve scientific acceptance/OOM reference limitations; replace the fine-grained development switch with an agreed existing-level/internal policy and tuning integration where appropriate; retain optional-Triton CPU safety; add proportionate actual engagement/guard/alias tests; obtain real upstream CI approval. Keep personal PR Draft/default-off. This update is evidence for human review, **not an upstream submission or ready-to-merge declaration**. diff --git a/doc/development/ecs-validation-20261025/REPORT.md b/doc/development/ecs-validation-20261025/REPORT.md deleted file mode 100644 index 611ab06412..0000000000 --- a/doc/development/ecs-validation-20261025/REPORT.md +++ /dev/null @@ -1,171 +0,0 @@ -# ECS current-master comparison — measured 2026-10-25, finalized 2026-10-26 - -BASE: 2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c, including merged residual-inplace #6058. Old668-base numbers are not substituted. Candidate is the isolated port of PR#2; its AOT branch-specialization issue remains unresolved. - -Recorded 135/135 process results: {'completed': 120, 'oom': 15}. Missing cells are NOT passes. Three processes ×3 frames ×3 accuracy repeats per arm; 8 extra warmups/30 wall+Event samples, separate steady replay. Same physical GPU within each case. TF32/AMP off. - -## Three-column PASS/FAIL overview - -Strict columns cover all four fields: Torch self-repeat; master self-repeat and versus Torch; candidate self-repeat, versus Torch and versus master. A missing Torch reference is N/A, never PASS. The meeting band is a separately reported empirical diagnostic, not a rigorous error bound or a waiver of strict failure. - -| Model/system | Atoms | Compiled Torch | Current master | Candidate | -| --- | ---: | --- | --- | --- | -| Neo | 96 | strict self=PASS | strict self=PASS; vs Torch=PASS; band=PASS (2.171x) | strict self=PASS; vs Torch=PASS; vs master=PASS; band=PASS (2.355x) | -| Neo | 512 | strict self=PASS | strict self=PASS; vs Torch=PASS; band=PASS (2.406x) | strict self=PASS; vs Torch=FAIL; vs master=PASS; band=PASS (2.261x) | -| Neo | 4096 | strict self=N/A | strict self=FAIL; vs Torch=N/A; band=N/A | strict self=FAIL; vs Torch=N/A; vs master=FAIL; band=N/A | -| NeoCu | 96 | strict self=PASS | strict self=PASS; vs Torch=PASS; band=PASS (1.989x) | strict self=PASS; vs Torch=PASS; vs master=PASS; band=PASS (2.084x) | -| NeoCu | 512 | strict self=PASS | strict self=PASS; vs Torch=PASS; band=PASS (2.499x) | strict self=PASS; vs Torch=PASS; vs master=PASS; band=PASS (2.863x) | -| NeoCu | 4096 | strict self=PASS | strict self=PASS; vs Torch=PASS; band=FAIL (6.690x) | strict self=PASS; vs Torch=PASS; vs master=PASS; band=FAIL (6.707x) | -| Nano | 96 | strict self=FAIL | strict self=FAIL; vs Torch=FAIL; band=PASS (1.316x) | strict self=FAIL; vs Torch=FAIL; vs master=FAIL; band=PASS (1.498x) | -| Nano | 512 | strict self=FAIL | strict self=FAIL; vs Torch=FAIL; band=PASS (1.839x) | strict self=FAIL; vs Torch=FAIL; vs master=FAIL; band=PASS (1.831x) | -| Nano | 4096 | strict self=FAIL | strict self=FAIL; vs Torch=FAIL; band=FAIL (3.031x) | strict self=FAIL; vs Torch=FAIL; vs master=FAIL; band=FAIL (3.171x) | -| Mini | 96 | strict self=FAIL | strict self=FAIL; vs Torch=FAIL; band=PASS (1.474x) | strict self=FAIL; vs Torch=FAIL; vs master=FAIL; band=PASS (1.433x) | -| Mini | 512 | strict self=FAIL | strict self=FAIL; vs Torch=FAIL; band=PASS (1.519x) | strict self=FAIL; vs Torch=FAIL; vs master=FAIL; band=PASS (1.498x) | -| Mini | 4096 | strict self=FAIL | strict self=FAIL; vs Torch=FAIL; band=FAIL (4.252x) | strict self=FAIL; vs Torch=FAIL; vs master=FAIL; band=FAIL (4.346x) | -| Pro | 96 | strict self=PASS | strict self=PASS; vs Torch=PASS; band=PASS (1.678x) | strict self=PASS; vs Torch=PASS; vs master=PASS; band=PASS (1.709x) | -| Pro | 512 | strict self=N/A | strict self=PASS; vs Torch=N/A; band=N/A | strict self=PASS; vs Torch=N/A; vs master=PASS; band=N/A | -| Pro | 4096 | strict self=N/A | strict self=N/A; vs Torch=N/A; band=N/A | strict self=N/A; vs Torch=N/A; vs master=N/A; band=N/A | - -## Three accuracy columns - -Each field: worst pairwise max-absolute difference over same-frame outputs; self includes within/across-process repeats. Scientific band multiplier = worst deviation from compiled TORCH / TORCH own worst repeat max_abs, separately per field/model/size/system. <=3 is the meeting criterion, not a replacement for the fixed strict elementwise gate. Zero repeat band requires zero cross difference. Energy/virial eV, force eV/Angstrom, stress eV/Angstrom^3. - -| Model/system | Atoms | Output | Compiled Torch | Current master | Candidate | -| --- | ---: | --- | --- | --- | --- | -| Neo | 96 | energy | self max_abs=1.222e-05 | self max_abs=1.073e-05; vs Torch=1.115e-05; band×0.912 | self max_abs=6.855e-06; vs Torch=1.127e-05; band×0.922 | -| Neo | 96 | forces | self max_abs=4.93e-06 | self max_abs=4.474e-06; vs Torch=7.196e-06; band×1.46 | self max_abs=4.369e-06; vs Torch=7.185e-06; band×1.46 | -| Neo | 96 | virial | self max_abs=2.222e-05 | self max_abs=2.443e-05; vs Torch=4.824e-05; band×2.17 | self max_abs=2.69e-05; vs Torch=5.232e-05; band×2.35 | -| Neo | 96 | stress | self max_abs=4.08e-08 | self max_abs=4.486e-08; vs Torch=8.858e-08; band×2.17 | self max_abs=4.938e-08; vs Torch=9.607e-08; band×2.35 | -| Neo | 512 | energy | self max_abs=1.776e-05 | self max_abs=2.247e-05; vs Torch=2.021e-05; band×1.14 | self max_abs=2.056e-05; vs Torch=2.718e-05; band×1.53 | -| Neo | 512 | forces | self max_abs=4.901e-06 | self max_abs=5.144e-06; vs Torch=7.15e-06; band×1.46 | self max_abs=5.012e-06; vs Torch=7.02e-06; band×1.43 | -| Neo | 512 | virial | self max_abs=6.951e-05 | self max_abs=6.508e-05; vs Torch=0.0001673; band×2.41 | self max_abs=5.708e-05; vs Torch=0.0001572; band×2.26 | -| Neo | 512 | stress | self max_abs=2.393e-08 | self max_abs=2.24e-08; vs Torch=5.758e-08; band×2.41 | self max_abs=1.965e-08; vs Torch=5.411e-08; band×2.26 | -| Neo | 4096 | energy | OOM | self max_abs=5.96e-05; Torch ref unavailable | self max_abs=5.788e-05; Torch ref unavailable | -| Neo | 4096 | forces | OOM | self max_abs=5.564e-06; Torch ref unavailable | self max_abs=5.939e-06; Torch ref unavailable | -| Neo | 4096 | virial | OOM | self max_abs=0.0001374; Torch ref unavailable | self max_abs=0.0002537; Torch ref unavailable | -| Neo | 4096 | stress | OOM | self max_abs=5.913e-09; Torch ref unavailable | self max_abs=1.092e-08; Torch ref unavailable | -| NeoCu | 96 | energy | self max_abs=3.636e-06 | self max_abs=4.59e-06; vs Torch=6.855e-06; band×1.89 | self max_abs=4.411e-06; vs Torch=5.782e-06; band×1.59 | -| NeoCu | 96 | forces | self max_abs=6.306e-07 | self max_abs=6.496e-07; vs Torch=6.391e-07; band×1.01 | self max_abs=6.476e-07; vs Torch=6.297e-07; band×0.999 | -| NeoCu | 96 | virial | self max_abs=1.361e-05 | self max_abs=1.663e-05; vs Torch=2.707e-05; band×1.99 | self max_abs=1.739e-05; vs Torch=2.837e-05; band×2.08 | -| NeoCu | 96 | stress | self max_abs=1.2e-08 | self max_abs=1.466e-08; vs Torch=2.386e-08; band×1.99 | self max_abs=1.533e-08; vs Torch=2.5e-08; band×2.08 | -| NeoCu | 512 | energy | self max_abs=1.138e-05 | self max_abs=1.007e-05; vs Torch=1.919e-05; band×1.69 | self max_abs=1.085e-05; vs Torch=1.86e-05; band×1.63 | -| NeoCu | 512 | forces | self max_abs=6.573e-07 | self max_abs=6.11e-07; vs Torch=7.357e-07; band×1.12 | self max_abs=7.186e-07; vs Torch=7.158e-07; band×1.09 | -| NeoCu | 512 | virial | self max_abs=4.521e-05 | self max_abs=3.137e-05; vs Torch=0.000113; band×2.5 | self max_abs=4.702e-05; vs Torch=0.0001295; band×2.86 | -| NeoCu | 512 | stress | self max_abs=7.471e-09 | self max_abs=5.184e-09; vs Torch=1.867e-08; band×2.5 | self max_abs=7.77e-09; vs Torch=2.139e-08; band×2.86 | -| NeoCu | 4096 | energy | self max_abs=2.599e-05 | self max_abs=4.148e-05; vs Torch=8.726e-05; band×3.36 | self max_abs=3.821e-05; vs Torch=8.494e-05; band×3.27 | -| NeoCu | 4096 | forces | self max_abs=7.152e-07 | self max_abs=7.069e-07; vs Torch=8.014e-07; band×1.12 | self max_abs=7.169e-07; vs Torch=7.932e-07; band×1.11 | -| NeoCu | 4096 | virial | self max_abs=0.0001036 | self max_abs=0.0001054; vs Torch=0.0006932; band×6.69 | self max_abs=0.0001111; vs Torch=0.000695; band×6.71 | -| NeoCu | 4096 | stress | self max_abs=2.14e-09 | self max_abs=2.178e-09; vs Torch=1.432e-08; band×6.69 | self max_abs=2.295e-09; vs Torch=1.435e-08; band×6.71 | -| Nano | 96 | energy | self max_abs=2.658e-05 | self max_abs=1.878e-05; vs Torch=3.499e-05; band×1.32 | self max_abs=2.122e-05; vs Torch=3.982e-05; band×1.5 | -| Nano | 96 | forces | self max_abs=1.136e-05 | self max_abs=1.22e-05; vs Torch=1.286e-05; band×1.13 | self max_abs=1.15e-05; vs Torch=1.269e-05; band×1.12 | -| Nano | 96 | virial | self max_abs=7.839e-05 | self max_abs=8.811e-05; vs Torch=9.567e-05; band×1.22 | self max_abs=8.601e-05; vs Torch=9.163e-05; band×1.17 | -| Nano | 96 | stress | self max_abs=1.439e-07 | self max_abs=1.618e-07; vs Torch=1.757e-07; band×1.22 | self max_abs=1.579e-07; vs Torch=1.682e-07; band×1.17 | -| Nano | 512 | energy | self max_abs=6.02e-05 | self max_abs=6.39e-05; vs Torch=0.0001107; band×1.84 | self max_abs=5.358e-05; vs Torch=0.0001102; band×1.83 | -| Nano | 512 | forces | self max_abs=1.488e-05 | self max_abs=1.347e-05; vs Torch=1.477e-05; band×0.992 | self max_abs=1.348e-05; vs Torch=1.325e-05; band×0.89 | -| Nano | 512 | virial | self max_abs=0.000201 | self max_abs=0.0001863; vs Torch=0.0002575; band×1.28 | self max_abs=0.0002203; vs Torch=0.000256; band×1.27 | -| Nano | 512 | stress | self max_abs=6.921e-08 | self max_abs=6.415e-08; vs Torch=8.866e-08; band×1.28 | self max_abs=7.585e-08; vs Torch=8.813e-08; band×1.27 | -| Nano | 4096 | energy | self max_abs=0.0001612 | self max_abs=0.0001924; vs Torch=0.0004887; band×3.03 | self max_abs=0.0002133; vs Torch=0.0005112; band×3.17 | -| Nano | 4096 | forces | self max_abs=1.484e-05 | self max_abs=1.563e-05; vs Torch=1.613e-05; band×1.09 | self max_abs=1.605e-05; vs Torch=1.554e-05; band×1.05 | -| Nano | 4096 | virial | self max_abs=0.0004504 | self max_abs=0.0005898; vs Torch=0.0007157; band×1.59 | self max_abs=0.0005332; vs Torch=0.0007943; band×1.76 | -| Nano | 4096 | stress | self max_abs=1.938e-08 | self max_abs=2.538e-08; vs Torch=3.08e-08; band×1.59 | self max_abs=2.294e-08; vs Torch=3.418e-08; band×1.76 | -| Mini | 96 | energy | self max_abs=1.246e-05 | self max_abs=1.049e-05; vs Torch=1.836e-05; band×1.47 | self max_abs=1.74e-05; vs Torch=1.651e-05; band×1.33 | -| Mini | 96 | forces | self max_abs=8.618e-06 | self max_abs=7.551e-06; vs Torch=1.08e-05; band×1.25 | self max_abs=8.28e-06; vs Torch=1.135e-05; band×1.32 | -| Mini | 96 | virial | self max_abs=6.538e-05 | self max_abs=4.644e-05; vs Torch=8.237e-05; band×1.26 | self max_abs=7.174e-05; vs Torch=9.37e-05; band×1.43 | -| Mini | 96 | stress | self max_abs=1.2e-07 | self max_abs=8.526e-08; vs Torch=1.512e-07; band×1.26 | self max_abs=1.317e-07; vs Torch=1.72e-07; band×1.43 | -| Mini | 512 | energy | self max_abs=3.606e-05 | self max_abs=3.594e-05; vs Torch=3.952e-05; band×1.1 | self max_abs=2.813e-05; vs Torch=3.04e-05; band×0.843 | -| Mini | 512 | forces | self max_abs=8.601e-06 | self max_abs=8.582e-06; vs Torch=1.21e-05; band×1.41 | self max_abs=9.532e-06; vs Torch=1.289e-05; band×1.5 | -| Mini | 512 | virial | self max_abs=0.0001708 | self max_abs=0.0001244; vs Torch=0.0002595; band×1.52 | self max_abs=0.0001445; vs Torch=0.0002485; band×1.45 | -| Mini | 512 | stress | self max_abs=5.882e-08 | self max_abs=4.283e-08; vs Torch=8.933e-08; band×1.52 | self max_abs=4.975e-08; vs Torch=8.555e-08; band×1.45 | -| Mini | 4096 | energy | self max_abs=7.707e-05 | self max_abs=0.0001156; vs Torch=0.0001388; band×1.8 | self max_abs=8.416e-05; vs Torch=0.0001465; band×1.9 | -| Mini | 4096 | forces | self max_abs=1.004e-05 | self max_abs=9.328e-06; vs Torch=1.306e-05; band×1.3 | self max_abs=1.007e-05; vs Torch=1.398e-05; band×1.39 | -| Mini | 4096 | virial | self max_abs=0.0003499 | self max_abs=0.0003119; vs Torch=0.001488; band×4.25 | self max_abs=0.0003646; vs Torch=0.001521; band×4.35 | -| Mini | 4096 | stress | self max_abs=1.506e-08 | self max_abs=1.342e-08; vs Torch=6.403e-08; band×4.25 | self max_abs=1.569e-08; vs Torch=6.544e-08; band×4.35 | -| Pro | 96 | energy | self max_abs=4.083e-06 | self max_abs=3.368e-06; vs Torch=5.037e-06; band×1.23 | self max_abs=3.338e-06; vs Torch=5.871e-06; band×1.44 | -| Pro | 96 | forces | self max_abs=1.667e-06 | self max_abs=1.153e-06; vs Torch=1.919e-06; band×1.15 | self max_abs=1.144e-06; vs Torch=1.691e-06; band×1.01 | -| Pro | 96 | virial | self max_abs=9.613e-06 | self max_abs=8.763e-06; vs Torch=1.613e-05; band×1.68 | self max_abs=7.585e-06; vs Torch=1.643e-05; band×1.71 | -| Pro | 96 | stress | self max_abs=1.765e-08 | self max_abs=1.609e-08; vs Torch=2.962e-08; band×1.68 | self max_abs=1.393e-08; vs Torch=3.017e-08; band×1.71 | -| Pro | 512 | energy | OOM | self max_abs=1.019e-05; Torch ref unavailable | self max_abs=8.345e-06; Torch ref unavailable | -| Pro | 512 | forces | OOM | self max_abs=1.36e-06; Torch ref unavailable | self max_abs=1.497e-06; Torch ref unavailable | -| Pro | 512 | virial | OOM | self max_abs=2.018e-05; Torch ref unavailable | self max_abs=1.641e-05; Torch ref unavailable | -| Pro | 512 | stress | OOM | self max_abs=6.947e-09; Torch ref unavailable | self max_abs=5.648e-09; Torch ref unavailable | -| Pro | 4096 | energy | OOM | OOM | OOM | -| Pro | 4096 | forces | OOM | OOM | OOM | -| Pro | 4096 | virial | OOM | OOM | OOM | -| Pro | 4096 | stress | OOM | OOM | OOM | - -Strict per-element atol1e-5/rtol1e-4 and finite results, mean_abs/max_relative and within/across detail remain in ACCURACY_TABLE.md and summary.json. Pure-reference OOM prevents band acceptance. Band PASS does not silently erase strict FAIL. - -## Timing and memory — process medians and worst capacity - -Compilation excluded from timing, included in first/full memory. This independent-process protocol does not freeze all generated autotune choices: no stable isolated speedup is inferred solely from these percentages. GB=1e9B. Both allocated/reserved raw bytes are retained in result.json. Numbers are preliminary until 3 processes per arm complete. - -| Model/system | Atoms | Mode | Processes | Wall P50 ms | Wall P90 ms | Event P50 ms | First alloc GB | Full peak incl first GB | Steady alloc GB | -| --- | ---: | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: | -| Neo | 96 | TORCH | 3/3 | 13.075581 | 13.151851 | 13.030096 | 1.118502 | 1.118502 | 1.017839 | -| Neo | 96 | BASE | 3/3 | 17.992521 | 18.385345 | 17.950175 | 0.646372 | 0.646372 | 0.545709 | -| Neo | 96 | ECS | 3/3 | 18.035012 | 18.224658 | 17.991696 | 0.658145 | 0.658145 | 0.557481 | -| Neo | 512 | TORCH | 3/3 | 46.979462 | 47.018433 | 46.936768 | 5.331018 | 5.331018 | 5.331018 | -| Neo | 512 | BASE | 3/3 | 23.472956 | 23.531686 | 23.427423 | 2.809001 | 2.809001 | 2.809001 | -| Neo | 512 | ECS | 3/3 | 23.494863 | 23.648258 | 23.449760 | 2.871368 | 2.871368 | 2.871368 | -| Neo | 4096 | BASE | 3/3 | 156.512587 | 156.684338 | 156.465652 | 22.313645 | 22.313645 | 22.313645 | -| Neo | 4096 | ECS | 3/3 | 156.594862 | 156.777619 | 156.533646 | 22.806378 | 22.806378 | 22.806378 | -| NeoCu | 96 | TORCH | 3/3 | 12.232151 | 12.297081 | 12.188800 | 0.541385 | 0.541385 | 0.440721 | -| NeoCu | 96 | BASE | 3/3 | 18.154909 | 18.366497 | 18.111904 | 0.353757 | 0.353757 | 0.253004 | -| NeoCu | 96 | ECS | 3/3 | 18.259421 | 18.342752 | 18.215392 | 0.355033 | 0.355033 | 0.254369 | -| NeoCu | 512 | TORCH | 3/3 | 22.897386 | 22.935968 | 22.853473 | 2.253040 | 2.253040 | 2.253040 | -| NeoCu | 512 | BASE | 3/3 | 18.317986 | 18.392029 | 18.274000 | 1.249555 | 1.249555 | 1.249555 | -| NeoCu | 512 | ECS | 3/3 | 18.244627 | 18.391290 | 18.201713 | 1.254748 | 1.254748 | 1.254748 | -| NeoCu | 4096 | TORCH | 3/3 | 160.911316 | 161.083811 | 160.864113 | 17.866908 | 17.866908 | 17.866908 | -| NeoCu | 4096 | BASE | 3/3 | 80.131557 | 80.263306 | 80.085968 | 9.842755 | 9.842755 | 9.842755 | -| NeoCu | 4096 | ECS | 3/3 | 80.314757 | 80.400489 | 80.269539 | 9.873422 | 9.873422 | 9.873422 | -| Nano | 96 | TORCH | 3/3 | 10.842765 | 10.894773 | 10.799536 | 0.267505 | 0.267505 | 0.168914 | -| Nano | 96 | BASE | 3/3 | 10.827782 | 10.899461 | 10.785792 | 0.204831 | 0.204831 | 0.104168 | -| Nano | 96 | ECS | 3/3 | 10.780998 | 10.826602 | 10.738672 | 0.204831 | 0.204831 | 0.104168 | -| Nano | 512 | TORCH | 3/3 | 11.856695 | 11.910365 | 11.813136 | 0.845872 | 0.845872 | 0.845872 | -| Nano | 512 | BASE | 3/3 | 11.192140 | 11.325888 | 11.147888 | 0.500028 | 0.500028 | 0.500028 | -| Nano | 512 | ECS | 3/3 | 11.160740 | 11.249917 | 11.116624 | 0.500028 | 0.500028 | 0.500028 | -| Nano | 4096 | TORCH | 3/3 | 56.467913 | 56.592532 | 56.422001 | 6.678115 | 6.678115 | 6.678115 | -| Nano | 4096 | BASE | 3/3 | 33.593906 | 33.720488 | 33.547775 | 3.910505 | 3.910505 | 3.910505 | -| Nano | 4096 | ECS | 3/3 | 33.589447 | 33.682449 | 33.544529 | 3.910505 | 3.910505 | 3.910505 | -| Mini | 96 | TORCH | 3/3 | 11.962016 | 12.010488 | 11.917488 | 0.400473 | 0.400473 | 0.299810 | -| Mini | 96 | BASE | 3/3 | 11.099674 | 11.319123 | 11.057840 | 0.286303 | 0.286303 | 0.190500 | -| Mini | 96 | ECS | 3/3 | 11.180259 | 11.242529 | 11.135952 | 0.286303 | 0.286303 | 0.190500 | -| Mini | 512 | TORCH | 3/3 | 18.303323 | 18.349090 | 18.260481 | 1.528662 | 1.528662 | 1.528662 | -| Mini | 512 | BASE | 3/3 | 12.184330 | 12.276598 | 12.140736 | 0.944773 | 0.945822 | 0.945822 | -| Mini | 512 | ECS | 3/3 | 12.208581 | 12.249058 | 12.166288 | 0.944773 | 0.945822 | 0.945822 | -| Mini | 4096 | TORCH | 3/3 | 122.270842 | 122.379773 | 122.217281 | 12.115697 | 12.115697 | 12.115697 | -| Mini | 4096 | BASE | 3/3 | 61.097768 | 61.183442 | 61.052145 | 7.452142 | 7.453190 | 7.453190 | -| Mini | 4096 | ECS | 3/3 | 60.989576 | 61.053372 | 60.944431 | 7.452142 | 7.453190 | 7.453190 | -| Pro | 96 | TORCH | 3/3 | 125.952058 | 126.149409 | 125.908112 | 11.443602 | 11.443602 | 11.443602 | -| Pro | 96 | BASE | 3/3 | 66.992101 | 67.231234 | 66.948528 | 5.139665 | 5.139665 | 5.039002 | -| Pro | 96 | ECS | 3/3 | 67.021606 | 67.312684 | 66.977631 | 5.139665 | 5.139665 | 5.039002 | -| Pro | 512 | BASE | 3/3 | 330.464768 | 331.377085 | 330.418015 | 25.395441 | 25.395441 | 25.395441 | -| Pro | 512 | ECS | 3/3 | 330.612567 | 331.352630 | 330.561584 | 25.395441 | 25.395441 | 25.395441 | - -## Route and acceptance limits - -Nano/Mini/Pro candidate is native fallback, not demonstrated ECS acceleration. Neo dispatch must be checked against generated wrappers; current single-cohort specialization must not be described as 80 runtime batches. Pro-MPtrj is not OMat24-Pro; original checkpoint unmodified, reader-only legacy metadata alias applies equally to all arms. H20/PT2/C++/training and unmeasured larger models are not accepted by this matrix. - -Upstream review also requires focused guard/alias tests, no new public fine-grained development switch for a merge-ready path, freeze-time policy/selection where applicable, optional-Triton CPU safety and real CI approval. Current port keeps the old default-off experimental switch pending policy resolution. Do not submit as ready-to-merge. - -## Candidate vs current-master changes - -Positive percentage means reduction/improvement; negative means increase. Medians of independent process quantiles, not a controlled paired significance estimate. Fallback timing variation is not attributed to ECS. - -| Model/system | Atoms | Time reduction % | First-inclusive full alloc reduction % | Steady alloc reduction % | Candidate route | -| --- | ---: | ---: | ---: | ---: | --- | -| Neo | 96 | -0.2362 | -1.8213 | -2.1573 | single-cohort specialized, not bounded runtime batching | -| Neo | 512 | -0.0933 | -2.2202 | -2.2202 | single-cohort specialized, not bounded runtime batching | -| Neo | 4096 | -0.0526 | -2.2082 | -2.2082 | single-cohort specialized, not bounded runtime batching | -| NeoCu | 96 | -0.5757 | -0.3605 | -0.5395 | single-cohort specialized, not bounded runtime batching | -| NeoCu | 512 | 0.4005 | -0.4156 | -0.4156 | single-cohort specialized, not bounded runtime batching | -| NeoCu | 4096 | -0.2286 | -0.3116 | -0.3116 | single-cohort specialized, not bounded runtime batching | -| Nano | 96 | 0.4321 | 0.0000 | 0.0000 | native fallback | -| Nano | 512 | 0.2806 | 0.0000 | 0.0000 | native fallback | -| Nano | 4096 | 0.0133 | 0.0000 | 0.0000 | native fallback | -| Mini | 96 | -0.7260 | 0.0000 | 0.0000 | native fallback | -| Mini | 512 | -0.1990 | 0.0000 | 0.0000 | native fallback | -| Mini | 4096 | 0.1771 | 0.0000 | 0.0000 | native fallback | -| Pro | 96 | -0.0440 | 0.0000 | 0.0000 | native fallback | -| Pro | 512 | -0.0447 | 0.0000 | 0.0000 | native fallback | -| Pro | 4096 | N/A | N/A | N/A | incomplete/OOM | diff --git a/doc/development/ecs-validation-20261025/analyze.py b/doc/development/ecs-validation-20261025/analyze.py deleted file mode 100644 index c8db191f33..0000000000 --- a/doc/development/ecs-validation-20261025/analyze.py +++ /dev/null @@ -1,250 +0,0 @@ -"""All-pairs scientific-accuracy ranges; never relax thresholds.""" -# ruff: noqa: T201, ANN001, ANN201, RUF001 -- standalone manual experiment, not imported package code - -import argparse -from itertools import combinations, product -import json -from pathlib import Path - -import numpy as np - -P = argparse.ArgumentParser() -P.add_argument("--root", type=Path, default=Path(__file__).resolve().parent) -a = P.parse_args() -root = a.root -all_results = [] -cases = {} -for d in sorted((root / "results").glob("*")): - if not (d / "result.json").exists(): - continue - result = json.loads((d / "result.json").read_text()) - manifest = ( - json.loads((d / "manifest.json").read_text()) - if (d / "manifest.json").exists() - else {} - ) - pieces = d.name.split("_") - model, n, mode, proc = pieces[0], pieces[1], "_".join(pieces[2:-1]), pieces[-1] - entry = { - "run": d.name, - "model": model, - "n": int(n[1:]), - "mode": mode, - "gpu": manifest.get("args", {}).get("gpu"), - "process": proc, - "status": "oom" - if "deepmd.utils.errors.OutOfMemoryError:" in result.get("exception", "") - else result["status"], - "raw_status": result["status"], - "model_sha256": manifest.get("model_sha256"), - "routes": result.get("routes"), - "runtime_cohort_calls": result.get("runtime_cohort_calls", []), - "finite": result.get("finite"), - "parameter_count": result.get("parameter_count"), - "first_peak": result.get("first_peak"), - "complete_peak": result.get("complete_peak"), - } - all_results.append(entry) - if result["status"] != "completed": - continue - with np.load(d / "outputs.npz") as z: - arrays = {k: z[k] for k in z.files} - with np.load(d / "inputs.npz") as z: - inputs = {k: z[k] for k in z.files} - key = (model, int(n[1:])) - group = cases.setdefault(key, {"inputs": inputs, "modes": {}}) - for k, v in inputs.items(): - if not np.array_equal(group["inputs"][k], v): - raise ValueError(f"inputs differ: {d}/{k}") - group["modes"].setdefault(mode, []).append((proc, arrays)) - - -for model in {r["model"] for r in all_results}: - hashes = { - r["model_sha256"] - for r in all_results - if r["model"] == model and r["model_sha256"] - } - assert len(hashes) == 1, f"checkpoint changed inside the matrix: {model}" -for model, n in {(r["model"], r["n"]) for r in all_results}: - devices = { - r["gpu"] - for r in all_results - if (r["model"], r["n"]) == (model, n) and r["gpu"] is not None - } - assert len(devices) == 1, f"cross-GPU case mixing: {model}/{n}" - - -def error(got, ref): - finite = bool(np.isfinite(got).all() and np.isfinite(ref).all()) - if not finite: - return {"finite": False, "passed": False} - diff = np.abs(got - ref) - ratio = diff / (1e-5 + 1e-4 * np.abs(ref)) - worst = int(np.argmax(ratio)) - return { - "finite": True, - "passed": bool((ratio <= 1).all()), - "max_abs": float(diff.max()), - "mean_abs": float(diff.mean()), - "max_relative": float((diff / np.maximum(np.abs(ref), 1e-8)).max()), - "max_ratio": float(ratio.max()), - "bitwise": bool(np.array_equal(got, ref)), - "worst_ratio_element": { - "index": [int(v) for v in np.unravel_index(worst, ratio.shape)], - "got": float(got.flat[worst]), - "reference": float(ref.flat[worst]), - "abs_error": float(diff.flat[worst]), - "tolerance": float(1e-5 + 1e-4 * abs(ref.flat[worst])), - }, - } - - -groups = [] -details = [] -for (model, n), case in sorted(cases.items()): - modes = case["modes"] - for left, right in [ - ("TORCH", "TORCH"), - ("BASE", "BASE"), - ("ECS", "ECS"), - ("BASE", "TORCH"), - ("ECS", "TORCH"), - ("ECS", "BASE"), - ("ECS_RUNTIME", "ECS_RUNTIME"), - ("ECS_RUNTIME", "BASE"), - ("ECS_RUNTIME", "TORCH"), - ("ECS_RUNTIME", "ECS"), - ]: - if left not in modes or right not in modes: - continue - for scope in ( - ["within_process", "across_process"] - if left == right - else ["cross_implementation"] - ): - raw = [] - for frame in range(3): - la = [(p, r, arr) for p, arr in modes[left] for r in range(3)] - ra = [(p, r, arr) for p, arr in modes[right] for r in range(3)] - pairs = combinations(la, 2) if left == right else product(la, ra) - for (lp, lr, lv), (rp, rr, rv) in pairs: - if scope == "within_process" and lp != rp: - continue - if scope == "across_process" and lp == rp: - continue - for out in ("energy", "forces", "virial", "stress"): - raw.append( - { - "frame": frame, - "left_process": lp, - "left_repeat": lr, - "right_process": rp, - "right_repeat": rr, - "output": out, - **error( - lv[f"{lr}_{frame}_{out}"], rv[f"{rr}_{frame}_{out}"] - ), - } - ) - if not raw: - continue - record = { - "model": model, - "n": n, - "left": left, - "right": right, - "scope": scope, - "left_completed_processes": len(modes[left]), - "right_completed_processes": len(modes[right]), - "all_passed": all(v["passed"] for v in raw), - "metrics": {}, - } - for out in ("energy", "forces", "virial", "stress"): - rows = [r for r in raw if r["output"] == out] - finite = [r for r in rows if r["finite"]] - record["metrics"][out] = { - "comparisons": len(rows), - "failures": sum(not r["passed"] for r in rows), - "all_finite": len(finite) == len(rows), - "all_bitwise": all(r.get("bitwise", False) for r in rows), - "max_abs_range": [ - min(r["max_abs"] for r in finite), - max(r["max_abs"] for r in finite), - ] - if finite - else None, - "worst_mean_abs": max( - (r["mean_abs"] for r in finite), default=None - ), - "worst_max_relative": max( - (r["max_relative"] for r in finite), default=None - ), - "worst_tolerance_ratio": max( - (r["max_ratio"] for r in finite), default=None - ), - } - groups.append(record) - details.append( - { - "model": model, - "n": n, - "left": left, - "right": right, - "scope": scope, - "pairs": raw, - } - ) -summary = { - "threshold": {"atol": 1e-5, "rtol": 1e-4, "relative_floor": 1e-8}, - "range_definition": "min/max of max_abs over same-frame comparisons; NOT a confidence interval", - "statuses": all_results, - "comparisons": groups, -} -(root / "summary.json").write_text(json.dumps(summary, indent=2)) -(root / "pair_details.json").write_text(json.dumps(details, indent=2)) -lines = [ - "# ECS 多模型多尺寸精度测试", - "", - "> 精度优先;未放宽阈值。误差范围为每对输出max_abs的min~max,不是置信区间。基线SHA与模型SHA见JSON。", - "", - "模式:TORCH=纯PyTorch编译;ECS=当前PR候选(非Neo为回退);ECS_RUNTIME=强制真实8192分批。单位:能量/位力eV,力eV/Å,stress eV/ų。所有结果均不是DFT预测误差。", - "", - "| 模型 | 原子数 | 对照 | 范围 | 完成进程数 | 能量max_abs范围 | 力max_abs范围 | 位力max_abs范围 | stress max_abs范围 | 最差误差/容差 | 状态 |", - "| --- | ---: | --- | --- | --- | --- | --- | --- | --- | ---: | --- |", -] - - -def fmt(r): - return "~".join(f"{v:.3e}" for v in r) if r else "nonfinite" - - -for g in groups: - m = g["metrics"] - worst = max(v["worst_tolerance_ratio"] or 0 for v in m.values()) - lines.append( - f"| {g['model']} | {g['n']} | {g['left']} vs {g['right']} | {g['scope']} | {g['left_completed_processes']}/{g['right_completed_processes']} | {fmt(m['energy']['max_abs_range'])} | {fmt(m['forces']['max_abs_range'])} | {fmt(m['virial']['max_abs_range'])} | {fmt(m['stress']['max_abs_range'])} | {worst:.4f} | {'PASS' if g['all_passed'] else 'FAIL'}{'(样本未齐)' if min(g['left_completed_processes'], g['right_completed_processes']) < 3 else ''} |" - ) -lines += [ - "", - "## 所有进程状态(含OOM/失败,不能略去)", - "", - "| 运行 | 状态 | 参数量 | opaque ECS调用 | single路径标记 |", - "| --- | --- | ---: | ---: | --- |", -] -for r in all_results: - routes = r["routes"] or [] - lines.append( - f"| {r['run']} | {r['status']} | {r['parameter_count']} | {sum(x['opaque_cohort_calls'] for x in routes)} | {any(x['single_cohort_marker'] for x in routes)} |" - ) -(root / "ACCURACY_TABLE.md").write_text("\n".join(lines) + "\n") -print( - "runs", - len(all_results), - "completed", - sum(r["status"] == "completed" for r in all_results), - "comparisons", - len(groups), - "failed_groups", - sum(not g["all_passed"] for g in groups), -) diff --git a/doc/development/ecs-validation-20261025/port-to-2ba617bc.patch b/doc/development/ecs-validation-20261025/port-to-2ba617bc.patch deleted file mode 100644 index 25d65b4d65..0000000000 --- a/doc/development/ecs-validation-20261025/port-to-2ba617bc.patch +++ /dev/null @@ -1,720 +0,0 @@ -diff --git a/deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py b/deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py -index a02f4288..d874c8ed 100644 ---- a/deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py -+++ b/deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py -@@ -91,6 +91,7 @@ from __future__ import ( - annotations, - ) - -+import os - from typing import ( - TYPE_CHECKING, - NamedTuple, -@@ -161,6 +162,10 @@ _MAX_MIXER_RANK = 4 - - _ROTATE_MIX_BWD_CONFIG = (1, 2) # per-edge backward (warps, stages) - -+# Experimental, frozen first-order inference only. Read before compilation; -+# changing the switch requires a new process/graph. Disabled by default. -+_EDGE_COHORT_INFER = os.environ.get("DP_SO2_EDGE_COHORT_INFER", "0") == "1" -+ - - # ====================================================================== - # Eager reference / fallback implementations -@@ -1369,6 +1374,7 @@ if SO2_VALUE_PATH_TRITON_AVAILABLE: - L: tl.constexpr, - CF: tl.constexpr, - BLOCK_M: tl.constexpr, -+ saved_edges=0, - ): - """Recompute the gate sigmoids from the saved pre-activation (backward).""" - ROW: tl.constexpr = (3 * L + 1) * CF -@@ -1386,7 +1392,8 @@ if SO2_VALUE_PATH_TRITON_AVAILABLE: - cm = mm & (nc < CF)[None, :] - wm = ((nc < CF)[:, None]) & ((nc < CF)[None, :]) - -- z_row = z_ptr + (layer * n_focus + fid) * n_edge * ROW + offs_m * ROW -+ z_stride = tl.where(saved_edges > 0, saved_edges, n_edge).to(tl.int64) -+ z_row = z_ptr + (layer * n_focus + fid) * z_stride * ROW + offs_m * ROW - z_s = tl.load(z_row[:, None] + nc[None, :], mask=cm, other=0.0).to(tl.float32) - sig_row = sig_ptr + (fid * n_edge + offs_m) * LG - for g in tl.static_range(L): -@@ -1420,6 +1427,7 @@ if SO2_VALUE_PATH_TRITON_AVAILABLE: - RECOMPUTE_SIG: tl.constexpr, - RECOVER_INPUT: tl.constexpr, - BLOCK_M: tl.constexpr, -+ saved_edges=0, - ): - """Pointwise part of the gated-layer backward. - -@@ -1456,7 +1464,8 @@ if SO2_VALUE_PATH_TRITON_AVAILABLE: - wm = ((nc < CF)[:, None]) & ((nc < CF)[None, :]) - - g_row = g_ptr + fid * n_edge * ROW + offs_m * ROW -- z_row = z_ptr + (layer * n_focus + fid) * n_edge * ROW + offs_m * ROW -+ z_stride = tl.where(saved_edges > 0, saved_edges, n_edge).to(tl.int64) -+ z_row = z_ptr + (layer * n_focus + fid) * z_stride * ROW + offs_m * ROW - gz_row = gz_ptr + fid * n_edge * ROW + offs_m * ROW - sig_row = sig_ptr + (fid * n_edge + offs_m) * LG - gl_row = gl_ptr + (fid * n_edge + offs_m) * LG -@@ -2014,6 +2023,7 @@ if SO2_VALUE_PATH_TRITON_AVAILABLE: - BLOCK_M: tl.constexpr, - BLOCK_N: tl.constexpr, - BLOCK_K: tl.constexpr, -+ output_edges=0, - ): - """Backward block GEMM ``g_u = residual + gz @ W^T`` over both blocks. - -@@ -2044,7 +2054,8 @@ if SO2_VALUE_PATH_TRITON_AVAILABLE: - gz_row = gz_ptr + fid * ROW + offs_m * (n_focus * ROW) - else: - gz_row = gz_ptr + fid * n_edge * ROW + offs_m * ROW -- gu_row = gu_ptr + fid * n_edge * ROW + offs_m * ROW -+ output_stride = tl.where(output_edges > 0, output_edges, n_edge).to(tl.int64) -+ gu_row = gu_ptr + fid * output_stride * ROW + offs_m * ROW - if FOLD_ALPHA: - alpha = tl.load(alpha_ptr + offs_m * n_focus + fid, mask=m_mask, other=0.0) - -@@ -2435,6 +2446,7 @@ def _launch_stack_point_backward( - L=lmax, - CF=focus_dim, - BLOCK_M=block_m, -+ saved_edges=0, - num_warps=warps, - num_stages=stages, - ) -@@ -2458,6 +2470,7 @@ def _launch_stack_point_backward( - RECOMPUTE_SIG=recompute_sigmoid, - RECOVER_INPUT=recover, - BLOCK_M=block_m, -+ saved_edges=0, - num_warps=warps, - num_stages=stages, - ) -@@ -3222,6 +3235,7 @@ def _stack_backward_traversal( - BLOCK_M=block_m, - BLOCK_N=block_n, - BLOCK_K=block_k, -+ output_edges=0, - num_warps=warps, - num_stages=stages, - ) -@@ -3406,6 +3420,7 @@ def _stack_backward_traversal( - BLOCK_M=block_m, - BLOCK_N=block_n, - BLOCK_K=block_k, -+ output_edges=0, - num_warps=warps, - num_stages=stages, - ) -@@ -4960,7 +4975,18 @@ def _mixing_stack_backward(ctx, grad_out, grad_z, grad_u): - None, - None, - ) -- grad_u0, grad_alpha = _mixing_stack_bwd_op( -+ backward_op = _mixing_stack_bwd_op -+ if _EDGE_COHORT_INFER: -+ from .so2_edge_cohort import ( -+ cohort_backward, -+ supports_edge_cohort, -+ ) -+ -+ if supports_edge_cohort( -+ grad_out, z_all, ctx.lmax, ctx.focus_dim, ctx.apply_alpha -+ ): -+ backward_op = cohort_backward -+ grad_u0, grad_alpha = backward_op( - grad_out, - x_local, - z_all, -diff --git a/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py b/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py -new file mode 100644 ---- /dev/null -+++ b/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py -@@ -0,0 +1,380 @@ -+# SPDX-License-Identifier: LGPL-3.0-or-later -+"""Experimental edge-cohort backward for frozen, narrow SO(2) inference. -+ -+Keep native GEMM column parallelism and arithmetic, but traverse all layers -+of one cohort before advancing to the next cohort. Scratch scales with the -+cohort, not the entire graph. The saved activations and returned input gradient -+still have full edge extent. This Python runtime launcher is an online-compile -+prototype; standalone AOTInductor/C++ deployment is not validated. -+""" -+ -+from __future__ import annotations -+ -+import torch -+import triton -+from torch import Tensor -+from torch.library import wrap_triton -+ -+from . import so2_value_path as sv -+ -+COHORT_EDGES = 8192 -+SINGLE_COHORT_MAX_EDGES = 16384 -+ -+ -+def supports_edge_cohort( -+ grad_out: Tensor, z_all: Tensor, lmax: int, focus_dim: int, apply_alpha: bool -+) -> bool: -+ """Restrict opt-in dispatch to the experimentally checked Neo layout.""" -+ return ( -+ grad_out.is_cuda -+ and z_all.device == grad_out.device -+ and grad_out.dtype == torch.float32 -+ and z_all.dtype == torch.float32 -+ and grad_out.is_contiguous() -+ and z_all.is_contiguous() -+ and lmax == 3 -+ and focus_dim == 32 -+ and apply_alpha -+ and grad_out.ndim == 3 -+ and z_all.ndim == 4 -+ and grad_out.shape[1:] == (2, 320) -+ and z_all.shape[:2] == (2, 2) -+ and z_all.shape[2] == grad_out.shape[0] -+ and z_all.shape[3] == 320 -+ ) -+ -+ -+def cohort_input_backward_impl( -+ grad_out: Tensor, -+ z_all: Tensor, -+ alpha: Tensor, -+ w0t: Tensor, -+ w1t: Tensor, -+ gw: Tensor, -+ gwt: Tensor, -+ cohort_edges: int, -+) -> Tensor: -+ """Compute input gradients without retaining unrelated forward outputs. -+ -+ Kernels infer scratch focus strides from the cohort edge count. Independent -+ saved/output strides retain full-graph layout, including partial cohorts. -+ Only an internally owned residual is overwritten: matrix input ``gz`` and -+ GEMM output never alias, and caller-owned tensors remain read-only. -+ """ -+ if not supports_edge_cohort(grad_out, z_all, 3, 32, True): -+ raise ValueError("edge cohorts require contiguous FP32 Neo inference tensors") -+ if cohort_edges <= 0: -+ raise ValueError("cohort_edges must be positive") -+ if not all(t.is_contiguous() for t in (alpha, w0t, w1t, gw, gwt)): -+ raise ValueError("edge-cohort parameters must be contiguous") -+ n_gated, n_focus, n_edge, row = z_all.shape -+ result = grad_out.new_empty((n_focus, n_edge, row)) -+ if n_edge == 0: -+ return result -+ cap = min(n_edge, cohort_edges) -+ g = grad_out.new_empty((n_focus, cap, row)) -+ gz = torch.empty_like(g) -+ sig = grad_out.new_empty((n_focus, cap, 96)) -+ bm, bn, bk, warps, stages = sv.stack_fp32_configs(32, 3)[2] -+ n_tiles = triton.cdiv(128, bn) + triton.cdiv(192, bn) -+ inside, point_config, recompute_config = sv._point_backward_schedule( -+ 32, 3, train=False -+ ) -+ for start in range(0, n_edge, cap): -+ count = min(cap, n_edge - start) -+ go = grad_out[start:] -+ a = alpha[start:] -+ z = z_all.view(-1)[start * row :] -+ grid = (triton.cdiv(count, bm) * n_tiles, n_focus) -+ sv._stack_gemm_bwd_kernel[grid]( -+ go, -+ go, -+ w0t, -+ w1t, -+ a, -+ g, -+ count, -+ n_gated, -+ L=3, -+ CF=32, -+ G_EDGE_MAJOR=True, -+ FOLD_ALPHA=True, -+ RES_IS_GZ=True, -+ BLOCK_M=bm, -+ BLOCK_N=bn, -+ BLOCK_K=bk, -+ num_warps=warps, -+ num_stages=stages, -+ ) -+ for layer in range(n_gated - 1, -1, -1): -+ if not inside: -+ rbm, rw, rs = recompute_config -+ sv._stack_recompute_kernel[(triton.cdiv(count, rbm), n_focus)]( -+ z, -+ gw, -+ sig, -+ count, -+ layer, -+ L=3, -+ CF=32, -+ BLOCK_M=rbm, -+ saved_edges=n_edge, -+ num_warps=rw, -+ num_stages=rs, -+ ) -+ pbm, pw, ps = point_config -+ sv._stack_point_bwd_kernel[(triton.cdiv(count, pbm), n_focus)]( -+ g, -+ z, -+ sig, -+ gwt, -+ gz, -+ sig, -+ g, -+ g, -+ count, -+ layer, -+ L=3, -+ CF=32, -+ GLOGIT_OUT=False, -+ GLOGIT_STORE=False, -+ RECOMPUTE_SIG=inside, -+ RECOVER_INPUT=False, -+ BLOCK_M=pbm, -+ saved_edges=n_edge, -+ num_warps=pw, -+ num_stages=ps, -+ ) -+ # Residual elements are loaded before their matching output store. -+ # Distinct (edge, focus, column) tiles own disjoint residual elements. -+ target = result.view(-1)[start * row :] if layer == 0 else g -+ sv._stack_gemm_bwd_kernel[grid]( -+ gz, -+ g, -+ w0t, -+ w1t, -+ gz, -+ target, -+ count, -+ layer, -+ L=3, -+ CF=32, -+ G_EDGE_MAJOR=False, -+ FOLD_ALPHA=False, -+ RES_IS_GZ=False, -+ BLOCK_M=bm, -+ BLOCK_N=bn, -+ BLOCK_K=bk, -+ output_edges=n_edge if layer == 0 else count, -+ num_warps=warps, -+ num_stages=stages, -+ ) -+ return result -+ -+ -+# Small edge sets must not pay the opaque multi-cohort launcher overhead. -+# The residual and returned result share internally owned storage; gz never -+# aliases GEMM output. See the inference-only dispatcher below. -+@torch.library.triton_op("sezm_triton::so2_single_cohort_input_bwd", mutates_args=()) -+def _single_cohort_input_backward( -+ grad_out: Tensor, -+ z_all: Tensor, -+ alpha: Tensor, -+ w0t: Tensor, -+ w1t: Tensor, -+ gw: Tensor, -+ gwt: Tensor, -+ cohort_edges: int, -+) -> Tensor: -+ """Compute one small cohort with compiled launchers and owned residual reuse.""" -+ if not supports_edge_cohort(grad_out, z_all, 3, 32, True): -+ raise ValueError("edge cohorts require contiguous FP32 Neo inference tensors") -+ if cohort_edges <= 0: -+ raise ValueError("cohort_edges must be positive") -+ if not all(t.is_contiguous() for t in (alpha, w0t, w1t, gw, gwt)): -+ raise ValueError("edge-cohort parameters must be contiguous") -+ n_gated, n_focus, n_edge, row = z_all.shape -+ result = grad_out.new_empty((n_focus, n_edge, row)) -+ if n_edge == 0: -+ return result -+ cap = n_edge -+ g = result -+ gz = torch.empty_like(g) -+ sig = grad_out.new_empty((n_focus, cap, 96)) -+ bm, bn, bk, warps, stages = sv.stack_fp32_configs(32, 3)[2] -+ n_tiles = triton.cdiv(128, bn) + triton.cdiv(192, bn) -+ inside, point_config, recompute_config = sv._point_backward_schedule( -+ 32, 3, train=False -+ ) -+ start = 0 -+ count = min(cap, n_edge - start) -+ go = grad_out[start:] -+ a = alpha[start:] -+ z = z_all.view(-1)[start * row :] -+ grid = (triton.cdiv(count, bm) * n_tiles, n_focus) -+ wrap_triton(sv._stack_gemm_bwd_kernel)[grid]( -+ go, -+ go, -+ w0t, -+ w1t, -+ a, -+ g, -+ count, -+ n_gated, -+ L=3, -+ CF=32, -+ G_EDGE_MAJOR=True, -+ FOLD_ALPHA=True, -+ RES_IS_GZ=True, -+ output_edges=n_edge, -+ BLOCK_M=bm, -+ BLOCK_N=bn, -+ BLOCK_K=bk, -+ num_warps=warps, -+ num_stages=stages, -+ ) -+ for layer in range(n_gated - 1, -1, -1): -+ if not inside: -+ rbm, rw, rs = recompute_config -+ wrap_triton(sv._stack_recompute_kernel)[triton.cdiv(count, rbm), n_focus]( -+ z, -+ gw, -+ sig, -+ count, -+ layer, -+ L=3, -+ CF=32, -+ BLOCK_M=rbm, -+ saved_edges=n_edge, -+ num_warps=rw, -+ num_stages=rs, -+ ) -+ pbm, pw, ps = point_config -+ wrap_triton(sv._stack_point_bwd_kernel)[triton.cdiv(count, pbm), n_focus]( -+ g, -+ z, -+ sig, -+ gwt, -+ gz, -+ sig, -+ g, -+ g, -+ count, -+ layer, -+ L=3, -+ CF=32, -+ GLOGIT_OUT=False, -+ GLOGIT_STORE=False, -+ RECOMPUTE_SIG=inside, -+ RECOVER_INPUT=False, -+ BLOCK_M=pbm, -+ saved_edges=n_edge, -+ num_warps=pw, -+ num_stages=ps, -+ ) -+ target = result.view(-1)[start * row :] if layer == 0 else g -+ wrap_triton(sv._stack_gemm_bwd_kernel)[grid]( -+ gz, -+ g, -+ w0t, -+ w1t, -+ gz, -+ target, -+ count, -+ layer, -+ L=3, -+ CF=32, -+ G_EDGE_MAJOR=False, -+ FOLD_ALPHA=False, -+ RES_IS_GZ=False, -+ BLOCK_M=bm, -+ BLOCK_N=bn, -+ BLOCK_K=bk, -+ output_edges=n_edge if layer == 0 else count, -+ num_warps=warps, -+ num_stages=stages, -+ ) -+ return result -+ -+ -+@torch.library.custom_op("sezm_triton::so2_cohort_input_bwd", mutates_args=()) -+def _cohort_input_backward( -+ grad_out: Tensor, -+ z_all: Tensor, -+ alpha: Tensor, -+ w0t: Tensor, -+ w1t: Tensor, -+ gw: Tensor, -+ gwt: Tensor, -+ cohort_edges: int, -+) -> Tensor: -+ """Keep the runtime edge loop opaque without retaining x_local/u_final.""" -+ return cohort_input_backward_impl( -+ grad_out, z_all, alpha, w0t, w1t, gw, gwt, cohort_edges -+ ) -+ -+ -+@_cohort_input_backward.register_fake -+def _cohort_input_backward_fake( -+ grad_out: Tensor, -+ z_all: Tensor, -+ alpha: Tensor, -+ w0t: Tensor, -+ w1t: Tensor, -+ gw: Tensor, -+ gwt: Tensor, -+ cohort_edges: int, -+) -> Tensor: -+ """Preserve full input-gradient shape under FakeTensor tracing.""" -+ return grad_out.new_empty(z_all.shape[1:]) -+ -+ -+@torch.library.triton_op("sezm_triton::so2_cohort_alpha_bwd", mutates_args=()) -+def _cohort_alpha_backward(grad_out: Tensor, x_local: Tensor, alpha: Tensor) -> Tensor: -+ """Expose alpha's short-lived output dependency to the graph scheduler.""" -+ n_edge, n_focus = alpha.shape -+ result = torch.empty_like(alpha) -+ if sv._has_no_edges(n_edge): -+ return result -+ bm, warps, stages = sv.gate_config(32, 3) -+ wrap_triton(sv._stack_grad_alpha_kernel)[(triton.cdiv(n_edge, bm), n_focus)]( -+ grad_out, -+ x_local, -+ alpha, -+ result, -+ n_edge, -+ L=3, -+ CF=32, -+ BLOCK_M=bm, -+ num_warps=warps, -+ num_stages=stages, -+ ) -+ return result -+ -+ -+def cohort_backward( -+ grad_out: Tensor, -+ x_local: Tensor, -+ z_all: Tensor, -+ u_final: Tensor, -+ alpha: Tensor, -+ w0t: Tensor, -+ w1t: Tensor, -+ gw: Tensor, -+ gwt: Tensor, -+ lmax: int, -+ focus_dim: int, -+ apply_alpha: bool, -+) -> tuple[Tensor, Tensor]: -+ """First-order dispatcher; training/higher derivatives never enter here.""" -+ del u_final -+ if not supports_edge_cohort(grad_out, z_all, lmax, focus_dim, apply_alpha): -+ raise ValueError("unsupported edge-cohort layout") -+ grad_alpha = _cohort_alpha_backward(grad_out, x_local, alpha) -+ input_backward = ( -+ _single_cohort_input_backward -+ if grad_out.shape[0] <= SINGLE_COHORT_MAX_EDGES -+ else _cohort_input_backward -+ ) -+ grad_u0 = input_backward(grad_out, z_all, alpha, w0t, w1t, gw, gwt, COHORT_EDGES) -+ return grad_u0, grad_alpha -diff --git a/source/tests/pt_expt/kernels/test_so2_edge_cohort.py b/source/tests/pt_expt/kernels/test_so2_edge_cohort.py -new file mode 100644 ---- /dev/null -+++ b/source/tests/pt_expt/kernels/test_so2_edge_cohort.py -@@ -0,0 +1,201 @@ -+# SPDX-License-Identifier: LGPL-3.0-or-later -+"""Generated-input checks for the opt-in frozen Neo edge-cohort prototype.""" -+ -+from __future__ import annotations -+ -+from types import SimpleNamespace -+ -+import pytest -+import torch -+ -+pytest.importorskip("triton") -+ -+from deepmd.pt_expt.kernels.triton.sezm import so2_edge_cohort as ecs -+from deepmd.pt_expt.kernels.triton.sezm import so2_value_path as sv -+ -+pytestmark = pytest.mark.skipif(not torch.cuda.is_available(), reason="CUDA required") -+ -+ -+def operands(edges: int, mode: str = "random") -> tuple: -+ """Generate well-conditioned operands without a downloaded checkpoint.""" -+ torch.manual_seed(719) -+ u = torch.randn(2, edges, 320, device="cuda") * 0.1 -+ if mode == "zero": -+ u.zero_() -+ alpha = torch.rand(edges, 2, device="cuda") * 0.8 + 0.1 -+ if mode == "tiny": -+ alpha.fill_(1e-5) -+ w0 = torch.randn(3, 2, 128, 128, device="cuda") * 0.01 -+ w1 = torch.randn(3, 2, 192, 192, device="cuda") * 0.01 -+ gw = torch.randn(2, 2, 32, 96, device="cuda") * 0.01 -+ out, z, uf = sv._mixing_stack_impl(u, alpha, w0, w1, gw, 3, 32, True) -+ go = torch.randn_like(out) * 0.1 -+ return ( -+ go, -+ out, -+ z, -+ uf, -+ alpha, -+ w0.transpose(2, 3).contiguous(), -+ w1.transpose(2, 3).contiguous(), -+ gw, -+ gw.transpose(2, 3).contiguous(), -+ 3, -+ 32, -+ True, -+ ) -+ -+ -+@pytest.mark.parametrize("edges", [0, 1, 37, 129, 1025, 8193]) -+@pytest.mark.parametrize("cap", [64, 8192]) -+@pytest.mark.parametrize("mode", ["random", "zero", "tiny"]) -+def test_cohort_matches_native(edges: int, cap: int, mode: str) -> None: -+ """Cover tail cohorts, two focus strides, legal tiny alpha and no mutation.""" -+ args = operands(edges, mode) -+ copies = [x.clone() for x in args[:9]] -+ expected_u, expected_a = sv._mixing_stack_bwd_impl(*args) -+ go, out, z, _, alpha, w0t, w1t, gw, gwt, *_ = args -+ actual_u = ecs.cohort_input_backward_impl(go, z, alpha, w0t, w1t, gw, gwt, cap) -+ actual_a = ecs._cohort_alpha_backward(go, out, alpha) -+ for actual, expected in ((actual_u, expected_u), (actual_a, expected_a)): -+ assert torch.isfinite(actual).all() -+ torch.testing.assert_close(actual, expected, rtol=0, atol=0) -+ for before, after in zip(copies, args[:9], strict=True): -+ assert torch.equal(before, after) -+ -+ -+def test_compiled_dynamic_cohort() -> None: -+ """The opaque runtime edge loop supports online dynamic graph execution.""" -+ compiled = torch.compile(ecs.cohort_backward, fullgraph=True, dynamic=True) -+ for edges in (37, 129): -+ args = operands(edges) -+ actual = compiled(*args) -+ expected = sv._mixing_stack_bwd_impl(*args) -+ for a, b in zip(actual, expected, strict=True): -+ torch.testing.assert_close(a, b, atol=0, rtol=0) -+ -+ -+@pytest.mark.parametrize("dynamic", [False, True]) -+def test_compiled_native_backward(dynamic: bool) -> None: -+ """Optional strides must preserve the default native compilation path.""" -+ compiled = torch.compile(sv._mixing_stack_bwd_op, fullgraph=True, dynamic=dynamic) -+ for edges in (37, 129): -+ args = operands(edges) -+ expected = sv._mixing_stack_bwd_impl(*args) -+ actual = compiled(*args) -+ for a, b in zip(actual, expected, strict=True): -+ torch.testing.assert_close(a, b, atol=0, rtol=0) -+ -+ -+@pytest.mark.parametrize("edges", [0, 37, 8193, 16384]) -+@pytest.mark.parametrize("mode", ["random", "zero", "tiny"]) -+def test_single_cohort_owned_output(edges: int, mode: str) -> None: -+ """Small-cohort reuse changes neither gradients nor caller-owned storage.""" -+ args = operands(edges, mode) -+ copies = [t.clone() for t in args[:9]] -+ go, out, z, _, alpha, w0t, w1t, gw, gwt, *_ = args -+ expected_u, expected_a = sv._mixing_stack_bwd_impl(*args) -+ actual_u = ecs._single_cohort_input_backward( -+ go, z, alpha, w0t, w1t, gw, gwt, ecs.COHORT_EDGES -+ ) -+ actual_a = ecs._cohort_alpha_backward(go, out, alpha) -+ for a, b in ((actual_u, expected_u), (actual_a, expected_a)): -+ assert torch.isfinite(a).all() -+ torch.testing.assert_close(a, b, atol=0, rtol=0) -+ for before, after in zip(copies, args[:9], strict=True): -+ assert torch.equal(before, after) -+ -+ -+def test_compiled_cohort_bucket_boundary() -> None: -+ """A dynamic compiled graph handles both sides of the small-E boundary.""" -+ compiled = torch.compile(ecs.cohort_backward, fullgraph=True, dynamic=True) -+ for edges in (16384, 16385): -+ args = operands(edges) -+ expected = sv._mixing_stack_bwd_impl(*args) -+ actual = compiled(*args) -+ for a, b in zip(actual, expected, strict=True): -+ torch.testing.assert_close(a, b, atol=0, rtol=0) -+ -+ -+@pytest.mark.parametrize( -+ "lmax,cf,apply", [(2, 32, True), (3, 64, True), (3, 32, False)] -+) -+def test_unsupported_layout(lmax: int, cf: int, apply: bool) -> None: -+ """Untested layouts must not enter the experimental implementation.""" -+ args = operands(1) -+ assert not ecs.supports_edge_cohort(args[0], args[2], lmax, cf, apply) -+ assert not ecs.supports_edge_cohort(args[0].cpu(), args[2].cpu(), 3, 32, True) -+ -+ -+@pytest.mark.parametrize("reason", ["weights", "saved_z", "saved_u", "create_graph"]) -+def test_training_dispatch_preserved(monkeypatch, reason: str) -> None: -+ """Weight/state/higher-order requests bypass ECS even when opted in.""" -+ args = operands(1) -+ go, out, z, uf, alpha, w0t, w1t, gw, *_ = args -+ u = torch.zeros_like(uf) -+ w0 = w0t.transpose(2, 3).contiguous() -+ w1 = w1t.transpose(2, 3).contiguous() -+ ctx = SimpleNamespace( -+ saved_tensors=(u, alpha, out, z, uf, w0, w1, gw), -+ needs_input_grad=( -+ True, -+ True, -+ reason == "weights", -+ False, -+ False, -+ False, -+ False, -+ False, -+ ), -+ lmax=3, -+ focus_dim=32, -+ apply_alpha=True, -+ ) -+ calls = [] -+ -+ def training(*unused): -+ calls.append(True) -+ return torch.zeros_like(u), torch.zeros_like(alpha), w0, w1, gw -+ -+ def forbidden(*unused): -+ raise AssertionError("ECS entered a training/higher-order request") -+ -+ monkeypatch.setattr(sv, "_EDGE_COHORT_INFER", True) -+ monkeypatch.setattr(sv, "_mixing_stack_train_bwd_op", training) -+ monkeypatch.setattr(ecs, "cohort_backward", forbidden) -+ with torch.set_grad_enabled(reason == "create_graph"): -+ sv._mixing_stack_backward( -+ ctx, -+ go, -+ torch.zeros_like(z) if reason == "saved_z" else None, -+ torch.zeros_like(uf) if reason == "saved_u" else None, -+ ) -+ assert calls == [True] -+ -+ -+def test_frozen_dispatch(monkeypatch) -> None: -+ """Enabling the switch actually changes the frozen inference dispatch.""" -+ args = operands(37) -+ go, out, z, uf, alpha, w0t, w1t, gw, *_ = args -+ ctx = SimpleNamespace( -+ saved_tensors=( -+ uf, -+ alpha, -+ out, -+ z, -+ uf, -+ w0t.transpose(2, 3).contiguous(), -+ w1t.transpose(2, 3).contiguous(), -+ gw, -+ ), -+ needs_input_grad=(True, True, False, False, False, False, False, False), -+ lmax=3, -+ focus_dim=32, -+ apply_alpha=True, -+ ) -+ monkeypatch.setattr(sv, "_EDGE_COHORT_INFER", True) -+ expected = sv._mixing_stack_bwd_impl(*args) -+ with torch.no_grad(): -+ actual = sv._mixing_stack_backward(ctx, go, None, None) -+ for a, b in zip(actual[:2], expected, strict=True): -+ torch.testing.assert_close(a, b, atol=0, rtol=0) diff --git a/doc/development/ecs-validation-20261025/pro_cpu_load_check.json b/doc/development/ecs-validation-20261025/pro_cpu_load_check.json deleted file mode 100644 index 68ef6863b6..0000000000 --- a/doc/development/ecs-validation-20261025/pro_cpu_load_check.json +++ /dev/null @@ -1,318 +0,0 @@ -{ - "status": "loaded", - "device": "cpu", - "strict_missing": [], - "strict_unexpected": [], - "compatibility": "in-memory historical fitting type alias only: ener -> dpa4_ener; original file unchanged", - "parameter_count": 22678990, - "definition": { - "type": "dpa4", - "type_map": [ - "H", - "He", - "Li", - "Be", - "B", - "C", - "N", - "O", - "F", - "Ne", - "Na", - "Mg", - "Al", - "Si", - "P", - "S", - "Cl", - "Ar", - "K", - "Ca", - "Sc", - "Ti", - "V", - "Cr", - "Mn", - "Fe", - "Co", - "Ni", - "Cu", - "Zn", - "Ga", - "Ge", - "As", - "Se", - "Br", - "Kr", - "Rb", - "Sr", - "Y", - "Zr", - "Nb", - "Mo", - "Tc", - "Ru", - "Rh", - "Pd", - "Ag", - "Cd", - "In", - "Sn", - "Sb", - "Te", - "I", - "Xe", - "Cs", - "Ba", - "La", - "Ce", - "Pr", - "Nd", - "Pm", - "Sm", - "Eu", - "Gd", - "Tb", - "Dy", - "Ho", - "Er", - "Tm", - "Yb", - "Lu", - "Hf", - "Ta", - "W", - "Re", - "Os", - "Ir", - "Pt", - "Au", - "Hg", - "Tl", - "Pb", - "Bi", - "Po", - "At", - "Rn", - "Fr", - "Ra", - "Ac", - "Th", - "Pa", - "U", - "Np", - "Pu", - "Am", - "Cm", - "Bk", - "Cf", - "Es", - "Fm", - "Md", - "No", - "Lr", - "Rf", - "Db", - "Sg", - "Bh", - "Hs", - "Mt", - "Ds", - "Rg", - "Cn", - "Nh", - "Fl", - "Mc", - "Lv", - "Ts", - "Og" - ], - "descriptor": { - "type": "dpa4", - "sel": 384, - "rcut": 6.0, - "env_exp": [ - 7, - 5 - ], - "channels": 64, - "n_radial": 16, - "radial_mlp": [ - 0 - ], - "use_env_seed": true, - "random_gamma": true, - "lmax": 5, - "mmax": 1, - "n_blocks": 6, - "so2_layers": 4, - "so2_norm": false, - "so2_attn_res": "none", - "radial_so2_mode": "degree_channel", - "radial_so2_rank": 2, - "n_focus": 2, - "focus_dim": 0, - "n_atten_head": 1, - "atten_f_mix": false, - "atten_v_proj": false, - "atten_o_proj": false, - "ffn_neurons": 0, - "grid_mlp": false, - "ffn_blocks": 2, - "sandwich_norm": [ - false, - true, - true, - false - ], - "mlp_bias": false, - "layer_scale": false, - "full_attn_res": "none", - "block_attn_res": "none", - "s2_activation": [ - false, - true - ], - "lebedev_quadrature": true, - "activation_function": "silu", - "glu_activation": true, - "use_amp": true, - "precision": "float32", - "seed": 42, - "basis_type": "bessel", - "l_schedule": null, - "m_schedule": null, - "add_chg_spin_ebd": false, - "default_chg_spin": null, - "exclude_types": [], - "eps": 1e-07, - "trainable": true - }, - "fitting_net": { - "neuron": [ - 0 - ], - "activation_function": "silu", - "precision": "float32", - "seed": 42, - "type": "dpa4_ener", - "numb_fparam": 0, - "numb_aparam": 0, - "default_fparam": null, - "dim_case_embd": 0, - "resnet_dt": true, - "trainable": true, - "rcond": null, - "atom_ener": [], - "use_aparam_as_mask": false - }, - "use_compile": true, - "enable_tf32": true, - "data_stat_nbatch": 10, - "data_stat_protect": 0.01, - "data_bias_nsample": 10, - "pair_exclude_types": [], - "atom_exclude_types": [], - "preset_out_bias": null, - "srtab_add_bias": true, - "model_branch_alias": [], - "info": { - "observed_type": [ - "H", - "He", - "Li", - "Be", - "B", - "C", - "N", - "O", - "F", - "Ne", - "Na", - "Mg", - "Al", - "Si", - "P", - "S", - "Cl", - "Ar", - "K", - "Ca", - "Sc", - "Ti", - "V", - "Cr", - "Mn", - "Fe", - "Co", - "Ni", - "Cu", - "Zn", - "Ga", - "Ge", - "As", - "Se", - "Br", - "Kr", - "Rb", - "Sr", - "Y", - "Zr", - "Nb", - "Mo", - "Tc", - "Ru", - "Rh", - "Pd", - "Ag", - "Cd", - "In", - "Sn", - "Sb", - "Te", - "I", - "Xe", - "Cs", - "Ba", - "La", - "Ce", - "Pr", - "Nd", - "Pm", - "Sm", - "Eu", - "Gd", - "Tb", - "Dy", - "Ho", - "Er", - "Tm", - "Yb", - "Lu", - "Hf", - "Ta", - "W", - "Re", - "Os", - "Ir", - "Pt", - "Au", - "Hg", - "Tl", - "Pb", - "Bi", - "Ac", - "Th", - "Pa", - "U", - "Np", - "Pu" - ] - }, - "bridging_method": "None", - "bridging_r_inner": 0.5, - "bridging_r_outer": 0.8, - "lora": null - }, - "source_root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/megakernel_20261018/upstream" -} \ No newline at end of file diff --git a/doc/development/ecs-validation-20261025/provenance.json b/doc/development/ecs-validation-20261025/provenance.json deleted file mode 100644 index f95175ff3e..0000000000 --- a/doc/development/ecs-validation-20261025/provenance.json +++ /dev/null @@ -1,2749 +0,0 @@ -{ - "base": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "port_source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474", - "source/tests/pt_expt/kernels/test_so2_edge_cohort.py": "e950f552d1b7012e58e7ff2190e1eeec565d9572a63d65111a527331a14c9737" - }, - "all_measurement_source_checks": [ - { - "run": "Mini_n4096_BASE_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n4096_BASE_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n4096_BASE_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n4096_ECS_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n4096_ECS_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n4096_ECS_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n4096_TORCH_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n4096_TORCH_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n4096_TORCH_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n512_BASE_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n512_BASE_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n512_BASE_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n512_ECS_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n512_ECS_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n512_ECS_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n512_TORCH_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n512_TORCH_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n512_TORCH_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n96_BASE_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n96_BASE_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n96_BASE_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n96_ECS_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n96_ECS_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n96_ECS_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n96_TORCH_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n96_TORCH_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Mini_n96_TORCH_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n4096_BASE_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n4096_BASE_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n4096_BASE_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n4096_ECS_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n4096_ECS_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n4096_ECS_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n4096_TORCH_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n4096_TORCH_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n4096_TORCH_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n512_BASE_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n512_BASE_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n512_BASE_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n512_ECS_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n512_ECS_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n512_ECS_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n512_TORCH_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n512_TORCH_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n512_TORCH_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n96_BASE_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n96_BASE_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n96_BASE_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n96_ECS_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n96_ECS_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n96_ECS_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n96_TORCH_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n96_TORCH_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Nano_n96_TORCH_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n4096_BASE_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n4096_BASE_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n4096_BASE_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n4096_ECS_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n4096_ECS_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n4096_ECS_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n4096_TORCH_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n4096_TORCH_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n4096_TORCH_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n512_BASE_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n512_BASE_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n512_BASE_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n512_ECS_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n512_ECS_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n512_ECS_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n512_TORCH_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n512_TORCH_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n512_TORCH_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n96_BASE_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n96_BASE_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n96_BASE_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n96_ECS_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n96_ECS_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n96_ECS_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n96_TORCH_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n96_TORCH_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "NeoCu_n96_TORCH_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n4096_BASE_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n4096_BASE_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n4096_BASE_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n4096_ECS_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n4096_ECS_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n4096_ECS_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n4096_TORCH_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n4096_TORCH_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n4096_TORCH_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n512_BASE_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n512_BASE_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n512_BASE_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n512_ECS_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n512_ECS_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n512_ECS_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n512_TORCH_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n512_TORCH_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n512_TORCH_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n96_BASE_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n96_BASE_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n96_BASE_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n96_ECS_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n96_ECS_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n96_ECS_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n96_TORCH_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n96_TORCH_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Neo_n96_TORCH_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n4096_BASE_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n4096_BASE_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n4096_BASE_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n4096_ECS_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n4096_ECS_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n4096_ECS_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n4096_TORCH_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n4096_TORCH_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n4096_TORCH_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n512_BASE_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n512_BASE_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n512_BASE_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n512_ECS_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n512_ECS_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n512_ECS_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n512_TORCH_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n512_TORCH_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n512_TORCH_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n96_BASE_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n96_BASE_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n96_BASE_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n96_ECS_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n96_ECS_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n96_ECS_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n96_TORCH_p0", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n96_TORCH_p1", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - }, - { - "run": "Pro_n96_TORCH_p2", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "verified_unchanged": true - } - ], - "raw_npz_archive_not_uploaded": [ - { - "run": "Mini_n4096_BASE_p0", - "arrays": { - "outputs.npz": { - "sha256": "1ec59a543286cb0962387070e44dd01497232082d0b64a4bdea69cb33418f199", - "bytes": 853054 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Mini_n4096_BASE_p1", - "arrays": { - "outputs.npz": { - "sha256": "65ef2e8f46ed7d872ca7db4066b32fd9f7689afdcafc1a4e2a93b0e92a4b2929", - "bytes": 853092 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Mini_n4096_BASE_p2", - "arrays": { - "outputs.npz": { - "sha256": "20017adb5b3337c3a45c120adeae5460c661997bb58f29c6bbe9965a7b4cffa3", - "bytes": 853064 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Mini_n4096_ECS_p0", - "arrays": { - "outputs.npz": { - "sha256": "3e7fcb2047427c4913b5f2a8c551373d40a45917f3577226f7944be1a3d1fc76", - "bytes": 852986 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Mini_n4096_ECS_p1", - "arrays": { - "outputs.npz": { - "sha256": "6fe042dc47e517b75174bcabef0e49900faa14fa646dcb84fe1aaef270737202", - "bytes": 853010 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Mini_n4096_ECS_p2", - "arrays": { - "outputs.npz": { - "sha256": "e191a89382797f806c1421f5d1064201847aa826c6ba74469a249828e7465dc1", - "bytes": 853111 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Mini_n4096_TORCH_p0", - "arrays": { - "outputs.npz": { - "sha256": "fe6be3f2fc6b12352fd1fbdc52305fc6da550aa55cd02cd6cbdc008f69d9d32e", - "bytes": 852478 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Mini_n4096_TORCH_p1", - "arrays": { - "outputs.npz": { - "sha256": "153e9d91cf9670ced3174b096a647e2cb088b5f9ea25cf18aa69084e0be74f74", - "bytes": 852505 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Mini_n4096_TORCH_p2", - "arrays": { - "outputs.npz": { - "sha256": "74387423fcb372efbe36053cef89415e2e72f9e4da0969780681b30ec728dc4a", - "bytes": 852629 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Mini_n512_BASE_p0", - "arrays": { - "outputs.npz": { - "sha256": "e66e1c57e10797ca45f0cdc362fe202d1d55293ae719fc8d5990d8f00418eb50", - "bytes": 113889 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Mini_n512_BASE_p1", - "arrays": { - "outputs.npz": { - "sha256": "368d68caf086261953c5b12ad64206f7702677671c0a6a1dacdf4eece5935c12", - "bytes": 113902 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Mini_n512_BASE_p2", - "arrays": { - "outputs.npz": { - "sha256": "e7bdfb0af239f459be5c5be24dfa1970d315334ffd06d634af48180110467bf3", - "bytes": 113884 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Mini_n512_ECS_p0", - "arrays": { - "outputs.npz": { - "sha256": "0252ce2b40bb7593d5aa395e0b52b4666b1d6145c16e01db7d05a5147b4ba87b", - "bytes": 113871 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Mini_n512_ECS_p1", - "arrays": { - "outputs.npz": { - "sha256": "3abb68cbfe314b6dd1a160e0a420a77af7164a734603a1e26b6317c785e38fb0", - "bytes": 113847 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Mini_n512_ECS_p2", - "arrays": { - "outputs.npz": { - "sha256": "0ac4a2e9b444dbdf4540f1c41bab2c42040c99516e783270c36fec2f653343d4", - "bytes": 113844 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Mini_n512_TORCH_p0", - "arrays": { - "outputs.npz": { - "sha256": "1566c553c1934ffdeeb42194527ec6459bd91fa740a3ed014b5f98a5a6423753", - "bytes": 113811 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Mini_n512_TORCH_p1", - "arrays": { - "outputs.npz": { - "sha256": "1e4c38c8823ea1167ba290a26f40c56f2217b9f448df0c1fbb9a975321b2897c", - "bytes": 113836 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Mini_n512_TORCH_p2", - "arrays": { - "outputs.npz": { - "sha256": "e7dee4623020502d2939ab61d28c64733b2371a63e2947ac7f2cd9e38c34d49c", - "bytes": 113849 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Mini_n96_BASE_p0", - "arrays": { - "outputs.npz": { - "sha256": "07d869055f4227b9ffae0c3b60da04fada965f18491ae83c50739f8d662c2c4f", - "bytes": 28419 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Mini_n96_BASE_p1", - "arrays": { - "outputs.npz": { - "sha256": "6fd57c3e09be874cbdce217d20b57407e1b4bd57b1aa00f9fc5c3a1da520256f", - "bytes": 28404 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Mini_n96_BASE_p2", - "arrays": { - "outputs.npz": { - "sha256": "b4d37603074bca353fecfb16b297f7a376edca66c98888fa3a1e249a32d2537c", - "bytes": 28403 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Mini_n96_ECS_p0", - "arrays": { - "outputs.npz": { - "sha256": "6ee9d26e7da594483b1aeb682580f604ae540a56eba860ccbf35d1035e46f0c7", - "bytes": 28421 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Mini_n96_ECS_p1", - "arrays": { - "outputs.npz": { - "sha256": "41a2bf2e18f65a3f9cb5a01af770f092d527618c7f553618a82392acb598ee48", - "bytes": 28416 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Mini_n96_ECS_p2", - "arrays": { - "outputs.npz": { - "sha256": "ad6765a6b8189b227fb4be23eca6f3f341af1d7be89985f6d84a1d9700f63193", - "bytes": 28406 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Mini_n96_TORCH_p0", - "arrays": { - "outputs.npz": { - "sha256": "7bef2dbdf45de0d6afaf3334bbcb6d0529e3e84f6ad1a4b816adc02bf978a1e4", - "bytes": 28421 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Mini_n96_TORCH_p1", - "arrays": { - "outputs.npz": { - "sha256": "504dd335ab864d5f26cf4a33bb6166212e4d7ee516629700049f08367fcd4386", - "bytes": 28396 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Mini_n96_TORCH_p2", - "arrays": { - "outputs.npz": { - "sha256": "22511679b69127fd5cad0fb647cdbb5536b5e8abb8f7a85446af73645e49e391", - "bytes": 28389 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Nano_n4096_BASE_p0", - "arrays": { - "outputs.npz": { - "sha256": "f5afdec907926be728b200840edc73a00c38a9c3bc79148c09764cf59b0149a8", - "bytes": 848054 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Nano_n4096_BASE_p1", - "arrays": { - "outputs.npz": { - "sha256": "90b64a307a4328ce167a28835062df9e4709146018f57c8214d6e4a9f87b2c83", - "bytes": 848045 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Nano_n4096_BASE_p2", - "arrays": { - "outputs.npz": { - "sha256": "0593b7d533d8ca9057095f69418a86dbd2aaa1090a3b797a94c1035ed0f46708", - "bytes": 848044 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Nano_n4096_ECS_p0", - "arrays": { - "outputs.npz": { - "sha256": "1526c7b15f6a76d669b4b4e4caa7255dc89c8e8345ebffbbe6f9e305cf26e10d", - "bytes": 848037 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Nano_n4096_ECS_p1", - "arrays": { - "outputs.npz": { - "sha256": "b61f07b7b2146f90b14438db1dc73a1674944e17f929b36f0f0832c2c2ada890", - "bytes": 848058 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Nano_n4096_ECS_p2", - "arrays": { - "outputs.npz": { - "sha256": "c447f0568f13f7f0c8a2427a7dd2229e0ee6e9be08510d44319487d1979edc0d", - "bytes": 848062 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Nano_n4096_TORCH_p0", - "arrays": { - "outputs.npz": { - "sha256": "bda3caaf714590d31f69ca5e89ef90b1fdeb7957707cb49c9bdd4d3ef304c3a5", - "bytes": 847578 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Nano_n4096_TORCH_p1", - "arrays": { - "outputs.npz": { - "sha256": "c3d4de97eb9cecdc79b4914aa68516cf09d93c54e8fd82a6f5109d85d1fbe023", - "bytes": 847651 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Nano_n4096_TORCH_p2", - "arrays": { - "outputs.npz": { - "sha256": "a7cfec34e1ef7fd949c64acd205ba7f86e8fa077c9176a2121ef5c7c9188717c", - "bytes": 847497 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Nano_n512_BASE_p0", - "arrays": { - "outputs.npz": { - "sha256": "688f9eedf9a39f347bc22fc00173440d0c7a0e6bde5de11caa3c077a39b380c2", - "bytes": 113321 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Nano_n512_BASE_p1", - "arrays": { - "outputs.npz": { - "sha256": "c01ad15aa77643bbe9ed31d26b5742b66abed57eb905b2b3b80c0d6d6d9930aa", - "bytes": 113273 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Nano_n512_BASE_p2", - "arrays": { - "outputs.npz": { - "sha256": "7148a2c033731fd49d4507d29c9bfe1fef4c397670f57cb91207c7fe6ecc3486", - "bytes": 113307 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Nano_n512_ECS_p0", - "arrays": { - "outputs.npz": { - "sha256": "e3c8a207f9b8cf8c9737a87a6ab5be0e9bd0f821cbf3308fe435d199ff65960d", - "bytes": 113300 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Nano_n512_ECS_p1", - "arrays": { - "outputs.npz": { - "sha256": "695e023d718cc9b5f186cbf36329b5167736fbf4cc28b01da9a6f276788ce49e", - "bytes": 113282 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Nano_n512_ECS_p2", - "arrays": { - "outputs.npz": { - "sha256": "e75ffe4b787fe275896b4995dc1c12e33d7cdeda34d424323b81de9f523cb8d7", - "bytes": 113265 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Nano_n512_TORCH_p0", - "arrays": { - "outputs.npz": { - "sha256": "e1285bed7037a34f130ab7f1534ed31b3e2079f1069d4609206f63f7b660ba80", - "bytes": 113257 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Nano_n512_TORCH_p1", - "arrays": { - "outputs.npz": { - "sha256": "622cffa9cc535dbbab204b173d3e116e2215057234c696fdb58dd221b14af66a", - "bytes": 113257 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Nano_n512_TORCH_p2", - "arrays": { - "outputs.npz": { - "sha256": "0e9cbf7e4082b7ea0bd241075a1956625ba15a7936822089368bea40b583a51c", - "bytes": 113267 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Nano_n96_BASE_p0", - "arrays": { - "outputs.npz": { - "sha256": "1d6eb775a449ebdb3bb5d9bcf9f61d8f31b94a96d6e83f75247b407e7f1b9563", - "bytes": 28336 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Nano_n96_BASE_p1", - "arrays": { - "outputs.npz": { - "sha256": "7410b5fe8bbb70ec57f2f65fe07ff61a9cb5bf79dafb6d142066a92d35215807", - "bytes": 28317 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Nano_n96_BASE_p2", - "arrays": { - "outputs.npz": { - "sha256": "abe49b1ee59f61cd4cc9a948224e380d494b5a576a8020b320b55013653fc59d", - "bytes": 28347 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Nano_n96_ECS_p0", - "arrays": { - "outputs.npz": { - "sha256": "6d70a09880fb46016b213838ebbdd573aad98e1174721f22840563a96dce908f", - "bytes": 28359 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Nano_n96_ECS_p1", - "arrays": { - "outputs.npz": { - "sha256": "08b3ea802eb9ac42c13ba72a214f5a188586d2202b323e435c76b5fba5ffefd5", - "bytes": 28335 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Nano_n96_ECS_p2", - "arrays": { - "outputs.npz": { - "sha256": "766ff0eefadc10a1eb5b64f52bcc4506d047a56efa53e8d71502c59a03052361", - "bytes": 28336 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Nano_n96_TORCH_p0", - "arrays": { - "outputs.npz": { - "sha256": "e14537a8af9cfe6a0aa6534169fc14ef28afbce7e10f86a21aa17f1e8fb0d474", - "bytes": 28320 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Nano_n96_TORCH_p1", - "arrays": { - "outputs.npz": { - "sha256": "f3a750c18f8015c9e1ac7b5e199e50d7241c142dc062e84cc719200092792f92", - "bytes": 28303 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Nano_n96_TORCH_p2", - "arrays": { - "outputs.npz": { - "sha256": "a8c8f0b4529d2ac6ece182d386e51d3ca3f386f573422930397a6f0218db437e", - "bytes": 28325 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "NeoCu_n4096_BASE_p0", - "arrays": { - "outputs.npz": { - "sha256": "105022ac22d678c2f2c968d7f95e3cceae153cb4e10f84defc1f0a1a2caa0486", - "bytes": 831457 - }, - "inputs.npz": { - "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "bytes": 273092 - } - } - }, - { - "run": "NeoCu_n4096_BASE_p1", - "arrays": { - "outputs.npz": { - "sha256": "6b72cda1b7456a11becc412e8b02cac5548066387e3c4d033e48eb22b6741486", - "bytes": 831540 - }, - "inputs.npz": { - "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "bytes": 273092 - } - } - }, - { - "run": "NeoCu_n4096_BASE_p2", - "arrays": { - "outputs.npz": { - "sha256": "f49399e643ccd8243d0995b68207b4830325a370f42d8d3468f813d6f20b44f1", - "bytes": 831326 - }, - "inputs.npz": { - "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "bytes": 273092 - } - } - }, - { - "run": "NeoCu_n4096_ECS_p0", - "arrays": { - "outputs.npz": { - "sha256": "6cadc81844fbf9b579bc10bf07d3f29df8fd8d3d12e558e498aa4c8a23fe44ed", - "bytes": 831533 - }, - "inputs.npz": { - "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "bytes": 273092 - } - } - }, - { - "run": "NeoCu_n4096_ECS_p1", - "arrays": { - "outputs.npz": { - "sha256": "500fcd3f0f58d011dd10328f590a00f7ec3067db205e9182700c2ce674460228", - "bytes": 831495 - }, - "inputs.npz": { - "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "bytes": 273092 - } - } - }, - { - "run": "NeoCu_n4096_ECS_p2", - "arrays": { - "outputs.npz": { - "sha256": "b40f5afb3f9da4d624427d835acaac5a5ff2292dc189c1b7eb1799a40a454d7c", - "bytes": 831467 - }, - "inputs.npz": { - "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "bytes": 273092 - } - } - }, - { - "run": "NeoCu_n4096_TORCH_p0", - "arrays": { - "outputs.npz": { - "sha256": "20825aebdf8c333e3c99767edd84fb0b14019b68cac279b056c9e0e49c6e4350", - "bytes": 831458 - }, - "inputs.npz": { - "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "bytes": 273092 - } - } - }, - { - "run": "NeoCu_n4096_TORCH_p1", - "arrays": { - "outputs.npz": { - "sha256": "452636227d68c1b2e616d16e83010b95ad498afda27831d82ed44da907c239b2", - "bytes": 831490 - }, - "inputs.npz": { - "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "bytes": 273092 - } - } - }, - { - "run": "NeoCu_n4096_TORCH_p2", - "arrays": { - "outputs.npz": { - "sha256": "4d47e6435ff1b6775954e5c2d089ab8ab311f68ec0e7400d5c4803a6f70496a1", - "bytes": 831419 - }, - "inputs.npz": { - "sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "bytes": 273092 - } - } - }, - { - "run": "NeoCu_n512_BASE_p0", - "arrays": { - "outputs.npz": { - "sha256": "785d25e879d21a2a85493b2a83e9bb95e775d6323c00bfa3f710801e44173a04", - "bytes": 111341 - }, - "inputs.npz": { - "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "bytes": 35041 - } - } - }, - { - "run": "NeoCu_n512_BASE_p1", - "arrays": { - "outputs.npz": { - "sha256": "c68c94134ed475804849446223d4e64d32147c9b057d044aeccaf12e7519b3ae", - "bytes": 111334 - }, - "inputs.npz": { - "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "bytes": 35041 - } - } - }, - { - "run": "NeoCu_n512_BASE_p2", - "arrays": { - "outputs.npz": { - "sha256": "8c22edf95ca4257445ac6d475f546560de5106d1093a383ae11d9490b3475920", - "bytes": 111289 - }, - "inputs.npz": { - "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "bytes": 35041 - } - } - }, - { - "run": "NeoCu_n512_ECS_p0", - "arrays": { - "outputs.npz": { - "sha256": "6c7cf685499bd41ecce6451f4fd16dcc3f7968d5dd712d25924400afcceaa69a", - "bytes": 111306 - }, - "inputs.npz": { - "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "bytes": 35041 - } - } - }, - { - "run": "NeoCu_n512_ECS_p1", - "arrays": { - "outputs.npz": { - "sha256": "36c8e98707ed7d15f0433f52071c89c5bcaadd87e71563177a040ed668a6d384", - "bytes": 111340 - }, - "inputs.npz": { - "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "bytes": 35041 - } - } - }, - { - "run": "NeoCu_n512_ECS_p2", - "arrays": { - "outputs.npz": { - "sha256": "90de4c2164387f29fd938c27b3f0d18091f9b7be287436e83cf75f9ab464bf17", - "bytes": 111321 - }, - "inputs.npz": { - "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "bytes": 35041 - } - } - }, - { - "run": "NeoCu_n512_TORCH_p0", - "arrays": { - "outputs.npz": { - "sha256": "b81f7488c7f7330e5fa0e0290fb52ab75c358d3d0b9e0528dc53516923812a64", - "bytes": 111310 - }, - "inputs.npz": { - "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "bytes": 35041 - } - } - }, - { - "run": "NeoCu_n512_TORCH_p1", - "arrays": { - "outputs.npz": { - "sha256": "fe377642df0c8d300d23098db9257d1c218ac78c9448a918fba5c1f66eef47b8", - "bytes": 111330 - }, - "inputs.npz": { - "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "bytes": 35041 - } - } - }, - { - "run": "NeoCu_n512_TORCH_p2", - "arrays": { - "outputs.npz": { - "sha256": "774ae7bfdf8188a197cade6b72a94192fb736ddb31cc26714c4846a0133c3c84", - "bytes": 111394 - }, - "inputs.npz": { - "sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "bytes": 35041 - } - } - }, - { - "run": "NeoCu_n96_BASE_p0", - "arrays": { - "outputs.npz": { - "sha256": "6dfb57c6d108929087bc240b8af9c73eb1bedcee32088050f1c302d13be3569e", - "bytes": 27959 - }, - "inputs.npz": { - "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "bytes": 7135 - } - } - }, - { - "run": "NeoCu_n96_BASE_p1", - "arrays": { - "outputs.npz": { - "sha256": "81ac2cfc7a3709be72ee35187e4e52462fc39756bea58f549b7c72e7d07d22a4", - "bytes": 27948 - }, - "inputs.npz": { - "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "bytes": 7135 - } - } - }, - { - "run": "NeoCu_n96_BASE_p2", - "arrays": { - "outputs.npz": { - "sha256": "e28df853aed6c2a55a15539ebe7f4079fb16c623009d1a3da19a51254f0153c8", - "bytes": 27937 - }, - "inputs.npz": { - "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "bytes": 7135 - } - } - }, - { - "run": "NeoCu_n96_ECS_p0", - "arrays": { - "outputs.npz": { - "sha256": "fd397f82e032b58ebee5adac31a1b6a23b01567c48975fddbc1c0aac55c412f5", - "bytes": 27947 - }, - "inputs.npz": { - "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "bytes": 7135 - } - } - }, - { - "run": "NeoCu_n96_ECS_p1", - "arrays": { - "outputs.npz": { - "sha256": "71bfa0aaed7f343fbfe8bde3bfe040d2f65d11d9eb9c0d2e77a753c4d9bc451e", - "bytes": 27959 - }, - "inputs.npz": { - "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "bytes": 7135 - } - } - }, - { - "run": "NeoCu_n96_ECS_p2", - "arrays": { - "outputs.npz": { - "sha256": "f12385fb415a24f60459c523ec86e4bbf8c20e5b7108744526bf20836ce4fe81", - "bytes": 27945 - }, - "inputs.npz": { - "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "bytes": 7135 - } - } - }, - { - "run": "NeoCu_n96_TORCH_p0", - "arrays": { - "outputs.npz": { - "sha256": "bc4a7f32a846fcd930bb2d0464ac430b1dda595c0eb3286a1b6759116859b51e", - "bytes": 27948 - }, - "inputs.npz": { - "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "bytes": 7135 - } - } - }, - { - "run": "NeoCu_n96_TORCH_p1", - "arrays": { - "outputs.npz": { - "sha256": "041d733b305bc16e1585c15968943ab92611def06d07157abf4ee1ef2ec4e6d8", - "bytes": 27914 - }, - "inputs.npz": { - "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "bytes": 7135 - } - } - }, - { - "run": "NeoCu_n96_TORCH_p2", - "arrays": { - "outputs.npz": { - "sha256": "051bf688f932fd660e4c1fdfefd47a56b148a6705b6c2bbf1dd6a4c2c889e16e", - "bytes": 27981 - }, - "inputs.npz": { - "sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "bytes": 7135 - } - } - }, - { - "run": "Neo_n4096_BASE_p0", - "arrays": { - "outputs.npz": { - "sha256": "719b5fa13ac832a90f1329bf5fc0af9c8756204af946302805c3c40b11b291a3", - "bytes": 836688 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Neo_n4096_BASE_p1", - "arrays": { - "outputs.npz": { - "sha256": "a90972048f73b11137a7e3a4e3dc685d44959a548865012f3de0f75bd8788743", - "bytes": 836802 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Neo_n4096_BASE_p2", - "arrays": { - "outputs.npz": { - "sha256": "00d20e14d4ef3c50c55683dc2dd29cd42205580827b59dedf90b4332d7aff15c", - "bytes": 836649 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Neo_n4096_ECS_p0", - "arrays": { - "outputs.npz": { - "sha256": "6e184a27908dc6253d2eed761536fbce2bd9398fbb6b8a7330c5c184d01ac260", - "bytes": 836756 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Neo_n4096_ECS_p1", - "arrays": { - "outputs.npz": { - "sha256": "3c92f98d3125828f90a314e96a1f6010c77e021d3756e330166c320b67bacad9", - "bytes": 836750 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Neo_n4096_ECS_p2", - "arrays": { - "outputs.npz": { - "sha256": "a3cdfcd2cc4c20a5a7cd99b2dcb2cf746775548d8606229154ca371fc3b0d26f", - "bytes": 836813 - }, - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Neo_n4096_TORCH_p0", - "arrays": { - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Neo_n4096_TORCH_p1", - "arrays": { - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Neo_n4096_TORCH_p2", - "arrays": { - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Neo_n512_BASE_p0", - "arrays": { - "outputs.npz": { - "sha256": "3ce2a44330e9ea321b80e454a56f42edec61e15d4ee15dfe8b168e3eab9806e2", - "bytes": 111825 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Neo_n512_BASE_p1", - "arrays": { - "outputs.npz": { - "sha256": "70959f572f0350f610c977474ed4c94e5de68c59d808dfee516f804dc0749ca2", - "bytes": 111830 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Neo_n512_BASE_p2", - "arrays": { - "outputs.npz": { - "sha256": "5afdce1290cec69fd234b7d26f585ff6bd8617d103977206287b8a8e398cddc4", - "bytes": 111867 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Neo_n512_ECS_p0", - "arrays": { - "outputs.npz": { - "sha256": "6269b9cb130a27b88c81780fa79634f4dd6f684caa1f886a900d66ca72ef1e9e", - "bytes": 111851 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Neo_n512_ECS_p1", - "arrays": { - "outputs.npz": { - "sha256": "cac39cd370b80562b0be101ffe36bdb386291353c2addfba8150914e1f55dfac", - "bytes": 111849 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Neo_n512_ECS_p2", - "arrays": { - "outputs.npz": { - "sha256": "d98f94f7496e0ca0808ac22e6b2876d192c9687cbace303d4b1108aeae1e58b7", - "bytes": 111879 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Neo_n512_TORCH_p0", - "arrays": { - "outputs.npz": { - "sha256": "c8c45cc573b3ca6acb013ad5f83193311c9375f4fb5144bcbb16a2b2c8bf9796", - "bytes": 111836 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Neo_n512_TORCH_p1", - "arrays": { - "outputs.npz": { - "sha256": "27323f8142de6377f4412bdad3a42e82187b0320b63a942ebe2e1681bd39292e", - "bytes": 111813 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Neo_n512_TORCH_p2", - "arrays": { - "outputs.npz": { - "sha256": "34dbdd81889218abb466ce362276e58455da3d84a4d05aabef17870c4d20f8b4", - "bytes": 111806 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Neo_n96_BASE_p0", - "arrays": { - "outputs.npz": { - "sha256": "20d0e9e9555b2b1a647110b3960240274fe262d56df5367a7ddb7da16b2d95b1", - "bytes": 28132 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Neo_n96_BASE_p1", - "arrays": { - "outputs.npz": { - "sha256": "08cd77ee7e45fd2278e54e9129f32e17623f5dad4bc0688e19708452a5c70726", - "bytes": 28124 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Neo_n96_BASE_p2", - "arrays": { - "outputs.npz": { - "sha256": "95c17603baa0fc5e30f3fb18728036015de0cc0d3b5787394517c42e61e0d4a1", - "bytes": 28133 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Neo_n96_ECS_p0", - "arrays": { - "outputs.npz": { - "sha256": "0a034876baa0ba85e231c993528665057693b2a9add246a15e0c6bd63b4e1378", - "bytes": 28145 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Neo_n96_ECS_p1", - "arrays": { - "outputs.npz": { - "sha256": "cb8d8b8d6a3436d5d75fc0ebde9949cc84a2a146ec9bcb16ec28eb86cc044ff5", - "bytes": 28120 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Neo_n96_ECS_p2", - "arrays": { - "outputs.npz": { - "sha256": "cb144922cc6bc820fb6974f5f39e7f3c1a5ce03251794da1b57a9d7a79c4c111", - "bytes": 28134 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Neo_n96_TORCH_p0", - "arrays": { - "outputs.npz": { - "sha256": "ce05d2f2563091f4e808a1094c923f7778d819c536d7f7e338b5d96f09380ebf", - "bytes": 28132 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Neo_n96_TORCH_p1", - "arrays": { - "outputs.npz": { - "sha256": "7d0a6693c9b0bbaa47d7297726acb4c82debb4e91c0aa0b256cbbc311f7f8194", - "bytes": 28126 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Neo_n96_TORCH_p2", - "arrays": { - "outputs.npz": { - "sha256": "8ef3c5cd9b39ecb0b4da5dbb5cc53641939c4bb41204a7c62a249460f7bbf2d0", - "bytes": 28124 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Pro_n4096_BASE_p0", - "arrays": { - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Pro_n4096_BASE_p1", - "arrays": { - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Pro_n4096_BASE_p2", - "arrays": { - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Pro_n4096_ECS_p0", - "arrays": { - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Pro_n4096_ECS_p1", - "arrays": { - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Pro_n4096_ECS_p2", - "arrays": { - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Pro_n4096_TORCH_p0", - "arrays": { - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Pro_n4096_TORCH_p1", - "arrays": { - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Pro_n4096_TORCH_p2", - "arrays": { - "inputs.npz": { - "sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "bytes": 275168 - } - } - }, - { - "run": "Pro_n512_BASE_p0", - "arrays": { - "outputs.npz": { - "sha256": "a8575b8f90369e96419af314e2363397c0f0385b594274ce4ef7075d788d7b6f", - "bytes": 112802 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Pro_n512_BASE_p1", - "arrays": { - "outputs.npz": { - "sha256": "c464417ef39fdc755ed06d058b0e3ae0cf8c594276fe97fbcd00d8ab6e7c3d0a", - "bytes": 112805 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Pro_n512_BASE_p2", - "arrays": { - "outputs.npz": { - "sha256": "26e5b14ac455eb2740c49b20914b1535c48ee62fd02b223e855ada3219667bfa", - "bytes": 112887 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Pro_n512_ECS_p0", - "arrays": { - "outputs.npz": { - "sha256": "7a773e05b29293e25d46421d764ccc3acd07a4c1c6643b15daa514e98e96e914", - "bytes": 112801 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Pro_n512_ECS_p1", - "arrays": { - "outputs.npz": { - "sha256": "68656449a84b97d1240500c07b4a309f181894daeef040059ccea3c3e78daa8d", - "bytes": 112830 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Pro_n512_ECS_p2", - "arrays": { - "outputs.npz": { - "sha256": "cf21213762433e01f4344f45797ec365ccce8ccf88356bd370a091f3f177a361", - "bytes": 112866 - }, - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Pro_n512_TORCH_p0", - "arrays": { - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Pro_n512_TORCH_p1", - "arrays": { - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Pro_n512_TORCH_p2", - "arrays": { - "inputs.npz": { - "sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "bytes": 35228 - } - } - }, - { - "run": "Pro_n96_BASE_p0", - "arrays": { - "outputs.npz": { - "sha256": "1c66d9a94e36f34a1ccd96e9c9a6bfa6e610a8a349ad9e2959dd6cb0c0f5821e", - "bytes": 28287 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Pro_n96_BASE_p1", - "arrays": { - "outputs.npz": { - "sha256": "0c180b4a98e55acbcd29c6195b16e67b96c40a40981fab66c69deec9ee14ada8", - "bytes": 28273 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Pro_n96_BASE_p2", - "arrays": { - "outputs.npz": { - "sha256": "517fbbfe5621dad67eb683e54384d69efc1a2dd3f9d311fe1ba1719879640ad6", - "bytes": 28286 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Pro_n96_ECS_p0", - "arrays": { - "outputs.npz": { - "sha256": "c9cc708f48e90d76a6e9d88b269ffd0a0bbec52d113e3379ef621cf367eec7ae", - "bytes": 28278 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Pro_n96_ECS_p1", - "arrays": { - "outputs.npz": { - "sha256": "51e666779e9bc60aafbc775e6e946cf83e9cac3dffd987a7fe269075b4de5c12", - "bytes": 28287 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Pro_n96_ECS_p2", - "arrays": { - "outputs.npz": { - "sha256": "36c47a6218fd9411478ee61cf56125f9da914738e6b79a6f7b0f39db156069d0", - "bytes": 28285 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Pro_n96_TORCH_p0", - "arrays": { - "outputs.npz": { - "sha256": "4c195d89fa66bc32804072d4cbb7a660d48c9fa22d125f454817fa794a21c1ac", - "bytes": 28269 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Pro_n96_TORCH_p1", - "arrays": { - "outputs.npz": { - "sha256": "cc2e6ebe1070d39a982887a82c78254cf07743949c7b3d2b91d0a7a2ef72d6f6", - "bytes": 28288 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - }, - { - "run": "Pro_n96_TORCH_p2", - "arrays": { - "outputs.npz": { - "sha256": "ea79d0a9ff5abb8d4eee6fb4e005d83b9d3fef1cc21f29b11b7f2033bd1114fa", - "bytes": 28273 - }, - "inputs.npz": { - "sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "bytes": 7175 - } - } - } - ], - "publication_time_gpu_snapshot_not_timing_telemetry": "index, name, uuid, driver_version, memory.total [MiB], clocks.current.sm [MHz], clocks.current.memory [MHz], temperature.gpu, power.draw [W]\n0, NVIDIA GeForce RTX 5090, GPU-8a1f47f6-0655-97e5-8ed5-433be97af788, 595.91.07, 32607 MiB, 2415 MHz, 13801 MHz, 35, 65.02 W\n1, NVIDIA GeForce RTX 5090, GPU-fcc63da0-f1b3-74c7-f868-681a40ef5f03, 595.91.07, 32607 MiB, 2400 MHz, 13801 MHz, 36, 52.94 W\n", - "source_scope": "Existing personal PR head remains on its historical base; this is an isolated port, not an implicit rebase", - "files": { - "summary.json": { - "sha256": "ffd4594c2964dc0ed99e8a53007e3d213df478851f87e57356cc091d927d8c82", - "bytes": 341989 - }, - "worker.py": { - "sha256": "01d1ab94ead96f8280ec53bd2232e08a6000ea5a9f283f870e4fcdc4b9aa1a63", - "bytes": 12889 - }, - "validation.json": { - "sha256": "6fb48828ef456594ff5b41baa293bf349855902531847ae946d497da86a1df87", - "bytes": 5673 - }, - "analyze.py": { - "sha256": "9ee530b8e3501d8c6f03401b66ac6183dd1b08b992d00ef64f1330402ff2baa7", - "bytes": 9918 - }, - "report.py": { - "sha256": "71dad5c5ae7d0295b7aafcca62e326535c14b4ebe15832d3ab1689b946ac81bd", - "bytes": 10458 - }, - "README.md": { - "sha256": "8e4f1976e589dc64751ddb4f4874215af3c61803356e1a527b5006b2bff8b068", - "bytes": 9479 - }, - "port-to-2ba617bc.patch": { - "sha256": "6983746e7c1d8f2ba11c28ce5ab3d1557f35d1c8b5a09d82ed8bacf5bdee3471", - "bytes": 25373 - }, - "ACCURACY_TABLE.md": { - "sha256": "30abb6d1f5ae8449a4e4e3e2d9ce75a8deaeb3765ab5c857bfad1f99b107a72e", - "bytes": 27863 - }, - "pro_cpu_load_check.json": { - "sha256": "6869e36cf20efee3e60091d3a6963e7eddb4302d3fb2e68bcdd339b566e11c83", - "bytes": 5256 - }, - "REPORT.md": { - "sha256": "3c2d002f8172e90ee7c60a950c3eabd9c47f38d0be90647d8c5f0bc5f8be40b9", - "bytes": 20039 - }, - "runs.json": { - "sha256": "f86945b3268e0818e46d256a496f0080d0a754818720e00ccf4e4977eaade31e", - "bytes": 953302 - }, - "run_matrix.py": { - "sha256": "647b95fc9437061d6b8875fdea9a2850c0e57cce6b4453830e6579bffea3764e", - "bytes": 4821 - } - } -} diff --git a/doc/development/ecs-validation-20261025/report.py b/doc/development/ecs-validation-20261025/report.py deleted file mode 100644 index f6a2b86107..0000000000 --- a/doc/development/ecs-validation-20261025/report.py +++ /dev/null @@ -1,223 +0,0 @@ -"""Render three-column accuracy, repeat-band gates and first-peak performance.""" - -# ruff: noqa: T201, ANN001, ANN201, RUF001 -- manual measurement report -from collections import Counter -import argparse -import json -from pathlib import Path -import subprocess -import sys - -import numpy as np - -SCRIPT_DIR = Path(__file__).resolve().parent -P = argparse.ArgumentParser() -P.add_argument("--root", type=Path, default=SCRIPT_DIR) -HERE = P.parse_args().root.resolve() -subprocess.run( - [sys.executable, str(SCRIPT_DIR / "analyze.py"), "--root", str(HERE)], check=True -) -data = json.loads((HERE / "summary.json").read_text()) -states = data["statuses"] -groups = data["comparisons"] - - -def select(model, n, left, right): - return [ - g - for g in groups - if (g["model"], g["n"], g["left"], g["right"]) == (model, n, left, right) - ] - - -def band(model, n, left, right, field): - gs = select(model, n, left, right) - if not gs: - return None - return max(g["metrics"][field]["max_abs_range"][1] for g in gs) - - -def strict_status(model, n, left, right): - gs = select(model, n, left, right) - if not gs: - return "N/A" - if ( - min( - min(g["left_completed_processes"], g["right_completed_processes"]) - for g in gs - ) - < 3 - ): - return "INCOMPLETE" - return "PASS" if all(g["all_passed"] for g in gs) else "FAIL" - - -def band_status(model, n, mode): - ratios = [] - for field in ("energy", "forces", "virial", "stress"): - cross = band(model, n, mode, "TORCH", field) - own = band(model, n, "TORCH", "TORCH", field) - if cross is None or own is None: - return "N/A" - ratios.append(cross / own if own else (0 if cross == 0 else float("inf"))) - return ("PASS" if max(ratios) <= 3 else "FAIL") + f" ({max(ratios):.3f}x)" - - -def summary_cell(model, n, mode, field): - ss = [s for s in states if (s["model"], s["n"], s["mode"]) == (model, n, mode)] - good = sum(s["status"] == "completed" for s in ss) - if not good: - return "OOM" if any(s["status"] == "oom" for s in ss) else "pending/failed" - own = band(model, n, mode, mode, field) - text = f"self max_abs={own:.4g}" if own is not None else "self pending" - if mode != "TORCH": - cross = band(model, n, mode, "TORCH", field) - pure = band(model, n, "TORCH", "TORCH", field) - text += ( - f"; vs Torch={cross:.4g}" - if cross is not None - else "; Torch ref unavailable" - ) - if cross is not None and pure is not None: - ratio = cross / pure if pure else (0 if cross == 0 else float("inf")) - text += f"; band×{ratio:.3g}" - return text + (f" ({good}/3 processes)" if good < 3 else "") - - -lines = [ - "# ECS current-master comparison — measured 2026-10-25, finalized 2026-10-26", - "", - "BASE: 2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c, including merged residual-inplace #6058. Old668-base numbers are not substituted. Candidate is the isolated port of PR#2; its AOT branch-specialization issue remains unresolved.", - "", - f"Recorded {len(states)}/135 process results: {dict(Counter(s['status'] for s in states))}. Missing cells are NOT passes. Three processes ×3 frames ×3 accuracy repeats per arm; 8 extra warmups/30 wall+Event samples, separate steady replay. Same physical GPU within each case. TF32/AMP off.", - "", - "## Three accuracy columns", - "", - "Each field: worst pairwise max-absolute difference over same-frame outputs; self includes within/across-process repeats. Scientific band multiplier = worst deviation from compiled TORCH / TORCH own worst repeat max_abs, separately per field/model/size/system. <=3 is the meeting criterion, not a replacement for the fixed strict elementwise gate. Zero repeat band requires zero cross difference. Energy/virial eV, force eV/Angstrom, stress eV/Angstrom^3.", - "", - "| Model/system | Atoms | Output | Compiled Torch | Current master | Candidate |", - "| --- | ---: | --- | --- | --- | --- |", -] -cases = [ - (m, n) for m in ("Neo", "NeoCu", "Nano", "Mini", "Pro") for n in (96, 512, 4096) -] -gate_lines = [ - "## Three-column PASS/FAIL overview", - "", - "Strict columns cover all four fields: Torch self-repeat; master self-repeat and versus Torch; candidate self-repeat, versus Torch and versus master. A missing Torch reference is N/A, never PASS. The meeting band is a separately reported empirical diagnostic, not a rigorous error bound or a waiver of strict failure.", - "", - "| Model/system | Atoms | Compiled Torch | Current master | Candidate |", - "| --- | ---: | --- | --- | --- |", -] -for model, n in cases: - torch_gate = strict_status(model, n, "TORCH", "TORCH") - master_gate = f"strict self={strict_status(model, n, 'BASE', 'BASE')}; vs Torch={strict_status(model, n, 'BASE', 'TORCH')}; band={band_status(model, n, 'BASE')}" - candidate_gate = f"strict self={strict_status(model, n, 'ECS', 'ECS')}; vs Torch={strict_status(model, n, 'ECS', 'TORCH')}; vs master={strict_status(model, n, 'ECS', 'BASE')}; band={band_status(model, n, 'ECS')}" - gate_lines.append( - f"| {model} | {n} | strict self={torch_gate} | {master_gate} | {candidate_gate} |" - ) -first_table = lines.index("## Three accuracy columns") -lines[first_table:first_table] = [*gate_lines, ""] -for model, n in cases: - for field in ("energy", "forces", "virial", "stress"): - cells = [ - summary_cell(model, n, mode, field) for mode in ("TORCH", "BASE", "ECS") - ] - lines.append(f"| {model} | {n} | {field} | " + " | ".join(cells) + " |") -lines += [ - "", - "Strict per-element atol1e-5/rtol1e-4 and finite results, mean_abs/max_relative and within/across detail remain in ACCURACY_TABLE.md and summary.json. Pure-reference OOM prevents band acceptance. Band PASS does not silently erase strict FAIL.", - "", - "## Timing and memory — process medians and worst capacity", - "", - "Compilation excluded from timing, included in first/full memory. This independent-process protocol does not freeze all generated autotune choices: no stable isolated speedup is inferred solely from these percentages. GB=1e9B. Both allocated/reserved raw bytes are retained in result.json. Numbers are preliminary until 3 processes per arm complete.", - "", - "| Model/system | Atoms | Mode | Processes | Wall P50 ms | Wall P90 ms | Event P50 ms | First alloc GB | Full peak incl first GB | Steady alloc GB |", - "| --- | ---: | --- | ---: | ---: | ---: | ---: | ---: | ---: | ---: |", -] -for model, n in cases: - for mode in ("TORCH", "BASE", "ECS"): - ss = [ - s - for s in states - if (s["model"], s["n"], s["mode"], s["status"]) - == (model, n, mode, "completed") - ] - if not ss: - continue - raw = [ - json.loads((HERE / "results" / s["run"] / "result.json").read_text()) - for s in ss - ] - vals = [ - np.median([r["steady_wall_ms"][k] for r in raw]) for k in ("median", "p90") - ] - vals += [np.median([r["steady_event_ms"]["median"] for r in raw])] - vals += [ - max(r[k]["allocated"] for r in raw) / 1e9 - for k in ("first_peak", "complete_peak", "steady_peak") - ] - lines.append( - f"| {model} | {n} | {mode} | {len(raw)}/3 | " - + " | ".join(f"{v:.6f}" for v in vals) - + " |" - ) -lines += [ - "", - "## Route and acceptance limits", - "", - "Nano/Mini/Pro candidate is native fallback, not demonstrated ECS acceleration. Neo dispatch must be checked against generated wrappers; current single-cohort specialization must not be described as 80 runtime batches. Pro-MPtrj is not OMat24-Pro; original checkpoint unmodified, reader-only legacy metadata alias applies equally to all arms. H20/PT2/C++/training and unmeasured larger models are not accepted by this matrix.", - "", - "Upstream review also requires focused guard/alias tests, no new public fine-grained development switch for a merge-ready path, freeze-time policy/selection where applicable, optional-Triton CPU safety and real CI approval. Current port keeps the old default-off experimental switch pending policy resolution. Do not submit as ready-to-merge.", -] -lines += [ - "", - "## Candidate vs current-master changes", - "", - "Positive percentage means reduction/improvement; negative means increase. Medians of independent process quantiles, not a controlled paired significance estimate. Fallback timing variation is not attributed to ECS.", - "", - "| Model/system | Atoms | Time reduction % | First-inclusive full alloc reduction % | Steady alloc reduction % | Candidate route |", - "| --- | ---: | ---: | ---: | ---: | --- |", -] -for model, n in cases: - by_mode = {} - for mode in ("BASE", "ECS"): - rows = [ - json.loads((HERE / "results" / s["run"] / "result.json").read_text()) - for s in states - if (s["model"], s["n"], s["mode"], s["status"]) - == (model, n, mode, "completed") - ] - if len(rows) == 3: - by_mode[mode] = ( - float(np.median([r["steady_wall_ms"]["median"] for r in rows])), - max(r["complete_peak"]["allocated"] for r in rows), - max(r["steady_peak"]["allocated"] for r in rows), - ) - if len(by_mode) != 2: - lines.append(f"| {model} | {n} | N/A | N/A | N/A | incomplete/OOM |") - continue - changes = [ - 100 * (b - c) / b for b, c in zip(by_mode["BASE"], by_mode["ECS"], strict=True) - ] - route = ( - "single-cohort specialized, not bounded runtime batching" - if model.startswith("Neo") - else "native fallback" - ) - lines.append( - f"| {model} | {n} | " - + " | ".join(f"{v:.4f}" for v in changes) - + f" | {route} |" - ) -(HERE / "REPORT.md").write_text("\n".join(lines) + "\n") -# Generated public evidence only; never copy advisor or private handoff notes. -public_dir = HERE / "candidate/doc/development" -if public_dir.is_dir(): - (public_dir / "ecs-current-master-validation.md").write_text( - "\n".join(lines) + "\n" - ) - (public_dir / "ecs-current-master-validation.json").write_text( - json.dumps(data, indent=2, ensure_ascii=False, allow_nan=False) + "\n" - ) -print("REPORT updated", len(states)) diff --git a/doc/development/ecs-validation-20261025/run_matrix.py b/doc/development/ecs-validation-20261025/run_matrix.py deleted file mode 100644 index fb4214b4f1..0000000000 --- a/doc/development/ecs-validation-20261025/run_matrix.py +++ /dev/null @@ -1,119 +0,0 @@ -"""Run the disclosed three-arm manual CUDA matrix with explicit source/model paths.""" - -# ruff: noqa: T201 -- manual benchmark -import argparse -import json -import os -from pathlib import Path -import subprocess -import sys - -P = argparse.ArgumentParser(description=__doc__) -P.add_argument("--base-root", type=Path, required=True) -P.add_argument("--candidate-root", type=Path, required=True) -P.add_argument("--model-map", type=Path, required=True) -P.add_argument("--out-root", type=Path, required=True) -P.add_argument("--gpu", type=int, required=True) -P.add_argument( - "--models", nargs="+", choices=["Neo", "Nano", "Mini", "Pro"], required=True -) -P.add_argument( - "--sizes", type=int, nargs="+", choices=[96, 512, 4096], default=[96, 512, 4096] -) -P.add_argument("--repeats", type=int, default=3) -P.add_argument("--skip-existing", action="store_true") -a = P.parse_args() -models = json.loads(a.model_map.read_text()) -assert a.repeats >= 3 -for root in (a.base_root, a.candidate_root): - assert (root / "deepmd").is_dir(), root -records = [] -for model in a.models: - checkpoint = Path(models[model]).resolve() - assert checkpoint.is_file(), checkpoint - for system in ["diamond", "bcccu"] if model == "Neo" else ["diamond"]: - dims = ( - {96: (2, 2, 3), 512: (4, 4, 4), 4096: (8, 8, 8)} - if system == "diamond" - else {96: (4, 4, 3), 512: (8, 8, 4), 4096: (16, 16, 8)} - ) - label = model if system == "diamond" else model + "Cu" - for n in a.sizes: - for repeat in range(a.repeats): - for mode in ( - ["TORCH", "BASE", "ECS"] - if repeat % 2 == 0 - else ["ECS", "BASE", "TORCH"] - ): - out = ( - a.out_root.resolve() - / "results" - / f"{label}_n{n}_{mode}_p{repeat}" - ) - if (out / "result.json").exists(): - if a.skip_existing: - continue - raise FileExistsError( - f"Use a fresh output root; not overwriting {out}" - ) - busy = subprocess.check_output( - [ - "nvidia-smi", - "-i", - str(a.gpu), - "--query-compute-apps=pid", - "--format=csv,noheader", - ], - text=True, - ).strip() - if busy: - raise RuntimeError( - f"GPU busy; do not kill other processes: {busy}" - ) - out.parent.mkdir(parents=True, exist_ok=True) - command = [ - sys.executable, - str(Path(__file__).with_name("worker.py")), - "--root", - str( - ( - a.candidate_root if mode == "ECS" else a.base_root - ).resolve() - ), - "--model", - str(checkpoint), - "--out", - str(out), - "--cache", - str(a.out_root.resolve() / "cache" / f"{label}_{mode}"), - "--gpu", - str(a.gpu), - "--mode", - mode, - "--nrep", - "2", - "--repeat-cell", - *map(str, dims[n]), - "--system", - system, - "--warmup", - "8", - "--samples", - "30", - ] - print("START", out.name, flush=True) - with out.with_suffix(".log").open("w") as stream: - proc = subprocess.run( - command, - stdout=stream, - stderr=subprocess.STDOUT, - env=dict(os.environ, PYTHONHASHSEED=str(repeat % 2)), - check=False, - ) - records.append( - {"run": out.name, "exit": proc.returncode, "command": command} - ) - (a.out_root / f"commands_gpu{a.gpu}.json").write_text( - json.dumps(records, indent=2) - ) - print("DONE", out.name, proc.returncode, flush=True) diff --git a/doc/development/ecs-validation-20261025/runs.json b/doc/development/ecs-validation-20261025/runs.json deleted file mode 100644 index f1dcf559b2..0000000000 --- a/doc/development/ecs-validation-20261025/runs.json +++ /dev/null @@ -1,23956 +0,0 @@ -{ - "protocol": "Three-mode current-master comparison; independent-process timing, not matched-autotune significance", - "runs": [ - { - "run": "Mini_n4096_BASE_p0", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 4096, - "started": 1792867222.9062676, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 654988, - "first_peak": { - "allocated": 7452141568, - "reserved": 8095006720 - }, - "steady_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "full_window_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "steady_wall_ms": { - "median": 61.04267225600779, - "p90": 61.18058627471328, - "min": 60.93953177332878, - "max": 61.24725332483649, - "samples": [ - 61.02215778082609, - 61.07389507815242, - 61.09322188422084, - 61.18041696026921, - 61.24725332483649, - 61.0411842353642, - 61.17264227941632, - 61.070218216627836, - 60.993232764303684, - 60.988062992691994, - 61.07923621311784, - 61.12275831401348, - 60.93953177332878, - 60.95202500000596, - 60.97432691603899, - 61.08883395791054, - 61.10132718458772, - 61.04416027665138, - 61.025633942335844, - 61.182110104709864, - 61.00085796788335, - 61.00742006674409, - 61.00931391119957, - 61.06414692476392, - 60.98863482475281, - 61.14774523302913, - 60.94228709116578, - 61.19153695181012, - 61.013901606202126, - 60.98222220316529 - ] - }, - "steady_event_ms": { - "median": 60.99692726135254, - "p90": 61.13455924987793, - "samples": [ - 60.9666862487793, - 61.02540969848633, - 61.03955078125, - 61.134239196777344, - 61.20169448852539, - 60.99555206298828, - 61.12579345703125, - 61.023136138916016, - 60.947872161865234, - 60.94099044799805, - 61.02560043334961, - 61.076480865478516, - 60.89363098144531, - 60.90675354003906, - 60.92841720581055, - 61.04182434082031, - 61.054622650146484, - 60.9983024597168, - 60.97929763793945, - 61.1374397277832, - 60.95500946044922, - 60.96249771118164, - 60.9640007019043, - 61.018463134765625, - 60.94377517700195, - 61.102718353271484, - 60.89596939086914, - 61.146240234375, - 60.96451187133789, - 60.937313079833984 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 59823.374308180064, - 68.00634087994695, - 61.9095335714519, - 61.565924901515245, - 61.38765811920166, - 61.197859700769186, - 61.3702149130404, - 61.297438107430935, - 61.10470416024327 - ], - "event_ms_including_first": [ - 59823.1171875, - 67.97103881835938, - 61.87433624267578, - 61.534175872802734, - 61.357086181640625, - 61.16611099243164, - 61.33987045288086, - 61.266849517822266, - 61.07334518432617 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/x7/cx77b35dkue4opbxvc6mlqb5sii5fzxrki6ez5i7ikjg6nxiggnt.py" - ], - "routes": [ - { - "sha256": "6ed547ece6f59134ef706206c56fd7594f455b73d9fd0d524d07fcecf71c83a7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "elapsed_s": 68.08781576156616 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_BASE_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" - } - } - }, - { - "run": "Mini_n4096_BASE_p1", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 4096, - "started": 1792867443.203055, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 654988, - "first_peak": { - "allocated": 7452141568, - "reserved": 8095006720 - }, - "steady_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "full_window_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "steady_wall_ms": { - "median": 61.09776790253818, - "p90": 61.183441849425435, - "min": 61.00971112027764, - "max": 61.2781192176044, - "samples": [ - 61.02943932637572, - 61.20341829955578, - 61.136902309954166, - 61.19725480675697, - 61.10348924994469, - 61.0364219173789, - 61.096475925296545, - 61.13603012636304, - 61.070676892995834, - 61.062600929290056, - 61.08805863186717, - 61.15029705688357, - 61.01084407418966, - 61.03906687349081, - 61.084823217242956, - 61.00971112027764, - 61.044087167829275, - 61.03205308318138, - 61.0099621117115, - 61.1819070763886, - 61.053925193846226, - 61.12477881833911, - 61.099059879779816, - 61.11292587593198, - 61.06857303529978, - 61.105913016945124, - 61.13061960786581, - 61.2781192176044, - 61.11619295552373, - 61.13417726010084 - ] - }, - "steady_event_ms": { - "median": 61.05214500427246, - "p90": 61.13870086669922, - "samples": [ - 60.97401428222656, - 61.155616760253906, - 61.091552734375, - 61.15235137939453, - 61.056640625, - 60.990718841552734, - 61.050689697265625, - 61.09001541137695, - 61.02544021606445, - 61.01705551147461, - 61.04364776611328, - 61.105342864990234, - 60.966209411621094, - 60.99388885498047, - 61.0173454284668, - 60.96156692504883, - 60.999168395996094, - 60.98713684082031, - 60.96464157104492, - 61.137184143066406, - 61.00921630859375, - 61.07932662963867, - 61.0536003112793, - 61.06729507446289, - 61.023841857910156, - 61.06070327758789, - 61.08390426635742, - 61.231327056884766, - 61.0709114074707, - 61.089054107666016 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 60186.58738071099, - 68.39554198086262, - 61.693113297224045, - 61.40699191018939, - 61.52066681534052, - 61.51946494355798, - 61.25695863738656, - 61.32363388314843, - 61.18846917524934 - ], - "event_ms_including_first": [ - 60186.32421875, - 68.35997009277344, - 61.6607666015625, - 61.37535858154297, - 61.490177154541016, - 61.48886489868164, - 61.22547149658203, - 61.29302215576172, - 61.157344818115234 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/x7/cx77b35dkue4opbxvc6mlqb5sii5fzxrki6ez5i7ikjg6nxiggnt.py" - ], - "routes": [ - { - "sha256": "6ed547ece6f59134ef706206c56fd7594f455b73d9fd0d524d07fcecf71c83a7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "elapsed_s": 68.44814229011536 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_BASE_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" - } - } - }, - { - "run": "Mini_n4096_BASE_p2", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 4096, - "started": 1792867669.8973494, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 654988, - "first_peak": { - "allocated": 7452141568, - "reserved": 8095006720 - }, - "steady_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "full_window_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "steady_wall_ms": { - "median": 61.163411708548665, - "p90": 61.23953149653971, - "min": 61.0970463603735, - "max": 61.41827302053571, - "samples": [ - 61.163251753896475, - 61.257889959961176, - 61.19335815310478, - 61.230799183249474, - 61.163571663200855, - 61.15607777610421, - 61.14509701728821, - 61.1474122852087, - 61.19094416499138, - 61.13757286220789, - 61.115161050111055, - 61.1962229013443, - 61.12717278301716, - 61.18023442104459, - 61.0973471775651, - 61.12629175186157, - 61.23749166727066, - 61.192556750029325, - 61.222052201628685, - 61.41827302053571, - 61.190002132207155, - 61.19306804612279, - 61.168260872364044, - 61.10711582005024, - 61.099059879779816, - 61.133624985814095, - 61.11720483750105, - 61.283599119633436, - 61.0970463603735, - 61.13902572542429 - ] - }, - "steady_event_ms": { - "median": 61.11276817321777, - "p90": 61.193518829345706, - "samples": [ - 61.09695816040039, - 61.21036911010742, - 61.146366119384766, - 61.184383392333984, - 61.1163215637207, - 61.109214782714844, - 61.098655700683594, - 61.10163116455078, - 61.14495849609375, - 61.09174346923828, - 61.068607330322266, - 61.150657653808594, - 61.08063888549805, - 61.13478469848633, - 61.051937103271484, - 61.07990264892578, - 61.191646575927734, - 61.14720153808594, - 61.175296783447266, - 61.36934280395508, - 61.143009185791016, - 61.14723205566406, - 61.12255859375, - 61.06166458129883, - 61.05276870727539, - 61.08745574951172, - 61.07084655761719, - 61.23756790161133, - 61.05209732055664, - 61.0931510925293 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 60133.898738306016, - 68.93159495666623, - 62.07662681117654, - 61.635542660951614, - 61.542739160358906, - 61.60901393741369, - 61.550803016871214, - 61.4536302164197, - 61.17625627666712 - ], - "event_ms_including_first": [ - 60133.625, - 68.89373016357422, - 62.0417594909668, - 61.59987258911133, - 61.50998306274414, - 61.57497787475586, - 61.5195198059082, - 61.42176055908203, - 61.144798278808594 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/x7/cx77b35dkue4opbxvc6mlqb5sii5fzxrki6ez5i7ikjg6nxiggnt.py" - ], - "routes": [ - { - "sha256": "6ed547ece6f59134ef706206c56fd7594f455b73d9fd0d524d07fcecf71c83a7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "elapsed_s": 68.38445401191711 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_BASE_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" - } - } - }, - { - "run": "Mini_n4096_ECS_p0", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 4096, - "started": 1792867296.1695714, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 654988, - "first_peak": { - "allocated": 7452141568, - "reserved": 8095006720 - }, - "steady_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "full_window_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "steady_wall_ms": { - "median": 60.98957592621446, - "p90": 61.03120888583362, - "min": 60.900348238646984, - "max": 61.073394026607275, - "samples": [ - 61.01248972117901, - 61.03119486942887, - 61.00912392139435, - 60.91094808652997, - 60.97827525809407, - 60.976872220635414, - 61.06885615736246, - 61.01922178640962, - 60.99050818011165, - 61.02008279412985, - 60.958187095820904, - 60.95267599448562, - 60.9951070509851, - 61.005236115306616, - 60.96400786191225, - 61.073394026607275, - 60.92730909585953, - 60.98353490233421, - 60.95816660672426, - 60.93218829482794, - 60.951785184443, - 60.9962590970099, - 61.02017406374216, - 60.922480188310146, - 61.03133503347635, - 60.942837968468666, - 61.027878895401955, - 61.00927386432886, - 60.900348238646984, - 60.98864367231727 - ] - }, - "steady_event_ms": { - "median": 60.94443130493164, - "p90": 60.98493957519531, - "samples": [ - 60.95686340332031, - 60.984798431396484, - 60.96412658691406, - 60.86556625366211, - 60.932289123535156, - 60.93209457397461, - 61.02377700805664, - 60.97200012207031, - 60.944862365722656, - 60.97459030151367, - 60.912513732910156, - 60.90748977661133, - 60.95027160644531, - 60.9598388671875, - 60.9183349609375, - 61.0266227722168, - 60.88025665283203, - 60.93952178955078, - 60.913089752197266, - 60.887168884277344, - 60.906944274902344, - 60.95142364501953, - 60.97520065307617, - 60.877342224121094, - 60.986209869384766, - 60.898494720458984, - 60.98195266723633, - 60.963905334472656, - 60.85561752319336, - 60.944000244140625 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 60283.80609024316, - 68.8195270486176, - 61.977081932127476, - 61.584239825606346, - 61.37083610519767, - 61.32127298042178, - 61.13739591091871, - 61.443001963198185, - 61.05743395164609 - ], - "event_ms_including_first": [ - 60283.546875, - 68.78253173828125, - 61.945152282714844, - 61.551551818847656, - 61.34025573730469, - 61.29004669189453, - 61.106815338134766, - 61.40435028076172, - 61.02656173706055 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/lc/clcey24vo3vhag6juyof3cin4zl6vo4cq6w6wjqwb3ii4k3p4mdv.py" - ], - "routes": [ - { - "sha256": "ba83281ec08f12427203faf70f2514e44c06c842c6326c3510b69dd7375504c3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "elapsed_s": 68.5319676399231 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_ECS_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" - } - } - }, - { - "run": "Mini_n4096_ECS_p1", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 4096, - "started": 1792867369.8683994, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 654988, - "first_peak": { - "allocated": 7452141568, - "reserved": 8095006720 - }, - "steady_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "full_window_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "steady_wall_ms": { - "median": 61.07865693047643, - "p90": 61.165013862773776, - "min": 60.97889319062233, - "max": 61.9726711884141, - "samples": [ - 61.02394871413708, - 61.13261403515935, - 61.9726711884141, - 61.350204050540924, - 61.018256936222315, - 61.080154962837696, - 61.12186284735799, - 61.051000375300646, - 61.07715889811516, - 61.0645548440516, - 61.15341279655695, - 60.97889319062233, - 61.03958794847131, - 61.04878522455692, - 61.13497819751501, - 61.094441916793585, - 61.03859608992934, - 61.095863580703735, - 61.004661954939365, - 61.16234976798296, - 61.08914082869887, - 61.081716790795326, - 61.1001318320632, - 61.01345922797918, - 61.18899071589112, - 61.08778901398182, - 61.07305083423853, - 61.0268241725862, - 61.06699910014868, - 61.07644829899073 - ] - }, - "steady_event_ms": { - "median": 61.03289604187012, - "p90": 61.119131088256836, - "samples": [ - 60.96467208862305, - 61.083839416503906, - 61.92348861694336, - 61.30335998535156, - 60.9719352722168, - 61.03398513793945, - 61.07593536376953, - 61.00371170043945, - 61.03180694580078, - 61.01910400390625, - 61.108062744140625, - 60.932830810546875, - 60.99353790283203, - 61.00364685058594, - 61.0873908996582, - 61.048160552978516, - 60.99273681640625, - 61.04995346069336, - 60.9587516784668, - 61.11648178100586, - 61.0432014465332, - 61.03583908081055, - 61.054080963134766, - 60.967201232910156, - 61.142974853515625, - 61.04179382324219, - 61.026302337646484, - 60.980255126953125, - 61.02006530761719, - 61.030174255371094 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 59904.77965306491, - 68.51080991327763, - 62.0174347423017, - 61.49318441748619, - 61.26428255811334, - 61.232542153447866, - 61.14294286817312, - 61.394177842885256, - 61.16898311302066 - ], - "event_ms_including_first": [ - 59904.5234375, - 68.47503662109375, - 61.982398986816406, - 61.46131134033203, - 61.23273468017578, - 61.20051193237305, - 61.11145782470703, - 61.36249542236328, - 61.13734436035156 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/lc/clcey24vo3vhag6juyof3cin4zl6vo4cq6w6wjqwb3ii4k3p4mdv.py" - ], - "routes": [ - { - "sha256": "ba83281ec08f12427203faf70f2514e44c06c842c6326c3510b69dd7375504c3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "elapsed_s": 68.14441180229187 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_ECS_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" - } - } - }, - { - "run": "Mini_n4096_ECS_p2", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 4096, - "started": 1792867743.65348, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 654988, - "first_peak": { - "allocated": 7452141568, - "reserved": 8095006720 - }, - "steady_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "full_window_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "steady_wall_ms": { - "median": 60.97031175158918, - "p90": 61.05337189510465, - "min": 60.8975887298584, - "max": 61.115370597690344, - "samples": [ - 60.98806019872427, - 61.07715889811516, - 61.032854951918125, - 61.030720826238394, - 60.9822990372777, - 61.050728894770145, - 61.1080676317215, - 60.9194808639586, - 60.97125867381692, - 60.96936482936144, - 60.985765885561705, - 60.94291480258107, - 60.8975887298584, - 60.91742683202028, - 60.944739263504744, - 61.01744715124369, - 60.93149306252599, - 60.91032410040498, - 60.975026339292526, - 60.9655580483377, - 60.928798746317625, - 60.92679500579834, - 60.940401162952185, - 60.964205767959356, - 61.115370597690344, - 60.971619095653296, - 60.9713988378644, - 60.998078901320696, - 60.96720090135932, - 60.914361383765936 - ] - }, - "steady_event_ms": { - "median": 60.924991607666016, - "p90": 61.00752067565918, - "samples": [ - 60.932769775390625, - 61.03084945678711, - 60.98780822753906, - 60.9727668762207, - 60.926143646240234, - 61.00492858886719, - 61.062591552734375, - 60.87363052368164, - 60.92585754394531, - 60.92438507080078, - 60.9400634765625, - 60.897342681884766, - 60.84476852416992, - 60.87180709838867, - 60.89948654174805, - 60.97135925292969, - 60.88643264770508, - 60.86470413208008, - 60.92969512939453, - 60.920318603515625, - 60.883487701416016, - 60.88249588012695, - 60.89491271972656, - 60.91836929321289, - 61.07097625732422, - 60.92723083496094, - 60.92559814453125, - 60.95344161987305, - 60.92182540893555, - 60.868896484375 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 60466.39922820032, - 67.97197321429849, - 61.87120825052261, - 61.44612608477473, - 61.397894751280546, - 61.66181433945894, - 62.994180247187614, - 61.37062283232808, - 61.08261877670884 - ], - "event_ms_including_first": [ - 60466.12109375, - 67.93590545654297, - 61.83747100830078, - 61.41292953491211, - 61.36761474609375, - 61.615745544433594, - 62.964351654052734, - 61.33865737915039, - 61.050048828125 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/lc/clcey24vo3vhag6juyof3cin4zl6vo4cq6w6wjqwb3ii4k3p4mdv.py" - ], - "routes": [ - { - "sha256": "ba83281ec08f12427203faf70f2514e44c06c842c6326c3510b69dd7375504c3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - }, - "elapsed_s": 68.71718192100525 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_ECS_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" - } - } - }, - { - "run": "Mini_n4096_TORCH_p0", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 4096, - "started": 1792867145.494091, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 654988, - "first_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "steady_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "full_window_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "steady_wall_ms": { - "median": 122.26220243610442, - "p90": 122.41586772724986, - "min": 122.13869392871857, - "max": 139.66630212962627, - "samples": [ - 122.24502488970757, - 122.37802613526583, - 122.36830731853843, - 122.17809772118926, - 122.18895880505443, - 122.24624725058675, - 122.25467199459672, - 122.20452772453427, - 139.66630212962627, - 122.13869392871857, - 122.19808576628566, - 122.42885213345289, - 122.19564197584987, - 122.19670368358493, - 122.30909615755081, - 122.48423602432013, - 122.31219094246626, - 122.25418211892247, - 122.36553290858865, - 122.41442501544952, - 122.3484599031508, - 122.26623483002186, - 122.2110609523952, - 122.25817004218698, - 122.20055097714067, - 122.24678788334131, - 122.30692198500037, - 122.41428531706333, - 122.27693479508162, - 122.31923500075936 - ] - }, - "steady_event_ms": { - "median": 122.21728134155273, - "p90": 122.37042541503907, - "samples": [ - 122.18745422363281, - 122.3318099975586, - 122.32268524169922, - 122.13314819335938, - 122.1435546875, - 122.20121765136719, - 122.20883178710938, - 122.16063690185547, - 139.6134796142578, - 122.0923843383789, - 122.15225219726562, - 122.38329315185547, - 122.14883422851562, - 122.1513900756836, - 122.26102447509766, - 122.43885040283203, - 122.26537322998047, - 122.20877075195312, - 122.31993865966797, - 122.36870574951172, - 122.30271911621094, - 122.22163391113281, - 122.16595458984375, - 122.21292877197266, - 122.15494537353516, - 122.20214080810547, - 122.26182556152344, - 122.3689956665039, - 122.2311019897461, - 122.27388763427734 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 60576.916771009564, - 128.13726486638188, - 122.89219675585628, - 122.33999371528625, - 122.38834565505385, - 122.22636863589287, - 122.60594684630632, - 122.36158410087228, - 122.20882624387741 - ], - "event_ms_including_first": [ - 60576.69140625, - 128.1009979248047, - 122.86009979248047, - 122.30815887451172, - 122.35711669921875, - 122.19583892822266, - 122.57417297363281, - 122.3304672241211, - 122.1778564453125 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/o2/co2b57k6vquuozw2btfvvh3khmwsnn7pzkgpiszs2tpco6zodq3i.py" - ], - "routes": [ - { - "sha256": "d9cbf3a17f5f5b687bee6d5793efbaf9c1726545fed7d540125793f31fe24a8f", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "elapsed_s": 73.1863534450531 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_TORCH_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" - } - } - }, - { - "run": "Mini_n4096_TORCH_p1", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 4096, - "started": 1792867516.4544158, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 654988, - "first_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "steady_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "full_window_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "steady_wall_ms": { - "median": 122.27084231562912, - "p90": 122.37977255135775, - "min": 122.14242480695248, - "max": 122.43114039301872, - "samples": [ - 122.27325234562159, - 122.30976112186909, - 122.32868699356914, - 122.1912782639265, - 122.21209704875946, - 122.25636979565024, - 122.22587317228317, - 122.20507394522429, - 122.29625601321459, - 122.21181718632579, - 122.23479989916086, - 122.3161038942635, - 122.14242480695248, - 122.29083525016904, - 122.3339568823576, - 122.18738999217749, - 122.29597475379705, - 122.27269075810909, - 122.18696996569633, - 122.22475092858076, - 122.40086309611797, - 122.26899387314916, - 122.24822491407394, - 122.24787380546331, - 122.33703304082155, - 122.3774291574955, - 122.43114039301872, - 122.2524931654334, - 122.29443294927478, - 122.42865609005094 - ] - }, - "steady_event_ms": { - "median": 122.21646499633789, - "p90": 122.33288345336913, - "samples": [ - 122.2059555053711, - 122.26150512695312, - 122.28348541259766, - 122.14486694335938, - 122.1659164428711, - 122.20976257324219, - 122.17852783203125, - 122.15939331054688, - 122.25023651123047, - 122.16492462158203, - 122.19062042236328, - 122.27091217041016, - 122.09613037109375, - 122.24476623535156, - 122.28755187988281, - 122.14060974121094, - 122.24992370605469, - 122.22675323486328, - 122.14112091064453, - 122.17804718017578, - 122.35497283935547, - 122.2231674194336, - 122.20191955566406, - 122.20095825195312, - 122.28844451904297, - 122.33042907714844, - 122.38304138183594, - 122.20585632324219, - 122.24864196777344, - 122.38317108154297 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 59596.018130891025, - 128.29603906720877, - 123.01529431715608, - 122.51695292070508, - 122.56631581112742, - 122.35965626314282, - 122.58337810635567, - 123.03007207810879, - 122.2479548305273 - ], - "event_ms_including_first": [ - 59595.765625, - 128.25350952148438, - 122.98255920410156, - 122.48310089111328, - 122.53520202636719, - 122.32860565185547, - 122.5514907836914, - 122.9916763305664, - 122.2161636352539 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/o2/co2b57k6vquuozw2btfvvh3khmwsnn7pzkgpiszs2tpco6zodq3i.py" - ], - "routes": [ - { - "sha256": "d9cbf3a17f5f5b687bee6d5793efbaf9c1726545fed7d540125793f31fe24a8f", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "elapsed_s": 72.17204761505127 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_TORCH_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" - } - } - }, - { - "run": "Mini_n4096_TORCH_p2", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 4096, - "started": 1792867592.8907924, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 654988, - "first_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "steady_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "full_window_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "steady_wall_ms": { - "median": 122.2964464686811, - "p90": 122.36465467140079, - "min": 122.11965303868055, - "max": 122.46708897873759, - "samples": [ - 122.25889461115003, - 122.25533789023757, - 122.35245201736689, - 122.20631586387753, - 122.30104487389326, - 122.35298287123442, - 122.39576410502195, - 122.22753604874015, - 122.24060017615557, - 122.11965303868055, - 122.32813565060496, - 122.31592275202274, - 122.18573736026883, - 122.2306820563972, - 122.20919225364923, - 122.18717997893691, - 122.26473586633801, - 122.30825796723366, - 122.24209401756525, - 122.32885789126158, - 122.46708897873759, - 122.3611980676651, - 122.29184806346893, - 122.30792827904224, - 122.30482185259461, - 122.31641309335828, - 122.28008499369025, - 122.33105162158608, - 122.28718865662813, - 122.40182515233755 - ] - }, - "steady_event_ms": { - "median": 122.2488784790039, - "p90": 122.31769104003907, - "samples": [ - 122.20172882080078, - 122.20694732666016, - 122.30403137207031, - 122.15961456298828, - 122.25318145751953, - 122.30377960205078, - 122.34758758544922, - 122.17984008789062, - 122.19312286376953, - 122.0728988647461, - 122.28141021728516, - 122.26947021484375, - 122.13932800292969, - 122.18409729003906, - 122.16118621826172, - 122.14035034179688, - 122.21731567382812, - 122.2613754272461, - 122.1942367553711, - 122.27884674072266, - 122.42041778564453, - 122.31436920166016, - 122.24457550048828, - 122.25965118408203, - 122.25830078125, - 122.26956939697266, - 122.23321533203125, - 122.28307342529297, - 122.24095916748047, - 122.3552017211914 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 60099.492565728724, - 128.68898082524538, - 122.91135778650641, - 122.5331830792129, - 122.555335983634, - 122.74573463946581, - 122.32044199481606, - 122.60388722643256, - 122.24827613681555 - ], - "event_ms_including_first": [ - 60099.2265625, - 128.6378631591797, - 122.87814331054688, - 122.5000991821289, - 122.52438354492188, - 122.71417236328125, - 122.28697967529297, - 122.57142639160156, - 122.21734619140625 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/o2/co2b57k6vquuozw2btfvvh3khmwsnn7pzkgpiszs2tpco6zodq3i.py" - ], - "routes": [ - { - "sha256": "d9cbf3a17f5f5b687bee6d5793efbaf9c1726545fed7d540125793f31fe24a8f", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "elapsed_s": 72.60985684394836 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n4096_TORCH_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" - } - } - }, - { - "run": "Mini_n512_BASE_p0", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 512, - "started": 1792866590.2607875, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 654988, - "first_peak": { - "allocated": 944773120, - "reserved": 1052770304 - }, - "steady_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "full_window_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "steady_wall_ms": { - "median": 12.18432979658246, - "p90": 12.276597879827023, - "min": 12.1065778657794, - "max": 12.431442737579346, - "samples": [ - 12.176771182566881, - 12.269516009837389, - 12.16338574886322, - 12.186318635940552, - 12.222628109157085, - 12.163696810603142, - 12.182340957224369, - 12.194875162094831, - 12.276139110326767, - 12.171921785920858, - 12.314010877162218, - 12.12492398917675, - 12.212919071316719, - 12.191309127956629, - 12.124452739953995, - 12.128811329603195, - 12.221445795148611, - 12.170840986073017, - 12.280726805329323, - 12.208881787955761, - 12.19422509893775, - 12.223959900438786, - 12.194594833999872, - 12.175819836556911, - 12.1065778657794, - 12.151634320616722, - 12.133909855037928, - 12.15583086013794, - 12.431442737579346, - 12.116817757487297 - ] - }, - "steady_event_ms": { - "median": 12.140736103057861, - "p90": 12.234502792358398, - "samples": [ - 12.12713623046875, - 12.22662353515625, - 12.121024131774902, - 12.140416145324707, - 12.179776191711426, - 12.121855735778809, - 12.141056060791016, - 12.1528959274292, - 12.234016418457031, - 12.130528450012207, - 12.27228832244873, - 12.082976341247559, - 12.171072006225586, - 12.149503707885742, - 12.08243179321289, - 12.0863037109375, - 12.177824020385742, - 12.127872467041016, - 12.238880157470703, - 12.166272163391113, - 12.15334415435791, - 12.182175636291504, - 12.152576446533203, - 12.134464263916016, - 12.064864158630371, - 12.110527992248535, - 12.092576026916504, - 12.114591598510742, - 12.389599800109863, - 12.076224327087402 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 59870.724057778716, - 15.3455869294703, - 12.648012023419142, - 12.784809805452824, - 12.588358949869871, - 12.656236998736858, - 12.473010923713446, - 12.699497863650322, - 12.54234230145812 - ], - "event_ms_including_first": [ - 59870.4765625, - 15.315744400024414, - 12.618144035339355, - 12.754528045654297, - 12.55891227722168, - 12.627264022827148, - 12.444000244140625, - 12.670495986938477, - 12.512127876281738 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/pt/cptnk5o74w56xu7fo2xk45i3fxcauwgddnybnjx3j6gv4leo7cf2.py" - ], - "routes": [ - { - "sha256": "65b87bf8215249eac2e03cbb20cb741c8a61edf1f8f0997b9a65e5c6ebaab228", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "elapsed_s": 64.34333086013794 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_BASE_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" - } - } - }, - { - "run": "Mini_n512_BASE_p1", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 512, - "started": 1792866799.3416362, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 654988, - "first_peak": { - "allocated": 944773120, - "reserved": 1052770304 - }, - "steady_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "full_window_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "steady_wall_ms": { - "median": 12.35263841226697, - "p90": 12.428011605516076, - "min": 12.306676246225834, - "max": 12.68098410218954, - "samples": [ - 12.33563106507063, - 12.68098410218954, - 12.313568964600563, - 12.379805091768503, - 12.427153997123241, - 12.395594269037247, - 12.320312205702066, - 12.35394598916173, - 12.36275164410472, - 12.345599941909313, - 12.345710769295692, - 12.334438972175121, - 12.325682677328587, - 12.410562951117754, - 12.349477037787437, - 12.40589376538992, - 12.435730081051588, - 12.311204802244902, - 12.438266072422266, - 12.383401859551668, - 12.375557329505682, - 12.359817046672106, - 12.349718250334263, - 12.396687176078558, - 12.306676246225834, - 12.348886579275131, - 12.330211233347654, - 12.337423861026764, - 12.35133083537221, - 12.364265974611044 - ] - }, - "steady_event_ms": { - "median": 12.309119701385498, - "p90": 12.383843421936035, - "samples": [ - 12.28326416015625, - 12.635775566101074, - 12.269887924194336, - 12.335455894470215, - 12.382880210876465, - 12.351072311401367, - 12.277088165283203, - 12.309951782226562, - 12.319007873535156, - 12.302751541137695, - 12.300000190734863, - 12.291775703430176, - 12.282143592834473, - 12.367520332336426, - 12.306719779968262, - 12.362560272216797, - 12.392512321472168, - 12.268159866333008, - 12.394271850585938, - 12.33948802947998, - 12.325023651123047, - 12.315584182739258, - 12.306048393249512, - 12.352640151977539, - 12.263551712036133, - 12.305439949035645, - 12.28713607788086, - 12.293760299682617, - 12.308287620544434, - 12.321151733398438 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 59819.45493305102, - 15.633180271834135, - 13.011027127504349, - 12.809726875275373, - 12.606462929397821, - 12.62407610192895, - 12.576025910675526, - 12.877735309302807, - 12.96274596825242 - ], - "event_ms_including_first": [ - 59819.21484375, - 15.597472190856934, - 12.978848457336426, - 12.777471542358398, - 12.575424194335938, - 12.59347152709961, - 12.545087814331055, - 12.843744277954102, - 12.931903839111328 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/pt/cptnk5o74w56xu7fo2xk45i3fxcauwgddnybnjx3j6gv4leo7cf2.py" - ], - "routes": [ - { - "sha256": "65b87bf8215249eac2e03cbb20cb741c8a61edf1f8f0997b9a65e5c6ebaab228", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "elapsed_s": 64.20091247558594 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_BASE_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" - } - } - }, - { - "run": "Mini_n512_BASE_p2", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 512, - "started": 1792867008.3304482, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 654988, - "first_peak": { - "allocated": 944773120, - "reserved": 1052770304 - }, - "steady_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "full_window_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "steady_wall_ms": { - "median": 12.151073198765516, - "p90": 12.189678940922022, - "min": 12.09471607580781, - "max": 12.388702016323805, - "samples": [ - 12.166400905698538, - 12.13507167994976, - 12.10670918226242, - 12.09471607580781, - 12.172844260931015, - 12.143759056925774, - 12.188103049993515, - 12.160180136561394, - 12.128399685025215, - 12.127057183533907, - 12.152204755693674, - 12.177943717688322, - 12.150632217526436, - 12.16147281229496, - 12.157886289060116, - 12.129962909966707, - 12.388702016323805, - 12.123018968850374, - 12.219000607728958, - 12.203861959278584, - 12.126766610890627, - 12.15366693213582, - 12.137035839259624, - 12.175679206848145, - 12.139610946178436, - 12.151514180004597, - 12.170649133622646, - 12.147696688771248, - 12.139459606260061, - 12.127157766371965 - ] - }, - "steady_event_ms": { - "median": 12.10644817352295, - "p90": 12.147126293182373, - "samples": [ - 12.112223625183105, - 12.091039657592773, - 12.063424110412598, - 12.051615715026855, - 12.130687713623047, - 12.101247787475586, - 12.145567893981934, - 12.11689567565918, - 12.085472106933594, - 12.084511756896973, - 12.10927963256836, - 12.13475227355957, - 12.108256340026855, - 12.118207931518555, - 12.115296363830566, - 12.08732795715332, - 12.346624374389648, - 12.08073616027832, - 12.176511764526367, - 12.161151885986328, - 12.084768295288086, - 12.104096412658691, - 12.094016075134277, - 12.13263988494873, - 12.096960067749023, - 12.108320236206055, - 12.1212797164917, - 12.104640007019043, - 12.09609603881836, - 12.083871841430664 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 58759.12004522979, - 15.163243282586336, - 12.724225874990225, - 12.695321347564459, - 12.569292914122343, - 12.540267780423164, - 12.605720665305853, - 12.63672998175025, - 12.311405036598444 - ], - "event_ms_including_first": [ - 58758.88671875, - 15.122079849243164, - 12.692383766174316, - 12.663647651672363, - 12.539072036743164, - 12.509087562561035, - 12.575743675231934, - 12.606752395629883, - 12.280927658081055 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/pt/cptnk5o74w56xu7fo2xk45i3fxcauwgddnybnjx3j6gv4leo7cf2.py" - ], - "routes": [ - { - "sha256": "65b87bf8215249eac2e03cbb20cb741c8a61edf1f8f0997b9a65e5c6ebaab228", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "elapsed_s": 63.19084167480469 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_BASE_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" - } - } - }, - { - "run": "Mini_n512_ECS_p0", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 512, - "started": 1792866659.882099, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 654988, - "first_peak": { - "allocated": 944773120, - "reserved": 1052770304 - }, - "steady_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "full_window_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "steady_wall_ms": { - "median": 12.20858097076416, - "p90": 12.24905801936984, - "min": 12.141655199229717, - "max": 12.585121672600508, - "samples": [ - 12.186639942228794, - 12.269657105207443, - 12.215043883770704, - 12.17960612848401, - 12.141655199229717, - 12.213480193167925, - 12.212920002639294, - 12.175377923995256, - 12.244630139321089, - 12.235441710799932, - 12.20801007002592, - 12.170399073511362, - 12.229971587657928, - 12.149409856647253, - 12.183513958007097, - 12.224973179399967, - 12.263754848390818, - 12.195285875350237, - 12.155530974268913, - 12.166031170636415, - 12.226724997162819, - 12.20202911645174, - 12.188322842121124, - 12.173475231975317, - 12.585121672600508, - 12.24742503836751, - 12.2053362429142, - 12.229921761900187, - 12.226476334035397, - 12.2091518715024 - ] - }, - "steady_event_ms": { - "median": 12.166287899017334, - "p90": 12.206233692169189, - "samples": [ - 12.13599967956543, - 12.224160194396973, - 12.171456336975098, - 12.135456085205078, - 12.09875202178955, - 12.170880317687988, - 12.169759750366211, - 12.131967544555664, - 12.196864128112793, - 12.192000389099121, - 12.165696144104004, - 12.127167701721191, - 12.18716812133789, - 12.106783866882324, - 12.140480041503906, - 12.18188762664795, - 12.221440315246582, - 12.152383804321289, - 12.112863540649414, - 12.12326431274414, - 12.181599617004395, - 12.159680366516113, - 12.145343780517578, - 12.129631996154785, - 12.54207992553711, - 12.204544067382812, - 12.16204833984375, - 12.180000305175781, - 12.183103561401367, - 12.166879653930664 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 60215.07346723229, - 15.661814250051975, - 13.246532063931227, - 12.9128722473979, - 12.726659886538982, - 12.70681293681264, - 12.631400022655725, - 12.905597686767578, - 12.458022218197584 - ], - "event_ms_including_first": [ - 60214.83203125, - 15.626272201538086, - 13.214943885803223, - 12.88003158569336, - 12.694751739501953, - 12.675328254699707, - 12.600383758544922, - 12.873503684997559, - 12.427071571350098 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/bv/cbvfyyen4txa7fs43ouu4o7ol5yetrvdozi7ie46qqloq345xu2p.py" - ], - "routes": [ - { - "sha256": "ad7d03de10bff6b7698af0e611860f8f311a974be4adb3cc315196bcc2372ef1", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "elapsed_s": 64.68185305595398 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_ECS_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" - } - } - }, - { - "run": "Mini_n512_ECS_p1", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 512, - "started": 1792866729.7270973, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 654988, - "first_peak": { - "allocated": 944773120, - "reserved": 1052770304 - }, - "steady_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "full_window_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "steady_wall_ms": { - "median": 12.268950464203954, - "p90": 12.327449349686503, - "min": 12.194224167615175, - "max": 12.34022993594408, - "samples": [ - 12.287429999560118, - 12.333877850323915, - 12.224141042679548, - 12.270328123122454, - 12.22304766997695, - 12.248557060956955, - 12.326735071837902, - 12.250942178070545, - 12.281518895179033, - 12.263294775038958, - 12.233077082782984, - 12.194224167615175, - 12.256913352757692, - 12.212829664349556, - 12.276388704776764, - 12.272171676158905, - 12.272140942513943, - 12.33433885499835, - 12.316724751144648, - 12.236142996698618, - 12.246313039213419, - 12.249828781932592, - 12.288571801036596, - 12.223339173942804, - 12.267572805285454, - 12.34022993594408, - 12.287882156670094, - 12.254567816853523, - 12.274496257305145, - 12.279556132853031 - ] - }, - "steady_event_ms": { - "median": 12.2249116897583, - "p90": 12.277036762237548, - "samples": [ - 12.235551834106445, - 12.28816032409668, - 12.179903984069824, - 12.22662353515625, - 12.170783996582031, - 12.203680038452148, - 12.276063919067383, - 12.204544067382812, - 12.23692798614502, - 12.219103813171387, - 12.188799858093262, - 12.149791717529297, - 12.213279724121094, - 12.16857624053955, - 12.232319831848145, - 12.226688385009766, - 12.228768348693848, - 12.289407730102539, - 12.270751953125, - 12.194047927856445, - 12.202495574951172, - 12.206080436706543, - 12.244256019592285, - 12.179167747497559, - 12.223199844360352, - 12.285792350769043, - 12.243200302124023, - 12.210176467895508, - 12.230015754699707, - 12.23574447631836 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 59843.85432396084, - 15.788232907652855, - 12.830296065658331, - 12.739465106278658, - 12.561467941850424, - 12.491496279835701, - 12.53019878640771, - 12.777777388691902, - 12.477869633585215 - ], - "event_ms_including_first": [ - 59843.61328125, - 15.755743980407715, - 12.797087669372559, - 12.707327842712402, - 12.530240058898926, - 12.45952033996582, - 12.498527526855469, - 12.743424415588379, - 12.446016311645508 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/bv/cbvfyyen4txa7fs43ouu4o7ol5yetrvdozi7ie46qqloq345xu2p.py" - ], - "routes": [ - { - "sha256": "ad7d03de10bff6b7698af0e611860f8f311a974be4adb3cc315196bcc2372ef1", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "elapsed_s": 64.29855155944824 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_ECS_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" - } - } - }, - { - "run": "Mini_n512_ECS_p2", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 512, - "started": 1792867076.4172797, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 654988, - "first_peak": { - "allocated": 944773120, - "reserved": 1052770304 - }, - "steady_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "full_window_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "steady_wall_ms": { - "median": 12.096314458176494, - "p90": 12.16979962773621, - "min": 12.050202116370201, - "max": 12.36288296058774, - "samples": [ - 12.093895114958286, - 12.105357367545366, - 12.147816829383373, - 12.089225929230452, - 12.071521952748299, - 12.071552220731974, - 12.074708007276058, - 12.090588919818401, - 12.118089944124222, - 12.182161677628756, - 12.092382181435823, - 12.050202116370201, - 12.098733801394701, - 12.068197131156921, - 12.36288296058774, - 12.099996209144592, - 12.217928655445576, - 12.058498337864876, - 12.068736832588911, - 12.072264216840267, - 12.106759008020163, - 12.155560776591301, - 12.076601851731539, - 12.109833769500256, - 12.16842606663704, - 12.152264825999737, - 12.110175099223852, - 12.087191920727491, - 12.068177107721567, - 12.103131972253323 - ] - }, - "steady_event_ms": { - "median": 12.052688121795654, - "p90": 12.126400470733643, - "samples": [ - 12.040512084960938, - 12.061152458190918, - 12.104255676269531, - 12.046272277832031, - 12.02883243560791, - 12.029343605041504, - 12.032735824584961, - 12.048288345336914, - 12.075296401977539, - 12.1396484375, - 12.049568176269531, - 12.006848335266113, - 12.055808067321777, - 12.0250883102417, - 12.32044792175293, - 12.056608200073242, - 12.168767929077148, - 12.015135765075684, - 12.025919914245605, - 12.029952049255371, - 12.064448356628418, - 12.113247871398926, - 12.033599853515625, - 12.066399574279785, - 12.12492847442627, - 12.109567642211914, - 12.068703651428223, - 12.044544219970703, - 12.024383544921875, - 12.060895919799805 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 59879.84981574118, - 15.038406942039728, - 13.018801808357239, - 12.634275015443563, - 12.525981292128563, - 12.449356727302074, - 12.437273282557726, - 12.671777047216892, - 12.329960707575083 - ], - "event_ms_including_first": [ - 59879.61328125, - 15.006112098693848, - 12.987296104431152, - 12.603327751159668, - 12.494879722595215, - 12.419103622436523, - 12.407872200012207, - 12.641440391540527, - 12.299776077270508 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/bv/cbvfyyen4txa7fs43ouu4o7ol5yetrvdozi7ie46qqloq345xu2p.py" - ], - "routes": [ - { - "sha256": "ad7d03de10bff6b7698af0e611860f8f311a974be4adb3cc315196bcc2372ef1", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 945821696, - "reserved": 1052770304 - }, - "elapsed_s": 64.29158616065979 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_ECS_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" - } - } - }, - { - "run": "Mini_n512_TORCH_p0", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 512, - "started": 1792866520.3602352, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 654988, - "first_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "steady_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "full_window_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "steady_wall_ms": { - "median": 18.290149746462703, - "p90": 18.326486693695188, - "min": 18.249412067234516, - "max": 21.09384536743164, - "samples": [ - 18.27865792438388, - 18.295048736035824, - 18.277024384588003, - 18.27305695042014, - 18.33269977942109, - 18.27648375183344, - 18.307842779904604, - 18.286473117768764, - 18.27615173533559, - 18.292264081537724, - 18.284848891198635, - 18.249412067234516, - 18.270893022418022, - 18.293214961886406, - 18.282334320247173, - 18.270893022418022, - 18.288035411387682, - 18.274499103426933, - 18.308954779058695, - 18.266144208610058, - 18.292264081537724, - 18.309055361896753, - 21.09384536743164, - 18.778712023049593, - 18.309636041522026, - 18.324705306440592, - 18.266885075718164, - 18.302693031728268, - 18.325796350836754, - 18.293165136128664 - ] - }, - "steady_event_ms": { - "median": 18.247647285461426, - "p90": 18.284413528442382, - "samples": [ - 18.227231979370117, - 18.251392364501953, - 18.234336853027344, - 18.229631423950195, - 18.29043197631836, - 18.233856201171875, - 18.264480590820312, - 18.24425506591797, - 18.233600616455078, - 18.250240325927734, - 18.23161506652832, - 18.206815719604492, - 18.228607177734375, - 18.2511043548584, - 18.239839553833008, - 18.227392196655273, - 18.245695114135742, - 18.232351303100586, - 18.265727996826172, - 18.223167419433594, - 18.24959945678711, - 18.26633644104004, - 21.050464630126953, - 18.73504066467285, - 18.26697540283203, - 18.282495498657227, - 18.22447967529297, - 18.260351181030273, - 18.28374481201172, - 18.251039505004883 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 60659.45019200444, - 21.058508660644293, - 18.990471959114075, - 18.77062674611807, - 18.65514786913991, - 18.603050149977207, - 18.53853790089488, - 18.750338815152645, - 18.403362948447466 - ], - "event_ms_including_first": [ - 60659.20703125, - 21.02342414855957, - 18.958751678466797, - 18.73948860168457, - 18.624544143676758, - 18.571392059326172, - 18.50771141052246, - 18.720352172851562, - 18.373632431030273 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/zj/czji6yuoowveeslyj6rbbqmc4fg3laqzy2ls622oescgppuvtbof.py" - ], - "routes": [ - { - "sha256": "819c53568da57b620534fc63446dfce6693c9eb0a90cea4e25979860d1a8cb51", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "elapsed_s": 65.24397683143616 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_TORCH_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" - } - } - }, - { - "run": "Mini_n512_TORCH_p1", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 512, - "started": 1792866868.7664943, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 654988, - "first_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "steady_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "full_window_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "steady_wall_ms": { - "median": 18.30332330428064, - "p90": 18.349090218544006, - "min": 18.266985192894936, - "max": 18.476551864296198, - "samples": [ - 18.317931797355413, - 18.3699200861156, - 18.277985975146294, - 18.32501497119665, - 18.33803905174136, - 18.27726513147354, - 18.28382769599557, - 18.28879676759243, - 18.286211881786585, - 18.279538955539465, - 18.314425367861986, - 18.325626850128174, - 18.281874246895313, - 18.282365053892136, - 18.307451158761978, - 18.33704812452197, - 18.317030277103186, - 18.34677578881383, - 18.277023918926716, - 18.31158995628357, - 18.266985192894936, - 18.343870993703604, - 18.281472846865654, - 18.476551864296198, - 18.280510790646076, - 18.305246718227863, - 18.293465953320265, - 18.301399890333414, - 18.29145196825266, - 18.380078952759504 - ] - }, - "steady_event_ms": { - "median": 18.260480880737305, - "p90": 18.3061279296875, - "samples": [ - 18.264223098754883, - 18.325855255126953, - 18.235136032104492, - 18.281312942504883, - 18.29542350769043, - 18.233535766601562, - 18.241472244262695, - 18.245759963989258, - 18.243328094482422, - 18.23664093017578, - 18.270816802978516, - 18.28278350830078, - 18.239328384399414, - 18.232959747314453, - 18.264192581176758, - 18.293312072753906, - 18.273151397705078, - 18.303936004638672, - 18.233951568603516, - 18.266752243041992, - 18.223968505859375, - 18.302080154418945, - 18.238784790039062, - 18.432640075683594, - 18.238239288330078, - 18.262496948242188, - 18.25052833557129, - 18.258464813232422, - 18.249055862426758, - 18.336896896362305 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 60798.475925810635, - 21.254238206893206, - 18.6204737983644, - 18.639269284904003, - 18.548406660556793, - 18.743867054581642, - 18.567251972854137, - 18.65253411233425, - 18.373325932770967 - ], - "event_ms_including_first": [ - 60798.23828125, - 21.22047996520996, - 18.588863372802734, - 18.60723114013672, - 18.517696380615234, - 18.70047950744629, - 18.53606414794922, - 18.622304916381836, - 18.342815399169922 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/zj/czji6yuoowveeslyj6rbbqmc4fg3laqzy2ls622oescgppuvtbof.py" - ], - "routes": [ - { - "sha256": "819c53568da57b620534fc63446dfce6693c9eb0a90cea4e25979860d1a8cb51", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "elapsed_s": 65.35191535949707 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_TORCH_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" - } - } - }, - { - "run": "Mini_n512_TORCH_p2", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 512, - "started": 1792866938.3249924, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 654988, - "first_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "steady_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "full_window_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "steady_wall_ms": { - "median": 18.31850688904524, - "p90": 18.362727155908942, - "min": 18.283457029610872, - "max": 18.39214190840721, - "samples": [ - 18.37693341076374, - 18.39214190840721, - 18.33346113562584, - 18.318491987884045, - 18.362064845860004, - 18.305058125406504, - 18.314565997570753, - 18.304115626960993, - 18.283457029610872, - 18.334343098104, - 18.302453216165304, - 18.321007024496794, - 18.315687775611877, - 18.306669779121876, - 18.323452211916447, - 18.35256675258279, - 18.31625821068883, - 18.328281119465828, - 18.33395194262266, - 18.30446720123291, - 18.304096069186926, - 18.348549026995897, - 18.2849601842463, - 18.368687946349382, - 18.316589295864105, - 18.323352094739676, - 18.30858364701271, - 18.307292368263006, - 18.318521790206432, - 18.3437904343009 - ] - }, - "steady_event_ms": { - "median": 18.27348804473877, - "p90": 18.318901824951173, - "samples": [ - 18.32601547241211, - 18.34828758239746, - 18.279071807861328, - 18.274463653564453, - 18.318111419677734, - 18.260448455810547, - 18.272672653198242, - 18.261600494384766, - 18.22969627380371, - 18.291296005249023, - 18.26095962524414, - 18.268352508544922, - 18.27244758605957, - 18.26406478881836, - 18.269535064697266, - 18.30886459350586, - 18.27350425720215, - 18.280000686645508, - 18.29088020324707, - 18.262208938598633, - 18.26188850402832, - 18.30633544921875, - 18.24224090576172, - 18.326112747192383, - 18.27347183227539, - 18.280351638793945, - 18.265247344970703, - 18.264863967895508, - 18.275903701782227, - 18.301471710205078 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 61141.63054805249, - 20.599632058292627, - 18.707447219640017, - 18.70771823450923, - 18.631063401699066, - 18.550631124526262, - 18.4494499117136, - 18.69372185319662, - 18.388234078884125 - ], - "event_ms_including_first": [ - 61141.390625, - 20.56768035888672, - 18.67580795288086, - 18.67558479309082, - 18.599552154541016, - 18.519935607910156, - 18.41868782043457, - 18.662879943847656, - 18.357120513916016 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/zj/czji6yuoowveeslyj6rbbqmc4fg3laqzy2ls622oescgppuvtbof.py" - ], - "routes": [ - { - "sha256": "819c53568da57b620534fc63446dfce6693c9eb0a90cea4e25979860d1a8cb51", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "elapsed_s": 65.69359827041626 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n512_TORCH_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" - } - } - }, - { - "run": "Mini_n96_BASE_p0", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 96, - "started": 1792865886.026652, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 654988, - "first_peak": { - "allocated": 286303232, - "reserved": 335544320 - }, - "steady_peak": { - "allocated": 190499840, - "reserved": 335544320 - }, - "full_window_peak": { - "allocated": 286303232, - "reserved": 335544320 - }, - "steady_wall_ms": { - "median": 11.099673574790359, - "p90": 11.355408700183034, - "min": 11.011966969817877, - "max": 19.798481836915016, - "samples": [ - 11.369592975825071, - 11.353832669556141, - 11.243053711950779, - 11.224298737943172, - 11.225830763578415, - 11.246159207075834, - 11.20980130508542, - 11.210332158952951, - 11.12418994307518, - 11.013990733772516, - 11.043977923691273, - 11.090175248682499, - 11.039449833333492, - 11.06884516775608, - 11.10405195504427, - 11.091648135334253, - 11.131834238767624, - 11.095295194536448, - 11.03614317253232, - 11.091367807239294, - 11.028788983821869, - 11.011966969817877, - 11.044659186154604, - 11.078863870352507, - 19.798481836915016, - 11.29082404077053, - 11.095095425844193, - 11.073683854192495, - 11.515829246491194, - 11.168622877448797 - ] - }, - "steady_event_ms": { - "median": 11.05783987045288, - "p90": 11.310601711273193, - "samples": [ - 11.320768356323242, - 11.30947208404541, - 11.200127601623535, - 11.182080268859863, - 11.183327674865723, - 11.203807830810547, - 11.166784286499023, - 11.167872428894043, - 11.081888198852539, - 10.971839904785156, - 11.00160026550293, - 11.049087524414062, - 10.997599601745605, - 11.026464462280273, - 11.062335968017578, - 11.048959732055664, - 11.089695930480957, - 11.053343772888184, - 10.993951797485352, - 11.047455787658691, - 10.98755168914795, - 10.96998405456543, - 11.002528190612793, - 11.03667163848877, - 19.74982452392578, - 11.248064041137695, - 11.053088188171387, - 11.027872085571289, - 11.473664283752441, - 11.127167701721191 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 101353.3333139494, - 15.31868102028966, - 11.893622111529112, - 11.628672014921904, - 11.458660941570997, - 11.47284684702754, - 11.654842179268599, - 11.858916841447353, - 11.356637813150883 - ], - "event_ms_including_first": [ - 101352.96875, - 15.288384437561035, - 11.863264083862305, - 11.596927642822266, - 11.427743911743164, - 11.44211196899414, - 11.62399959564209, - 11.828319549560547, - 11.326080322265625 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/l4/cl47buc6lhwg656bzvyv4go4yvakcy2xiolvimccgi6ahup4uoys.py" - ], - "routes": [ - { - "sha256": "26c1c078b36a0cfd8615a408c5f057d0e14f11a5191d4416efc8cf6d357e96a4", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 286303232, - "reserved": 335544320 - }, - "elapsed_s": 105.70226383209229 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_BASE_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" - } - } - }, - { - "run": "Mini_n96_BASE_p1", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 96, - "started": 1792866176.3936014, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 654988, - "first_peak": { - "allocated": 189451264, - "reserved": 230686720 - }, - "steady_peak": { - "allocated": 190499840, - "reserved": 230686720 - }, - "full_window_peak": { - "allocated": 190499840, - "reserved": 230686720 - }, - "steady_wall_ms": { - "median": 11.15957647562027, - "p90": 11.31912306882441, - "min": 11.060710065066814, - "max": 11.518843937665224, - "samples": [ - 11.097047943621874, - 11.507312767207623, - 11.518843937665224, - 11.206825263798237, - 11.271887924522161, - 11.165366973727942, - 11.096486821770668, - 11.210592929273844, - 11.069827247411013, - 11.34379394352436, - 11.25029707327485, - 11.09737902879715, - 11.097429320216179, - 11.239686980843544, - 11.077582370489836, - 11.069465894252062, - 11.316381860524416, - 11.060710065066814, - 11.08026597648859, - 11.288128793239594, - 11.123719159513712, - 11.175115592777729, - 11.218177154660225, - 11.153785977512598, - 11.094273068010807, - 11.210863012820482, - 11.071840766817331, - 11.064365971833467, - 11.219029314815998, - 11.063735000789165 - ] - }, - "steady_event_ms": { - "median": 11.112720012664795, - "p90": 11.276912021636964, - "samples": [ - 11.04800033569336, - 11.464639663696289, - 11.476320266723633, - 11.163968086242676, - 11.229599952697754, - 11.114815711975098, - 11.053664207458496, - 11.167327880859375, - 11.028608322143555, - 11.301247596740723, - 11.207136154174805, - 11.055392265319824, - 11.054752349853516, - 11.1942720413208, - 11.034239768981934, - 11.026399612426758, - 11.274208068847656, - 11.017760276794434, - 11.037792205810547, - 11.245152473449707, - 11.08124828338623, - 11.132512092590332, - 11.173919677734375, - 11.110624313354492, - 11.05123233795166, - 11.167072296142578, - 11.028736114501953, - 11.021759986877441, - 11.176544189453125, - 11.021439552307129 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 60047.99153795466, - 15.65907383337617, - 12.29199394583702, - 12.016674969345331, - 11.63383200764656, - 11.827778071165085, - 11.512563098222017, - 12.00299896299839, - 11.473828926682472 - ], - "event_ms_including_first": [ - 60047.76171875, - 15.623807907104492, - 12.25932788848877, - 11.984864234924316, - 11.602784156799316, - 11.79695987701416, - 11.48147201538086, - 11.971424102783203, - 11.442463874816895 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/l4/cl47buc6lhwg656bzvyv4go4yvakcy2xiolvimccgi6ahup4uoys.py" - ], - "routes": [ - { - "sha256": "26c1c078b36a0cfd8615a408c5f057d0e14f11a5191d4416efc8cf6d357e96a4", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 190499840, - "reserved": 230686720 - }, - "elapsed_s": 64.37705945968628 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_BASE_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" - } - } - }, - { - "run": "Mini_n96_BASE_p2", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 96, - "started": 1792866383.047765, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 654988, - "first_peak": { - "allocated": 189451264, - "reserved": 230686720 - }, - "steady_peak": { - "allocated": 190499840, - "reserved": 230686720 - }, - "full_window_peak": { - "allocated": 190499840, - "reserved": 230686720 - }, - "steady_wall_ms": { - "median": 10.899999411776662, - "p90": 10.948528908193111, - "min": 10.837931651622057, - "max": 11.328309308737516, - "samples": [ - 10.911791119724512, - 10.957077611237764, - 10.885020717978477, - 10.898696724325418, - 11.328309308737516, - 10.938561987131834, - 10.876926127821207, - 10.907953605055809, - 10.893817991018295, - 10.88465005159378, - 10.85195830091834, - 10.885402094572783, - 10.837931651622057, - 10.891644284129143, - 10.862739756703377, - 10.867157019674778, - 10.922852903604507, - 10.886423755437136, - 10.947579052299261, - 10.975402314215899, - 10.844325181096792, - 10.886825155466795, - 10.913394857198, - 10.884881019592285, - 10.90425718575716, - 10.90707303956151, - 10.902503971010447, - 10.90902741998434, - 10.91534923762083, - 10.901302099227905 - ] - }, - "steady_event_ms": { - "median": 10.855216026306152, - "p90": 10.907209396362305, - "samples": [ - 10.862848281860352, - 10.914496421813965, - 10.843487739562988, - 10.849823951721191, - 11.285728454589844, - 10.897151947021484, - 10.835968017578125, - 10.86633586883545, - 10.851391792297363, - 10.843199729919434, - 10.810432434082031, - 10.844063758850098, - 10.795455932617188, - 10.849696159362793, - 10.822015762329102, - 10.823904037475586, - 10.881376266479492, - 10.844575881958008, - 10.906399726867676, - 10.934144020080566, - 10.80361557006836, - 10.84496021270752, - 10.871359825134277, - 10.843392372131348, - 10.859040260314941, - 10.865983963012695, - 10.860735893249512, - 10.86847972869873, - 10.873984336853027, - 10.859231948852539 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 58811.385630164295, - 14.293550048023462, - 11.719167232513428, - 11.661377269774675, - 11.522365268319845, - 11.48529490455985, - 11.495094280689955, - 11.768540367484093, - 11.490033939480782 - ], - "event_ms_including_first": [ - 58811.14453125, - 14.260479927062988, - 11.68057632446289, - 11.630016326904297, - 11.492095947265625, - 11.454784393310547, - 11.464768409729004, - 11.73078441619873, - 11.459327697753906 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor/l4/cl47buc6lhwg656bzvyv4go4yvakcy2xiolvimccgi6ahup4uoys.py" - ], - "routes": [ - { - "sha256": "26c1c078b36a0cfd8615a408c5f057d0e14f11a5191d4416efc8cf6d357e96a4", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 190499840, - "reserved": 230686720 - }, - "elapsed_s": 63.09790778160095 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_BASE_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_BASE/triton" - } - } - }, - { - "run": "Mini_n96_ECS_p0", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 96, - "started": 1792865996.5800514, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 654988, - "first_peak": { - "allocated": 286303232, - "reserved": 335544320 - }, - "steady_peak": { - "allocated": 190499840, - "reserved": 335544320 - }, - "full_window_peak": { - "allocated": 286303232, - "reserved": 335544320 - }, - "steady_wall_ms": { - "median": 11.064626974985003, - "p90": 11.128738848492503, - "min": 11.002540122717619, - "max": 11.19787897914648, - "samples": [ - 11.072972789406776, - 11.19787897914648, - 11.128086596727371, - 11.043325997889042, - 11.13460911437869, - 11.096838396042585, - 11.0542681068182, - 11.0572031699121, - 11.043798178434372, - 11.055809911340475, - 11.088171042501926, - 11.107437312602997, - 11.064657010138035, - 11.048646178096533, - 11.049076914787292, - 11.064596939831972, - 11.1572309397161, - 11.077250819653273, - 11.072582099586725, - 11.068635154515505, - 11.011966969817877, - 11.038588359951973, - 11.051130946725607, - 11.0724619589746, - 11.002540122717619, - 11.02180639281869, - 11.113518849015236, - 11.071820743381977, - 11.03671407327056, - 11.050449684262276 - ] - }, - "steady_event_ms": { - "median": 11.022655963897705, - "p90": 11.085865306854249, - "samples": [ - 11.022848129272461, - 11.154111862182617, - 11.085151672363281, - 11.00108814239502, - 11.09228801727295, - 11.045663833618164, - 11.011712074279785, - 11.016127586364746, - 11.001503944396973, - 11.013567924499512, - 11.046496391296387, - 11.064607620239258, - 11.022687911987305, - 11.007360458374023, - 11.007360458374023, - 11.022624015808105, - 11.115263938903809, - 11.035296440124512, - 11.030400276184082, - 11.026464462280273, - 10.96947193145752, - 10.997056007385254, - 11.008959770202637, - 11.029472351074219, - 10.961024284362793, - 10.979616165161133, - 11.071840286254883, - 11.029760360717773, - 10.994943618774414, - 10.997119903564453 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 101371.07564276084, - 14.978197868913412, - 11.838868726044893, - 11.623702943325043, - 11.490671895444393, - 11.486994102597237, - 11.470222845673561, - 11.87683129683137, - 11.390062049031258 - ], - "event_ms_including_first": [ - 101370.7265625, - 14.947360038757324, - 11.807744026184082, - 11.594016075134277, - 11.459775924682617, - 11.456543922424316, - 11.43939208984375, - 11.846431732177734, - 11.359264373779297 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/vq/cvqquhjv5f6nyhttrdqdc3cvajtnipif3bhq3zusk3y4bjgy5kg5.py" - ], - "routes": [ - { - "sha256": "27be9e332efbed712736875b79ff26763add57a318f7542effdfa27c92cd6148", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 286303232, - "reserved": 335544320 - }, - "elapsed_s": 105.68764877319336 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_ECS_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" - } - } - }, - { - "run": "Mini_n96_ECS_p1", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 96, - "started": 1792866107.294757, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 654988, - "first_peak": { - "allocated": 189451264, - "reserved": 230686720 - }, - "steady_peak": { - "allocated": 190499840, - "reserved": 230686720 - }, - "full_window_peak": { - "allocated": 190499840, - "reserved": 230686720 - }, - "steady_wall_ms": { - "median": 11.228691786527634, - "p90": 11.320870881900191, - "min": 11.183430906385183, - "max": 13.469889760017395, - "samples": [ - 11.286165565252304, - 11.30366837605834, - 11.242311913520098, - 11.298778932541609, - 11.221963912248611, - 11.22920773923397, - 11.230469681322575, - 11.2320426851511, - 11.681932955980301, - 11.294191237539053, - 11.212516110390425, - 11.218787636607885, - 11.250457726418972, - 11.201024055480957, - 11.254204902797937, - 11.294401250779629, - 11.223016306757927, - 11.210131924599409, - 11.196126230061054, - 11.206223629415035, - 11.228175833821297, - 11.213317979127169, - 11.190635152161121, - 11.227064300328493, - 11.298928875476122, - 13.469889760017395, - 11.475693434476852, - 11.20501197874546, - 11.211614590138197, - 11.183430906385183 - ] - }, - "steady_event_ms": { - "median": 11.18222427368164, - "p90": 11.276556682586671, - "samples": [ - 11.236031532287598, - 11.259903907775879, - 11.19974422454834, - 11.248703956604004, - 11.179200172424316, - 11.185407638549805, - 11.179776191711426, - 11.188159942626953, - 11.638912200927734, - 11.25062370300293, - 11.16982364654541, - 11.175552368164062, - 11.203167915344238, - 11.15884780883789, - 11.211584091186523, - 11.25158405303955, - 11.179743766784668, - 11.16761589050293, - 11.153887748718262, - 11.163135528564453, - 11.176223754882812, - 11.169568061828613, - 11.148287773132324, - 11.184672355651855, - 11.249728202819824, - 13.426560401916504, - 11.426431655883789, - 11.162591934204102, - 11.1692476272583, - 11.141087532043457 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 59556.63427198306, - 14.58091801032424, - 12.380111031234264, - 12.355554848909378, - 11.90849021077156, - 11.857222765684128, - 11.812129057943821, - 11.955789756029844, - 11.422543320804834 - ], - "event_ms_including_first": [ - 59556.3984375, - 14.545280456542969, - 12.347007751464844, - 12.32249641418457, - 11.87673568725586, - 11.825407981872559, - 11.7805757522583, - 11.92460823059082, - 11.391008377075195 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/vq/cvqquhjv5f6nyhttrdqdc3cvajtnipif3bhq3zusk3y4bjgy5kg5.py" - ], - "routes": [ - { - "sha256": "27be9e332efbed712736875b79ff26763add57a318f7542effdfa27c92cd6148", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 190499840, - "reserved": 230686720 - }, - "elapsed_s": 63.8685827255249 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_ECS_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" - } - } - }, - { - "run": "Mini_n96_ECS_p2", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 96, - "started": 1792866451.1167815, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 654988, - "first_peak": { - "allocated": 189451264, - "reserved": 230686720 - }, - "steady_peak": { - "allocated": 190499840, - "reserved": 230686720 - }, - "full_window_peak": { - "allocated": 190499840, - "reserved": 230686720 - }, - "steady_wall_ms": { - "median": 11.180259054526687, - "p90": 11.242529144510627, - "min": 11.106470134109259, - "max": 11.387921869754791, - "samples": [ - 11.197451036423445, - 11.256612837314606, - 11.198182590305805, - 11.223780922591686, - 11.150523088872433, - 11.190097313374281, - 11.183535680174828, - 11.179877910763025, - 11.24096428975463, - 11.3618322648108, - 11.157175060361624, - 11.14298915490508, - 11.185969226062298, - 11.138849891722202, - 11.206117924302816, - 11.387921869754791, - 11.180640198290348, - 11.106470134109259, - 11.1243543215096, - 11.163047049194574, - 11.160532012581825, - 11.177263222634792, - 11.186048854142427, - 11.142278090119362, - 11.174296960234642, - 11.186329647898674, - 11.155432090163231, - 11.145333293825388, - 11.12887216731906, - 11.181070003658533 - ] - }, - "steady_event_ms": { - "median": 11.13595199584961, - "p90": 11.199059104919433, - "samples": [ - 11.146688461303711, - 11.212479591369629, - 11.153663635253906, - 11.180512428283691, - 11.10694408416748, - 11.133119583129883, - 11.140031814575195, - 11.136992454528809, - 11.1975679397583, - 11.316800117492676, - 11.114463806152344, - 11.100095748901367, - 11.142592430114746, - 11.09603214263916, - 11.146719932556152, - 11.34278392791748, - 11.137824058532715, - 11.064448356628418, - 11.08140754699707, - 11.11952018737793, - 11.117631912231445, - 11.13491153717041, - 11.141983985900879, - 11.09932804107666, - 11.121983528137207, - 11.14352035522461, - 11.112159729003906, - 11.102368354797363, - 11.08556842803955, - 11.138431549072266 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 59844.46926461533, - 14.64522397145629, - 12.472039088606834, - 12.144370004534721, - 11.790500953793526, - 11.74235064536333, - 11.560207232832909, - 11.87158515676856, - 11.438757181167603 - ], - "event_ms_including_first": [ - 59844.22265625, - 14.610143661499023, - 12.440192222595215, - 12.111616134643555, - 11.759679794311523, - 11.711392402648926, - 11.529888153076172, - 11.840607643127441, - 11.407327651977539 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor/vq/cvqquhjv5f6nyhttrdqdc3cvajtnipif3bhq3zusk3y4bjgy5kg5.py" - ], - "routes": [ - { - "sha256": "27be9e332efbed712736875b79ff26763add57a318f7542effdfa27c92cd6148", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 190499840, - "reserved": 230686720 - }, - "elapsed_s": 64.1533555984497 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_ECS_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_ECS/triton" - } - } - }, - { - "run": "Mini_n96_TORCH_p0", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 96, - "started": 1792865783.8177643, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 654988, - "first_peak": { - "allocated": 400473088, - "reserved": 438304768 - }, - "steady_peak": { - "allocated": 299809792, - "reserved": 438304768 - }, - "full_window_peak": { - "allocated": 400473088, - "reserved": 438304768 - }, - "steady_wall_ms": { - "median": 11.962016113102436, - "p90": 12.010487634688616, - "min": 11.932887136936188, - "max": 12.064263690263033, - "samples": [ - 12.02404871582985, - 12.03087205067277, - 11.9469640776515, - 11.994914151728153, - 11.962492018938065, - 11.950539890676737, - 11.963024269789457, - 11.95826381444931, - 11.95215294137597, - 11.944207828491926, - 11.969405226409435, - 11.974694672971964, - 11.941343080252409, - 12.064263690263033, - 12.008980847895145, - 11.958344839513302, - 11.957113165408373, - 11.987450066953897, - 11.999193113297224, - 11.932887136936188, - 11.965589132159948, - 11.976048350334167, - 11.937013827264309, - 11.939539108425379, - 11.954947840422392, - 11.958044022321701, - 11.967581696808338, - 11.991175822913647, - 11.961540207266808, - 11.938678100705147 - ] - }, - "steady_event_ms": { - "median": 11.917488098144531, - "p90": 11.959945678710938, - "samples": [ - 11.972991943359375, - 11.987104415893555, - 11.904735565185547, - 11.953023910522461, - 11.919008255004883, - 11.906911849975586, - 11.91385555267334, - 11.905792236328125, - 11.90998363494873, - 11.902112007141113, - 11.927424430847168, - 11.928895950317383, - 11.899999618530273, - 12.022784233093262, - 11.95849609375, - 11.91596794128418, - 11.915072441101074, - 11.937536239624023, - 11.948896408081055, - 11.890496253967285, - 11.924384117126465, - 11.935168266296387, - 11.895423889160156, - 11.897631645202637, - 11.913599967956543, - 11.915871620178223, - 11.924832344055176, - 11.949695587158203, - 11.920191764831543, - 11.897600173950195 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 93835.04986809567, - 15.891552902758121, - 12.558197136968374, - 12.636424973607063, - 12.474059127271175, - 12.371035292744637, - 12.355444021522999, - 12.527980376034975, - 12.09571398794651 - ], - "event_ms_including_first": [ - 93834.734375, - 15.860639572143555, - 12.527647972106934, - 12.606111526489258, - 12.443039894104004, - 12.340383529663086, - 12.32419204711914, - 12.496576309204102, - 12.06499195098877 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/6p/c6ptz5ocvvs5y3qw2wrdkfwqgc4khppg6muvh3ieos2bzq2pv24i.py" - ], - "routes": [ - { - "sha256": "4b43a1b1ab027b3a94c3379d411c299005cbbb14e4174a6c3185a78004ed888d", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 400473088, - "reserved": 438304768 - }, - "elapsed_s": 97.88647866249084 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_TORCH_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" - } - } - }, - { - "run": "Mini_n96_TORCH_p1", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 96, - "started": 1792866245.7738216, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 654988, - "first_peak": { - "allocated": 299809792, - "reserved": 354418688 - }, - "steady_peak": { - "allocated": 299809792, - "reserved": 354418688 - }, - "full_window_peak": { - "allocated": 299809792, - "reserved": 354418688 - }, - "steady_wall_ms": { - "median": 11.872476898133755, - "p90": 11.919480795040727, - "min": 11.804745066910982, - "max": 11.942875571548939, - "samples": [ - 11.836314108222723, - 11.879755649715662, - 11.855038814246655, - 11.927897110581398, - 11.942875571548939, - 11.8507519364357, - 11.895966716110706, - 11.83595322072506, - 11.873855255544186, - 11.916685849428177, - 11.880808044224977, - 11.844600085169077, - 11.92786730825901, - 11.874064803123474, - 11.861652135848999, - 11.871820781379938, - 11.877611745148897, - 11.835782788693905, - 11.879375204443932, - 11.870898772031069, - 11.89142931252718, - 11.918548960238695, - 11.804745066910982, - 11.868675705045462, - 11.858276091516018, - 11.873133014887571, - 11.908079963177443, - 11.81336073204875, - 11.842125095427036, - 11.865749955177307 - ] - }, - "steady_event_ms": { - "median": 11.829071998596191, - "p90": 11.876803016662597, - "samples": [ - 11.785920143127441, - 11.836640357971191, - 11.813183784484863, - 11.885760307312012, - 11.900287628173828, - 11.808159828186035, - 11.85324764251709, - 11.793984413146973, - 11.832544326782227, - 11.87440013885498, - 11.839072227478027, - 11.80303955078125, - 11.886272430419922, - 11.832703590393066, - 11.819583892822266, - 11.829728126525879, - 11.82755184173584, - 11.793472290039062, - 11.83788776397705, - 11.828415870666504, - 11.849311828613281, - 11.875807762145996, - 11.762880325317383, - 11.827072143554688, - 11.817312240600586, - 11.831392288208008, - 11.865920066833496, - 11.771136283874512, - 11.800352096557617, - 11.824352264404297 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 59704.94273910299, - 14.817934948951006, - 12.73782690986991, - 12.492494191974401, - 12.31105113402009, - 12.179201934486628, - 12.370773125439882, - 12.554200366139412, - 12.049547396600246 - ], - "event_ms_including_first": [ - 59704.72265625, - 14.78444766998291, - 12.70582389831543, - 12.46025562286377, - 12.278847694396973, - 12.148159980773926, - 12.340448379516602, - 12.524031639099121, - 12.019904136657715 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/6p/c6ptz5ocvvs5y3qw2wrdkfwqgc4khppg6muvh3ieos2bzq2pv24i.py" - ], - "routes": [ - { - "sha256": "4b43a1b1ab027b3a94c3379d411c299005cbbb14e4174a6c3185a78004ed888d", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 299809792, - "reserved": 354418688 - }, - "elapsed_s": 63.70583724975586 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_TORCH_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" - } - } - }, - { - "run": "Mini_n96_TORCH_p2", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 96, - "started": 1792866313.6985586, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 654988, - "first_peak": { - "allocated": 299809792, - "reserved": 354418688 - }, - "steady_peak": { - "allocated": 299809792, - "reserved": 354418688 - }, - "full_window_peak": { - "allocated": 299809792, - "reserved": 354418688 - }, - "steady_wall_ms": { - "median": 11.973392684012651, - "p90": 12.178195919841528, - "min": 11.850764974951744, - "max": 12.349145952612162, - "samples": [ - 12.089837808161974, - 12.15304620563984, - 12.167553883045912, - 12.173835653811693, - 12.09471607580781, - 12.006279081106186, - 12.03369116410613, - 12.060462031513453, - 11.956525035202503, - 11.925095692276955, - 12.330321129411459, - 12.022721115499735, - 11.92574668675661, - 11.89782377332449, - 11.887384112924337, - 11.850764974951744, - 11.997593101114035, - 11.913324240595102, - 11.950814165174961, - 12.118370737880468, - 12.21743831411004, - 11.948390398174524, - 11.975712142884731, - 11.912032030522823, - 11.893205810338259, - 11.885582003742456, - 11.890038847923279, - 11.881554033607244, - 11.971073225140572, - 12.349145952612162 - ] - }, - "steady_event_ms": { - "median": 11.931136131286621, - "p90": 12.135885047912598, - "samples": [ - 12.040191650390625, - 12.109888076782227, - 12.125663757324219, - 12.13152027130127, - 12.052000045776367, - 11.964672088623047, - 11.99068832397461, - 12.01689624786377, - 11.9137601852417, - 11.883744239807129, - 12.288384437561035, - 11.979968070983887, - 11.884032249450684, - 11.855168342590332, - 11.84547233581543, - 11.808704376220703, - 11.955007553100586, - 11.87183952331543, - 11.90931224822998, - 12.076383590698242, - 12.17516803741455, - 11.906304359436035, - 11.933216094970703, - 11.869759559631348, - 11.851136207580566, - 11.843680381774902, - 11.847840309143066, - 11.839167594909668, - 11.929056167602539, - 12.307328224182129 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 60716.16989700124, - 14.733079820871353, - 12.62748334556818, - 12.553762644529343, - 12.356731109321117, - 12.328787706792355, - 12.547621969133615, - 12.847759295254946, - 12.331744190305471 - ], - "event_ms_including_first": [ - 60715.93359375, - 14.700160026550293, - 12.595552444458008, - 12.52182388305664, - 12.32579231262207, - 12.2990083694458, - 12.517056465148926, - 12.816991806030273, - 12.300352096557617 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor/6p/c6ptz5ocvvs5y3qw2wrdkfwqgc4khppg6muvh3ieos2bzq2pv24i.py" - ], - "routes": [ - { - "sha256": "4b43a1b1ab027b3a94c3379d411c299005cbbb14e4174a6c3185a78004ed888d", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 299809792, - "reserved": 354418688 - }, - "elapsed_s": 64.75148701667786 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Mini-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Mini_n96_TORCH_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Mini_TORCH/triton" - } - } - }, - { - "run": "Nano_n4096_BASE_p0", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 4096, - "started": 1792865253.6144357, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 480268, - "first_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "steady_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "full_window_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "steady_wall_ms": { - "median": 33.639237051829696, - "p90": 33.738844841718674, - "min": 33.57167402282357, - "max": 33.76523917540908, - "samples": [ - 33.64197677001357, - 33.747294917702675, - 33.73164590448141, - 33.6329797282815, - 33.63686706870794, - 33.737597055733204, - 33.633781131356955, - 33.61224103718996, - 33.64518331363797, - 33.5743292234838, - 33.6665129289031, - 33.72410172596574, - 33.64210668951273, - 33.738779835402966, - 33.640805166214705, - 33.610316924750805, - 33.634933177381754, - 33.69778208434582, - 33.66278624162078, - 33.58423803001642, - 33.63535413518548, - 33.76523917540908, - 33.57329685240984, - 33.63766893744469, - 33.57167402282357, - 33.60843379050493, - 33.64728670567274, - 33.62593660131097, - 33.606068696826696, - 33.73942989856005 - ] - }, - "steady_event_ms": { - "median": 33.5918083190918, - "p90": 33.69369125366211, - "samples": [ - 33.58198547363281, - 33.69919967651367, - 33.6860466003418, - 33.58758544921875, - 33.591552734375, - 33.69145584106445, - 33.58883285522461, - 33.56623840332031, - 33.59968185424805, - 33.52956771850586, - 33.62054443359375, - 33.678688049316406, - 33.59699249267578, - 33.69363021850586, - 33.59600067138672, - 33.56547164916992, - 33.5893440246582, - 33.648704528808594, - 33.61705780029297, - 33.540382385253906, - 33.590145111083984, - 33.71955108642578, - 33.5283203125, - 33.592063903808594, - 33.527198791503906, - 33.56467056274414, - 33.60259246826172, - 33.580318450927734, - 33.561729431152344, - 33.69424057006836 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 54837.45691506192, - 40.017187129706144, - 34.25865154713392, - 33.998601138591766, - 36.992254201322794, - 34.63848913088441, - 34.06333224847913, - 34.24490615725517, - 33.88819191604853 - ], - "event_ms_including_first": [ - 54837.25, - 39.981056213378906, - 34.22467041015625, - 33.965919494628906, - 36.96022415161133, - 34.60700988769531, - 34.03238296508789, - 34.21305465698242, - 33.856544494628906 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/mc/cmcshhnw6zjmsa6g2uz2fg4ilw66ueexz73ln3hpykrxg3h3ship.py" - ], - "routes": [ - { - "sha256": "bbfadf5ea5775e0a16623cb8c6854fad704fc72a15d24e3c3e999da74eaee59e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "elapsed_s": 60.83520150184631 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_BASE_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" - } - } - }, - { - "run": "Nano_n4096_BASE_p1", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 4096, - "started": 1792865451.4082878, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 480268, - "first_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "steady_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "full_window_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "steady_wall_ms": { - "median": 33.59390632249415, - "p90": 33.72048828750849, - "min": 33.5276210680604, - "max": 33.816666807979345, - "samples": [ - 33.64565409719944, - 33.71925186365843, - 33.62102713435888, - 33.54980330914259, - 33.594297245144844, - 33.73161610215902, - 33.5276210680604, - 33.58499892055988, - 33.580692019313574, - 33.554391004145145, - 33.57728384435177, - 33.57868688181043, - 33.6191738024354, - 33.73637516051531, - 33.612621016800404, - 33.542159013450146, - 33.62960275262594, - 33.593515399843454, - 33.54010405018926, - 33.569800201803446, - 33.59739203006029, - 33.816666807979345, - 33.59139105305076, - 33.594666980206966, - 33.58374582603574, - 33.575842157006264, - 33.6186527274549, - 33.56025228276849, - 33.69623888283968, - 33.67920685559511 - ] - }, - "steady_event_ms": { - "median": 33.54777526855469, - "p90": 33.67527770996094, - "samples": [ - 33.588382720947266, - 33.67388916015625, - 33.5748176574707, - 33.50486373901367, - 33.54576110839844, - 33.687774658203125, - 33.48332977294922, - 33.53891372680664, - 33.53654479980469, - 33.50998306274414, - 33.533504486083984, - 33.53299331665039, - 33.574913024902344, - 33.69126510620117, - 33.56790542602539, - 33.49679946899414, - 33.58377456665039, - 33.54851150512695, - 33.495582580566406, - 33.52534484863281, - 33.552608489990234, - 33.77222442626953, - 33.54703903198242, - 33.549312591552734, - 33.5392951965332, - 33.5318717956543, - 33.57404708862305, - 33.51558303833008, - 33.651424407958984, - 33.634368896484375 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 55484.10599771887, - 39.5029759965837, - 34.16461404412985, - 33.893000800162554, - 33.82117627188563, - 33.80829142406583, - 33.85297488421202, - 33.98126736283302, - 33.72129611670971 - ], - "event_ms_including_first": [ - 55483.89453125, - 39.469505310058594, - 34.13343811035156, - 33.86105728149414, - 33.78953552246094, - 33.777854919433594, - 33.822208404541016, - 33.95030212402344, - 33.69059371948242 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/mc/cmcshhnw6zjmsa6g2uz2fg4ilw66ueexz73ln3hpykrxg3h3ship.py" - ], - "routes": [ - { - "sha256": "bbfadf5ea5775e0a16623cb8c6854fad704fc72a15d24e3c3e999da74eaee59e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "elapsed_s": 61.48959255218506 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_BASE_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" - } - } - }, - { - "run": "Nano_n4096_BASE_p2", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 4096, - "started": 1792865651.4912226, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 480268, - "first_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "steady_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "full_window_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "steady_wall_ms": { - "median": 33.55279820971191, - "p90": 33.67178360931575, - "min": 33.47690496593714, - "max": 33.75234501436353, - "samples": [ - 33.66990899667144, - 33.62894197925925, - 33.551886677742004, - 33.545543905347586, - 33.58188271522522, - 33.723310101777315, - 33.51209172978997, - 33.59128115698695, - 33.60055899247527, - 33.47690496593714, - 33.50875619798899, - 33.513744827359915, - 33.55615399777889, - 33.63155713304877, - 33.58515910804272, - 33.54282910004258, - 33.52992516011, - 33.582454081624746, - 33.51015783846378, - 33.553709741681814, - 33.51638978347182, - 33.75234501436353, - 33.54529524222016, - 33.58372626826167, - 33.509816974401474, - 33.51752087473869, - 33.573638182133436, - 33.54958212003112, - 33.515107817947865, - 33.688655123114586 - ] - }, - "steady_event_ms": { - "median": 33.50811195373535, - "p90": 33.618245697021486, - "samples": [ - 33.61529541015625, - 33.58233642578125, - 33.50681686401367, - 33.50028610229492, - 33.537376403808594, - 33.67824172973633, - 33.46828842163086, - 33.546688079833984, - 33.549407958984375, - 33.43312072753906, - 33.46371078491211, - 33.469886779785156, - 33.51212692260742, - 33.58784103393555, - 33.54064178466797, - 33.496639251708984, - 33.48371124267578, - 33.53782272338867, - 33.466304779052734, - 33.50940704345703, - 33.472991943359375, - 33.7086067199707, - 33.50115203857422, - 33.53984069824219, - 33.46681594848633, - 33.47420883178711, - 33.52979278564453, - 33.50553512573242, - 33.470977783203125, - 33.644798278808594 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 55512.14522216469, - 39.35163002461195, - 33.92147412523627, - 33.78685005009174, - 33.762936014682055, - 33.742906991392374, - 33.84470986202359, - 33.97524589672685, - 33.6701599881053 - ], - "event_ms_including_first": [ - 55511.91796875, - 39.3125114440918, - 33.88896179199219, - 33.754398345947266, - 33.73177719116211, - 33.71196746826172, - 33.81283187866211, - 33.94464111328125, - 33.63897705078125 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/mc/cmcshhnw6zjmsa6g2uz2fg4ilw66ueexz73ln3hpykrxg3h3ship.py" - ], - "routes": [ - { - "sha256": "bbfadf5ea5775e0a16623cb8c6854fad704fc72a15d24e3c3e999da74eaee59e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "elapsed_s": 61.51416873931885 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_BASE_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" - } - } - }, - { - "run": "Nano_n4096_ECS_p0", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 4096, - "started": 1792865319.2081473, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 480268, - "first_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "steady_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "full_window_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "steady_wall_ms": { - "median": 33.56249653734267, - "p90": 33.65920991636813, - "min": 33.48502004519105, - "max": 33.78743166103959, - "samples": [ - 33.78743166103959, - 33.67964783683419, - 33.571163192391396, - 33.50574988871813, - 33.48502004519105, - 33.58804481104016, - 33.638681285083294, - 33.560823649168015, - 33.563819248229265, - 33.50716223940253, - 33.54077599942684, - 33.56117382645607, - 33.55917055159807, - 33.55776704847813, - 33.58149202540517, - 33.65829819813371, - 33.57411874458194, - 33.54843985289335, - 33.522079698741436, - 33.57640327885747, - 33.60564820468426, - 33.52191997691989, - 33.502473030239344, - 33.53985399007797, - 33.667415380477905, - 33.57108309864998, - 33.58917683362961, - 33.51984731853008, - 33.55085523799062, - 33.57009124010801 - ] - }, - "steady_event_ms": { - "median": 33.5189266204834, - "p90": 33.61557388305664, - "samples": [ - 33.72489547729492, - 33.62675094604492, - 33.525856018066406, - 33.46108627319336, - 33.440895080566406, - 33.54499053955078, - 33.59436798095703, - 33.515838623046875, - 33.51996612548828, - 33.46384048461914, - 33.49715042114258, - 33.517887115478516, - 33.511199951171875, - 33.51420974731445, - 33.536705017089844, - 33.61471939086914, - 33.5307502746582, - 33.50502395629883, - 33.47849655151367, - 33.5335693359375, - 33.560768127441406, - 33.477630615234375, - 33.459007263183594, - 33.49574279785156, - 33.62326431274414, - 33.527679443359375, - 33.53731155395508, - 33.47679901123047, - 33.508094787597656, - 33.52707290649414 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 54867.95313982293, - 39.59920722991228, - 34.005504101514816, - 33.84555084630847, - 33.74310815706849, - 33.69056899100542, - 34.8994517698884, - 87.70747622475028, - 33.73203659430146 - ], - "event_ms_including_first": [ - 54867.7421875, - 39.56758499145508, - 33.973472595214844, - 33.812896728515625, - 33.71267318725586, - 33.66115188598633, - 34.86947250366211, - 87.67699432373047, - 33.70051193237305 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/fe/cfebefbouar7sbvih4kqo6idf32bnivzmdmkelj6zxrfnr67kltw.py" - ], - "routes": [ - { - "sha256": "fe71d505febf0c32eb4c837d76ffa98baf33e57d9d0ae4628705a385edebf3ef", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "elapsed_s": 60.93559670448303 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_ECS_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" - } - } - }, - { - "run": "Nano_n4096_ECS_p1", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 4096, - "started": 1792865385.2900107, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 480268, - "first_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "steady_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "full_window_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "steady_wall_ms": { - "median": 33.59777294099331, - "p90": 33.68244916200638, - "min": 33.518703654408455, - "max": 33.72800862416625, - "samples": [ - 33.57038088142872, - 33.6095760576427, - 33.59959693625569, - 33.70034694671631, - 33.597432076931, - 33.581191673874855, - 33.64808764308691, - 33.58934773132205, - 33.61694002524018, - 33.518703654408455, - 33.57557114213705, - 33.581022173166275, - 33.56056287884712, - 33.64083403721452, - 33.59811380505562, - 33.72800862416625, - 33.59952615574002, - 33.58338586986065, - 33.554250840097666, - 33.54181814938784, - 33.6506930179894, - 33.60937489196658, - 33.58849510550499, - 33.580340910702944, - 33.68083015084267, - 33.554641995579004, - 33.69702026247978, - 33.58879592269659, - 33.603363670408726, - 33.59922580420971 - ] - }, - "steady_event_ms": { - "median": 33.550048828125, - "p90": 33.63717880249023, - "samples": [ - 33.51567840576172, - 33.563201904296875, - 33.55433654785156, - 33.65488052368164, - 33.5530891418457, - 33.534912109375, - 33.60348892211914, - 33.543582916259766, - 33.57244873046875, - 33.473087310791016, - 33.53129577636719, - 33.5359992980957, - 33.51536178588867, - 33.5959358215332, - 33.552127838134766, - 33.68345642089844, - 33.55516815185547, - 33.538753509521484, - 33.50966262817383, - 33.49740982055664, - 33.60665512084961, - 33.56390380859375, - 33.543678283691406, - 33.53481674194336, - 33.63568115234375, - 33.50998306274414, - 33.650657653808594, - 33.54355239868164, - 33.558528900146484, - 33.547969818115234 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 55326.546587981284, - 39.755592588335276, - 34.307282883673906, - 33.9517118409276, - 33.86435657739639, - 33.748327288776636, - 33.8508621789515, - 34.1216828674078, - 33.708772622048855 - ], - "event_ms_including_first": [ - 55326.32421875, - 39.721439361572266, - 34.27497482299805, - 33.91881561279297, - 33.83283233642578, - 33.71763229370117, - 33.813568115234375, - 34.09062576293945, - 33.671966552734375 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/fe/cfebefbouar7sbvih4kqo6idf32bnivzmdmkelj6zxrfnr67kltw.py" - ], - "routes": [ - { - "sha256": "fe71d505febf0c32eb4c837d76ffa98baf33e57d9d0ae4628705a385edebf3ef", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "elapsed_s": 61.37485408782959 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_ECS_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" - } - } - }, - { - "run": "Nano_n4096_ECS_p2", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 4096, - "started": 1792865717.8257728, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 480268, - "first_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "steady_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "full_window_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "steady_wall_ms": { - "median": 33.589447382837534, - "p90": 33.697893330827355, - "min": 33.53781998157501, - "max": 33.70968485251069, - "samples": [ - 33.57557114213705, - 33.70696026831865, - 33.63008378073573, - 33.571504056453705, - 33.62324181944132, - 33.62398315221071, - 33.69774203747511, - 33.58308598399162, - 33.63529499620199, - 33.592683263123035, - 33.637598156929016, - 33.59480807557702, - 33.56406977400184, - 33.546196296811104, - 33.58618076890707, - 33.69925497099757, - 33.59286393970251, - 33.556765876710415, - 33.58974773436785, - 33.59315497800708, - 33.594788052141666, - 33.57645310461521, - 33.57342816889286, - 33.583576790988445, - 33.70968485251069, - 33.53781998157501, - 33.58914703130722, - 33.57126330956817, - 33.55047386139631, - 33.55503315106034 - ] - }, - "steady_event_ms": { - "median": 33.54452896118164, - "p90": 33.653022384643556, - "samples": [ - 33.52134323120117, - 33.66096115112305, - 33.584129333496094, - 33.52675247192383, - 33.579071044921875, - 33.579071044921875, - 33.653568267822266, - 33.53830337524414, - 33.590721130371094, - 33.54710388183594, - 33.59267044067383, - 33.550113677978516, - 33.51030349731445, - 33.50166320800781, - 33.54182434082031, - 33.65296173095703, - 33.54703903198242, - 33.51276779174805, - 33.544769287109375, - 33.54924774169922, - 33.5503044128418, - 33.53120040893555, - 33.52899169921875, - 33.538848876953125, - 33.665313720703125, - 33.49302291870117, - 33.544288635253906, - 33.526336669921875, - 33.50620651245117, - 33.5115852355957 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 54869.62467804551, - 39.9483572691679, - 33.97274063900113, - 33.79550715908408, - 34.0077867731452, - 34.15979538112879, - 33.85108197107911, - 34.15454505011439, - 33.82469201460481 - ], - "event_ms_including_first": [ - 54869.3984375, - 39.9128303527832, - 33.94073486328125, - 33.76473617553711, - 33.971839904785156, - 34.12879943847656, - 33.82060623168945, - 34.1247673034668, - 33.793792724609375 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/fe/cfebefbouar7sbvih4kqo6idf32bnivzmdmkelj6zxrfnr67kltw.py" - ], - "routes": [ - { - "sha256": "fe71d505febf0c32eb4c837d76ffa98baf33e57d9d0ae4628705a385edebf3ef", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "elapsed_s": 60.96187090873718 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_ECS_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" - } - } - }, - { - "run": "Nano_n4096_TORCH_p0", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 4096, - "started": 1792865186.314646, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 480268, - "first_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "steady_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "full_window_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "steady_wall_ms": { - "median": 56.467912858352065, - "p90": 56.539253843948245, - "min": 56.41053384169936, - "max": 56.676206178963184, - "samples": [ - 56.423477828502655, - 56.473503820598125, - 56.48699775338173, - 56.49141687899828, - 56.44672177731991, - 56.51460122317076, - 56.443074718117714, - 56.43230536952615, - 56.41053384169936, - 56.41792807728052, - 56.477701757103205, - 56.45526805892587, - 56.48570600897074, - 56.441121734678745, - 56.59043416380882, - 56.42866902053356, - 56.420162320137024, - 56.43951892852783, - 56.462321896106005, - 56.44660210236907, - 56.49378104135394, - 56.4531646668911, - 56.5199414268136, - 56.676206178963184, - 56.61236634477973, - 56.51857890188694, - 56.533567141741514, - 56.48784013465047, - 56.41874996945262, - 56.52504973113537 - ] - }, - "steady_event_ms": { - "median": 56.422000885009766, - "p90": 56.49388313293457, - "samples": [ - 56.368736267089844, - 56.42630386352539, - 56.440032958984375, - 56.441951751708984, - 56.401214599609375, - 56.469791412353516, - 56.398048400878906, - 56.3864631652832, - 56.364864349365234, - 56.37295913696289, - 56.428672790527344, - 56.410240173339844, - 56.44131088256836, - 56.39628982543945, - 56.545982360839844, - 56.38371276855469, - 56.374977111816406, - 56.395294189453125, - 56.41769790649414, - 56.40198516845703, - 56.448543548583984, - 56.40755081176758, - 56.47248077392578, - 56.631614685058594, - 56.56755065917969, - 56.47401428222656, - 56.488094329833984, - 56.442623138427734, - 56.37420654296875, - 56.48064041137695 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 55517.836848739535, - 62.92313290759921, - 56.751868687570095, - 56.71780463308096, - 56.526102125644684, - 56.58322013914585, - 56.62134196609259, - 56.75896164029837, - 56.473884265869856 - ], - "event_ms_including_first": [ - 55517.6484375, - 62.890785217285156, - 56.71971130371094, - 56.684478759765625, - 56.49484634399414, - 56.55292892456055, - 56.5909423828125, - 56.728065490722656, - 56.44348907470703 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/zi/cziiiddfhdwtparpkcfw37er53vawenwzpsdvpxvs5odi67ztozy.py" - ], - "routes": [ - { - "sha256": "671320d7fc3f17ba6859418708b63017691791082ef155bff72d047363fd3d2b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "elapsed_s": 62.98772692680359 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_TORCH_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" - } - } - }, - { - "run": "Nano_n4096_TORCH_p1", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 4096, - "started": 1792865517.6458747, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 480268, - "first_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "steady_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "full_window_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "steady_wall_ms": { - "median": 56.43263435922563, - "p90": 56.59253243356943, - "min": 56.38753483071923, - "max": 56.72779772430658, - "samples": [ - 56.46520061418414, - 56.577994022518396, - 56.42602685838938, - 56.42098793759942, - 56.43423227593303, - 56.59371428191662, - 56.41968501731753, - 56.43337080255151, - 56.431897915899754, - 56.41495622694492, - 56.398444809019566, - 56.72779772430658, - 56.40287371352315, - 56.458909064531326, - 56.59240111708641, - 56.42917286604643, - 56.55619315803051, - 56.49274401366711, - 56.447537150233984, - 56.53482209891081, - 56.47737393155694, - 56.41772085800767, - 56.4112002030015, - 56.605064775794744, - 56.38753483071923, - 56.39732303097844, - 56.41082813963294, - 56.40697106719017, - 56.42417399212718, - 56.4510440453887 - ] - }, - "steady_event_ms": { - "median": 56.387535095214844, - "p90": 56.539633178710936, - "samples": [ - 56.39487838745117, - 56.52921676635742, - 56.37919998168945, - 56.374656677246094, - 56.38924789428711, - 56.54899215698242, - 56.3666877746582, - 56.387550354003906, - 56.38751983642578, - 56.369537353515625, - 56.35308837890625, - 56.6822395324707, - 56.357601165771484, - 56.413856506347656, - 56.53859329223633, - 56.38227081298828, - 56.51152038574219, - 56.447391510009766, - 56.39235305786133, - 56.48915100097656, - 56.43289566040039, - 56.37343978881836, - 56.365440368652344, - 56.56089782714844, - 56.343326568603516, - 56.351200103759766, - 56.36671829223633, - 56.3625602722168, - 56.3804817199707, - 56.407264709472656 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 55881.2905466184, - 62.508014030754566, - 56.87322234734893, - 56.75185285508633, - 56.555502116680145, - 56.554548908025026, - 56.6428666934371, - 56.701366789638996, - 56.524012703448534 - ], - "event_ms_including_first": [ - 55881.0703125, - 62.46080017089844, - 56.84076690673828, - 56.719966888427734, - 56.52588653564453, - 56.52159881591797, - 56.61305618286133, - 56.6712646484375, - 56.49363327026367 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/zi/cziiiddfhdwtparpkcfw37er53vawenwzpsdvpxvs5odi67ztozy.py" - ], - "routes": [ - { - "sha256": "671320d7fc3f17ba6859418708b63017691791082ef155bff72d047363fd3d2b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "elapsed_s": 63.37538719177246 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_TORCH_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" - } - } - }, - { - "run": "Nano_n4096_TORCH_p2", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 4096, - "started": 1792865585.1975026, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 480268, - "first_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "steady_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "full_window_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "steady_wall_ms": { - "median": 56.51950347237289, - "p90": 56.61683832295239, - "min": 56.463117245584726, - "max": 56.66384706273675, - "samples": [ - 56.468007154762745, - 56.64713401347399, - 56.57438701018691, - 56.56798463314772, - 56.5273379907012, - 56.66384706273675, - 56.52137706056237, - 56.53286911547184, - 56.53837928548455, - 56.489257141947746, - 56.590067222714424, - 56.48427689447999, - 56.493985932320356, - 56.50494573637843, - 56.618650909513235, - 56.504515931010246, - 56.55480129644275, - 56.51798099279404, - 56.50304304435849, - 56.50238133966923, - 56.476382073014975, - 56.49193236604333, - 56.482844054698944, - 56.61663692444563, - 56.463117245584726, - 56.53766822069883, - 56.537797674536705, - 56.51942314580083, - 56.47734412923455, - 56.51958379894495 - ] - }, - "steady_event_ms": { - "median": 56.47407913208008, - "p90": 56.570186614990234, - "samples": [ - 56.41177749633789, - 56.60051345825195, - 56.52742385864258, - 56.52009582519531, - 56.481536865234375, - 56.61811065673828, - 56.475521087646484, - 56.48611068725586, - 56.49241638183594, - 56.442142486572266, - 56.542945861816406, - 56.43910217285156, - 56.448673248291016, - 56.45814514160156, - 56.5728645324707, - 56.4574089050293, - 56.50950241088867, - 56.47078323364258, - 56.45772933959961, - 56.45692825317383, - 56.430816650390625, - 56.445472717285156, - 56.42975997924805, - 56.569889068603516, - 56.41654586791992, - 56.49184036254883, - 56.492095947265625, - 56.473663330078125, - 56.43190383911133, - 56.47449493408203 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 54410.43918207288, - 63.58301406726241, - 57.15729808434844, - 56.66540935635567, - 56.650811806321144, - 56.604133918881416, - 56.70361081138253, - 56.758936028927565, - 56.49197194725275 - ], - "event_ms_including_first": [ - 54410.22265625, - 63.54556655883789, - 57.12470245361328, - 56.6328010559082, - 56.61894226074219, - 56.57334518432617, - 56.67251205444336, - 56.727935791015625, - 56.460670471191406 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/zi/cziiiddfhdwtparpkcfw37er53vawenwzpsdvpxvs5odi67ztozy.py" - ], - "routes": [ - { - "sha256": "671320d7fc3f17ba6859418708b63017691791082ef155bff72d047363fd3d2b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "elapsed_s": 61.86613392829895 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n4096_TORCH_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" - } - } - }, - { - "run": "Nano_n512_BASE_p0", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 512, - "started": 1792864672.8544633, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 480268, - "first_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "steady_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "full_window_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "steady_wall_ms": { - "median": 11.1921401694417, - "p90": 11.412075813859701, - "min": 11.113476008176804, - "max": 11.538049206137657, - "samples": [ - 11.538049206137657, - 11.434934101998806, - 11.378356255590916, - 11.379428673535585, - 11.47891627624631, - 11.409536004066467, - 11.402552016079426, - 11.373907793313265, - 11.340655852109194, - 11.370802763849497, - 11.196413077414036, - 11.139716021716595, - 11.113476939499378, - 11.113476008176804, - 11.121410876512527, - 11.193518061190844, - 11.265052948147058, - 11.152369901537895, - 11.215869802981615, - 11.200100183486938, - 11.155526153743267, - 11.166867334395647, - 11.145616881549358, - 11.190762277692556, - 11.184060014784336, - 11.144725140184164, - 11.119537986814976, - 11.188548058271408, - 11.12406700849533, - 11.181846261024475 - ] - }, - "steady_event_ms": { - "median": 11.147887706756592, - "p90": 11.36800012588501, - "samples": [ - 11.480704307556152, - 11.389887809753418, - 11.334431648254395, - 11.336031913757324, - 11.435487747192383, - 11.365568161010742, - 11.360032081604004, - 11.3306884765625, - 11.29526424407959, - 11.327775955200195, - 11.153056144714355, - 11.095328330993652, - 11.070560455322266, - 11.070464134216309, - 11.078720092773438, - 11.150015830993652, - 11.221887588500977, - 11.108768463134766, - 11.171551704406738, - 11.15664005279541, - 11.112095832824707, - 11.12342357635498, - 11.102144241333008, - 11.145631790161133, - 11.140735626220703, - 11.101792335510254, - 11.075648307800293, - 11.145759582519531, - 11.080863952636719, - 11.138751983642578 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 54849.28183630109, - 14.635247178375721, - 12.101061176508665, - 11.98397995904088, - 11.616817209869623, - 11.628498788923025, - 11.476773303002119, - 11.782790068536997, - 11.699703987687826 - ], - "event_ms_including_first": [ - 54849.0625, - 14.581184387207031, - 12.06873607635498, - 11.951199531555176, - 11.585760116577148, - 11.597375869750977, - 11.446304321289062, - 11.751872062683105, - 11.666303634643555 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/ga/cga7e3zlaa3pm56ptkcksm427sdaxfris3hj2znxqfhmc7zhxepr.py" - ], - "routes": [ - { - "sha256": "c11e155658bce0552509e209cbbe6d3cdd3ff19e64909cbc53b5d18edd099a89", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "elapsed_s": 59.15643262863159 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_BASE_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" - } - } - }, - { - "run": "Nano_n512_BASE_p1", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 512, - "started": 1792864865.7160206, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 480268, - "first_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "steady_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "full_window_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "steady_wall_ms": { - "median": 10.9702805057168, - "p90": 11.062636831775308, - "min": 10.903008747845888, - "max": 11.15195918828249, - "samples": [ - 11.007116176187992, - 11.062209028750658, - 10.97187865525484, - 10.96072793006897, - 11.035609059035778, - 10.989343281835318, - 10.934037156403065, - 10.973893105983734, - 11.011854745447636, - 10.943996720016003, - 10.968923103064299, - 10.94022998586297, - 10.904612019658089, - 10.962200816720724, - 10.9318639151752, - 10.96603786572814, - 11.069482658058405, - 10.947202797979116, - 10.991314891725779, - 11.025229934602976, - 10.931592900305986, - 10.914790909737349, - 10.971637908369303, - 10.903008747845888, - 10.95147104933858, - 10.983190964907408, - 10.952393058687449, - 10.99151698872447, - 11.066487058997154, - 11.15195918828249 - ] - }, - "steady_event_ms": { - "median": 10.927616119384766, - "p90": 11.018886375427247, - "samples": [ - 10.94438362121582, - 11.018239974975586, - 10.928607940673828, - 10.918399810791016, - 10.992447853088379, - 10.947648048400879, - 10.891648292541504, - 10.93171215057373, - 10.970399856567383, - 10.901344299316406, - 10.926624298095703, - 10.896927833557129, - 10.86246395111084, - 10.920607566833496, - 10.890399932861328, - 10.923263549804688, - 11.027071952819824, - 10.897151947021484, - 10.948287963867188, - 10.983231544494629, - 10.888480186462402, - 10.873023986816406, - 10.929375648498535, - 10.860480308532715, - 10.90937614440918, - 10.940704345703125, - 10.909472465515137, - 10.949407577514648, - 11.024703979492188, - 11.103520393371582 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 54901.77723625675, - 16.8565409258008, - 12.315535917878151, - 11.930570006370544, - 11.56400702893734, - 11.444050818681717, - 11.399406008422375, - 11.76080759614706, - 11.864924803376198 - ], - "event_ms_including_first": [ - 54901.57421875, - 16.82134437561035, - 12.282591819763184, - 11.898591995239258, - 11.533439636230469, - 11.414336204528809, - 11.36963176727295, - 11.729472160339355, - 11.833536148071289 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/ga/cga7e3zlaa3pm56ptkcksm427sdaxfris3hj2znxqfhmc7zhxepr.py" - ], - "routes": [ - { - "sha256": "c11e155658bce0552509e209cbbe6d3cdd3ff19e64909cbc53b5d18edd099a89", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "elapsed_s": 59.13134813308716 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_BASE_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" - } - } - }, - { - "run": "Nano_n512_BASE_p2", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 512, - "started": 1792865057.389775, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 480268, - "first_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "steady_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "full_window_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "steady_wall_ms": { - "median": 11.256080819293857, - "p90": 11.325887963175774, - "min": 11.17898989468813, - "max": 11.378065682947636, - "samples": [ - 11.325245723128319, - 11.302753817290068, - 11.297313030809164, - 11.304727755486965, - 11.378065682947636, - 11.331668123602867, - 11.235986836254597, - 11.247259099036455, - 11.186434887349606, - 11.277145240455866, - 11.225016787648201, - 11.17898989468813, - 11.24687772244215, - 11.240446008741856, - 11.244514025747776, - 11.229325085878372, - 11.342990212142467, - 11.254452634602785, - 11.27601321786642, - 11.272456031292677, - 11.288526933640242, - 11.29560125991702, - 11.218674946576357, - 11.252749245613813, - 11.24634686857462, - 11.273258365690708, - 11.24621694907546, - 11.295530945062637, - 11.257709003984928, - 11.22845383360982 - ] - }, - "steady_event_ms": { - "median": 11.20897626876831, - "p90": 11.27391996383667, - "samples": [ - 11.272480010986328, - 11.257087707519531, - 11.252479553222656, - 11.261343955993652, - 11.333632469177246, - 11.286879539489746, - 11.191776275634766, - 11.202752113342285, - 11.142911911010742, - 11.233695983886719, - 11.180607795715332, - 11.134655952453613, - 11.20297622680664, - 11.196672439575195, - 11.199487686157227, - 11.1845121383667, - 11.291135787963867, - 11.210176467895508, - 11.232159614562988, - 11.228192329406738, - 11.243424415588379, - 11.25164794921875, - 11.174400329589844, - 11.199808120727539, - 11.201472282409668, - 11.228992462158203, - 11.20195198059082, - 11.251328468322754, - 11.207776069641113, - 11.183679580688477 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 54922.19497309998, - 14.407956972718239, - 11.997226160019636, - 11.739509180188179, - 11.592520866543055, - 11.560249608010054, - 11.612508911639452, - 11.769124772399664, - 18.945065792649984 - ], - "event_ms_including_first": [ - 54921.9921875, - 14.375136375427246, - 11.964608192443848, - 11.70412826538086, - 11.561440467834473, - 11.529536247253418, - 11.581727981567383, - 11.737631797790527, - 18.912416458129883 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/ga/cga7e3zlaa3pm56ptkcksm427sdaxfris3hj2znxqfhmc7zhxepr.py" - ], - "routes": [ - { - "sha256": "c11e155658bce0552509e209cbbe6d3cdd3ff19e64909cbc53b5d18edd099a89", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "elapsed_s": 59.08953332901001 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_BASE_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" - } - } - }, - { - "run": "Nano_n512_ECS_p0", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 512, - "started": 1792864736.9773095, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 480268, - "first_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "steady_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "full_window_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "steady_wall_ms": { - "median": 11.038615368306637, - "p90": 11.383346561342478, - "min": 10.979062877595425, - "max": 11.57768303528428, - "samples": [ - 11.294178199023008, - 11.57768303528428, - 11.154414154589176, - 11.02809514850378, - 11.040568817406893, - 11.021634098142385, - 11.017024051398039, - 10.991415940225124, - 11.092246044427156, - 11.064654216170311, - 11.481050867587328, - 11.113566812127829, - 11.045609135180712, - 11.038264725357294, - 11.034877970814705, - 11.025148909538984, - 11.078401003032923, - 11.089229956269264, - 11.021382175385952, - 11.382604017853737, - 11.002096347510815, - 10.98922174423933, - 10.979062877595425, - 10.995973832905293, - 11.030579917132854, - 11.03896601125598, - 11.034728027880192, - 11.00781699642539, - 11.390029452741146, - 11.199349071830511 - ] - }, - "steady_event_ms": { - "median": 10.99508810043335, - "p90": 11.340579509735107, - "samples": [ - 11.243647575378418, - 11.529376029968262, - 11.111552238464355, - 10.983488082885742, - 10.997056007385254, - 10.977824211120605, - 10.974111557006836, - 10.946784019470215, - 11.048192024230957, - 11.02086353302002, - 11.437664031982422, - 11.0698881149292, - 11.001855850219727, - 10.994784355163574, - 10.991040229797363, - 10.981247901916504, - 11.035391807556152, - 11.044960021972656, - 10.978431701660156, - 11.339872360229492, - 10.958944320678711, - 10.94649600982666, - 10.935615539550781, - 10.951807975769043, - 10.983648300170898, - 10.995391845703125, - 10.99068832397461, - 10.964127540588379, - 11.346943855285645, - 11.155839920043945 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 54961.92668098956, - 14.267463237047195, - 11.900443118065596, - 11.985043063759804, - 11.371012777090073, - 11.384227778762579, - 15.718451701104641, - 14.074356760829687, - 11.49061881005764 - ], - "event_ms_including_first": [ - 54961.72265625, - 14.23311996459961, - 11.868032455444336, - 11.952128410339355, - 11.340127944946289, - 11.35324764251709, - 15.687840461730957, - 14.042816162109375, - 11.458175659179688 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/wo/cwo62idblozatqg4kgjkv3wraljg6txodj5xveaw3wqub4po2kh4.py" - ], - "routes": [ - { - "sha256": "6542c402bf0c74df1f71266111b5ad040463d8e513f6e2fabb83dbe368c8571c", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "elapsed_s": 59.15576720237732 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_ECS_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" - } - } - }, - { - "run": "Nano_n512_ECS_p1", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 512, - "started": 1792864800.741138, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 480268, - "first_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "steady_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "full_window_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "steady_wall_ms": { - "median": 11.160740396007895, - "p90": 11.249917186796665, - "min": 11.093799024820328, - "max": 11.342649348080158, - "samples": [ - 11.229204945266247, - 11.342649348080158, - 11.271545197814703, - 11.16531528532505, - 11.142981704324484, - 11.26545388251543, - 11.162599083036184, - 11.159322690218687, - 11.248190887272358, - 11.209717951714993, - 11.199908796697855, - 11.162799783051014, - 11.178719811141491, - 11.152721010148525, - 11.104779783636332, - 11.15027628839016, - 11.199548840522766, - 11.110069695860147, - 11.153320781886578, - 11.135257314890623, - 11.143504176288843, - 11.093799024820328, - 11.162158101797104, - 11.09814690425992, - 11.197084095329046, - 11.171675752848387, - 11.138834059238434, - 11.14035677164793, - 11.142049916088581, - 11.120489798486233 - ] - }, - "steady_event_ms": { - "median": 11.11729621887207, - "p90": 11.206403064727784, - "samples": [ - 11.177248001098633, - 11.297504425048828, - 11.223999977111816, - 11.120896339416504, - 11.099103927612305, - 11.221983909606934, - 11.119135856628418, - 11.11622428894043, - 11.204671859741211, - 11.16540813446045, - 11.155776023864746, - 11.119775772094727, - 11.13542366027832, - 11.107359886169434, - 11.061344146728516, - 11.106368064880371, - 11.15664005279541, - 11.06704044342041, - 11.109951972961426, - 11.090239524841309, - 11.100159645080566, - 11.05078411102295, - 11.118368148803711, - 11.053824424743652, - 11.15385627746582, - 11.128288269042969, - 11.095871925354004, - 11.097023963928223, - 11.098560333251953, - 11.07759952545166 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 55750.25101471692, - 14.614017214626074, - 12.277984991669655, - 12.025348842144012, - 11.723307892680168, - 11.674505658447742, - 11.673654895275831, - 11.958582792431116, - 11.443289928138256 - ], - "event_ms_including_first": [ - 55750.046875, - 14.579008102416992, - 12.245408058166504, - 11.993120193481445, - 11.693023681640625, - 11.643327713012695, - 11.64352035522461, - 11.92841625213623, - 11.404928207397461 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/wo/cwo62idblozatqg4kgjkv3wraljg6txodj5xveaw3wqub4po2kh4.py" - ], - "routes": [ - { - "sha256": "6542c402bf0c74df1f71266111b5ad040463d8e513f6e2fabb83dbe368c8571c", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "elapsed_s": 59.91718244552612 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_ECS_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" - } - } - }, - { - "run": "Nano_n512_ECS_p2", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 512, - "started": 1792865121.4820917, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 480268, - "first_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "steady_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "full_window_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "steady_wall_ms": { - "median": 11.161016300320625, - "p90": 11.202026391401887, - "min": 11.112434789538383, - "max": 11.254040990024805, - "samples": [ - 11.194468941539526, - 11.254040990024805, - 11.14242197945714, - 11.15045603364706, - 11.163199786096811, - 11.168228927999735, - 11.162989772856236, - 11.157198809087276, - 11.217824183404446, - 11.174000799655914, - 11.153440922498703, - 11.139145120978355, - 11.159042827785015, - 11.20027108117938, - 11.13891415297985, - 11.130067985504866, - 11.185080744326115, - 11.198617052286863, - 11.15304185077548, - 11.170213110744953, - 11.112434789538383, - 11.132633313536644, - 11.113926768302917, - 11.116612236946821, - 11.237810831516981, - 11.178349144756794, - 11.144273914396763, - 11.12359482795, - 11.171515099704266, - 11.184731032699347 - ] - }, - "steady_event_ms": { - "median": 11.116624355316162, - "p90": 11.158575630187988, - "samples": [ - 11.1429443359375, - 11.21014404296875, - 11.099072456359863, - 11.107199668884277, - 11.119584083557129, - 11.1244478225708, - 11.117952346801758, - 11.112832069396973, - 11.17369556427002, - 11.130240440368652, - 11.110176086425781, - 11.095392227172852, - 11.115296363830566, - 11.156895637512207, - 11.095104217529297, - 11.086112022399902, - 11.141216278076172, - 11.154496192932129, - 11.108448028564453, - 11.126720428466797, - 11.069375991821289, - 11.089471817016602, - 11.069567680358887, - 11.07254409790039, - 11.193535804748535, - 11.13212776184082, - 11.101183891296387, - 11.08073616027832, - 11.128255844116211, - 11.141471862792969 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 55531.21514292434, - 14.188512694090605, - 11.772110126912594, - 11.793059762567282, - 11.623440310359001, - 11.523670982569456, - 11.560289654880762, - 11.819619685411453, - 11.362637393176556 - ], - "event_ms_including_first": [ - 55531.015625, - 14.155839920043945, - 11.740575790405273, - 11.75932788848877, - 11.592255592346191, - 11.492959976196289, - 11.529631614685059, - 11.788352012634277, - 11.331487655639648 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/wo/cwo62idblozatqg4kgjkv3wraljg6txodj5xveaw3wqub4po2kh4.py" - ], - "routes": [ - { - "sha256": "6542c402bf0c74df1f71266111b5ad040463d8e513f6e2fabb83dbe368c8571c", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "elapsed_s": 59.76078939437866 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_ECS_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" - } - } - }, - { - "run": "Nano_n512_TORCH_p0", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 512, - "started": 1792864609.6866386, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 480268, - "first_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "steady_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "full_window_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "steady_wall_ms": { - "median": 11.875134659931064, - "p90": 11.910365149378777, - "min": 11.80792786180973, - "max": 12.286973185837269, - "samples": [ - 11.919487733393908, - 11.914188973605633, - 11.870906222611666, - 11.89138600602746, - 11.840478982776403, - 11.903608217835426, - 11.856870260089636, - 11.867691297084093, - 11.831692885607481, - 11.88244903460145, - 11.894190683960915, - 11.80792786180973, - 11.871587950736284, - 11.893909890204668, - 11.846971232444048, - 11.85173075646162, - 11.886064894497395, - 11.875355150550604, - 11.881676968187094, - 11.874914169311523, - 11.84031879529357, - 11.909940280020237, - 11.8478131480515, - 11.852841824293137, - 11.851389892399311, - 11.876517906785011, - 12.286973185837269, - 11.87782920897007, - 11.849295813590288, - 11.876638047397137 - ] - }, - "steady_event_ms": { - "median": 11.830927848815918, - "p90": 11.866732692718506, - "samples": [ - 11.867712020874023, - 11.868351936340332, - 11.825311660766602, - 11.839615821838379, - 11.79638385772705, - 11.860128402709961, - 11.813088417053223, - 11.823103904724121, - 11.788384437561035, - 11.839391708374023, - 11.850784301757812, - 11.764063835144043, - 11.827648162841797, - 11.850239753723145, - 11.80288028717041, - 11.807007789611816, - 11.842528343200684, - 11.831583976745605, - 11.838432312011719, - 11.83027172088623, - 11.797120094299316, - 11.866623878479004, - 11.80361557006836, - 11.809408187866211, - 11.806528091430664, - 11.832863807678223, - 12.24294376373291, - 11.833215713500977, - 11.80617618560791, - 11.833120346069336 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 54857.05778002739, - 14.987031929194927, - 12.248619925230742, - 12.248890940099955, - 12.171324342489243, - 12.148921843618155, - 12.096482794731855, - 12.345283292233944, - 11.95844216272235 - ], - "event_ms_including_first": [ - 54856.86328125, - 14.953856468200684, - 12.216544151306152, - 12.215680122375488, - 12.140447616577148, - 12.116928100585938, - 12.065024375915527, - 12.314111709594727, - 11.926591873168945 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/3j/c3jhrl6ze54ozmozxtxuizkafijbohbw53j53hn2okkeqhybm3ep.py" - ], - "routes": [ - { - "sha256": "752d0803e3c03a8e34aa80861e1dea19b373e140d04e0e08bdbf5ab50de13d29", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "elapsed_s": 58.72197246551514 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_TORCH_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" - } - } - }, - { - "run": "Nano_n512_TORCH_p1", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 512, - "started": 1792864929.705408, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 480268, - "first_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "steady_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "full_window_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "steady_wall_ms": { - "median": 11.83854485861957, - "p90": 11.887328512966633, - "min": 11.79527398198843, - "max": 12.16445118188858, - "samples": [ - 11.858372949063778, - 11.886557098478079, - 11.836391873657703, - 11.834598146378994, - 11.827996000647545, - 11.800132691860199, - 11.910691857337952, - 11.852622032165527, - 11.837894096970558, - 11.866007931530476, - 11.878842022269964, - 11.842864099889994, - 11.829449329525232, - 11.894271243363619, - 11.881446931511164, - 11.836240999400616, - 11.870265938341618, - 11.828606016933918, - 11.823497246950865, - 11.801175307482481, - 11.812346056103706, - 11.828886810690165, - 11.822495143860579, - 11.79527398198843, - 11.846600100398064, - 11.839195620268583, - 12.16445118188858, - 11.886256281286478, - 11.80465193465352, - 11.863572988659143 - ] - }, - "steady_event_ms": { - "median": 11.796272277832031, - "p90": 11.844886589050294, - "samples": [ - 11.806879997253418, - 11.84284782409668, - 11.793408393859863, - 11.790911674499512, - 11.785056114196777, - 11.75772762298584, - 11.860799789428711, - 11.809503555297852, - 11.7958402633667, - 11.82419204711914, - 11.836447715759277, - 11.800191879272461, - 11.785599708557129, - 11.85200023651123, - 11.838784217834473, - 11.793343544006348, - 11.827424049377441, - 11.785951614379883, - 11.78115177154541, - 11.757887840270996, - 11.76972770690918, - 11.779616355895996, - 11.779328346252441, - 11.752063751220703, - 11.804351806640625, - 11.796704292297363, - 12.122048377990723, - 11.844096183776855, - 11.762240409851074, - 11.82147216796875 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 55448.59727937728, - 14.827489852905273, - 12.568785343319178, - 13.543976936489344, - 12.209525797516108, - 12.15369114652276, - 12.253078166395426, - 12.264440301805735, - 11.925709899514914 - ], - "event_ms_including_first": [ - 55448.3984375, - 14.794464111328125, - 12.536288261413574, - 13.511199951171875, - 12.176480293273926, - 12.121024131774902, - 12.221792221069336, - 12.233792304992676, - 11.89465618133545 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/3j/c3jhrl6ze54ozmozxtxuizkafijbohbw53j53hn2okkeqhybm3ep.py" - ], - "routes": [ - { - "sha256": "752d0803e3c03a8e34aa80861e1dea19b373e140d04e0e08bdbf5ab50de13d29", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "elapsed_s": 59.429744243621826 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_TORCH_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" - } - } - }, - { - "run": "Nano_n512_TORCH_p2", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 512, - "started": 1792864993.2747834, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 480268, - "first_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "steady_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "full_window_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "steady_wall_ms": { - "median": 11.856694938614964, - "p90": 11.921798810362816, - "min": 11.811704840511084, - "max": 12.216500006616116, - "samples": [ - 11.868722271174192, - 11.921513359993696, - 11.891975998878479, - 11.852873023599386, - 11.918495874851942, - 11.891596019268036, - 11.871757917106152, - 11.858283076435328, - 11.864484753459692, - 11.902096215635538, - 11.924367863684893, - 11.811704840511084, - 11.847130954265594, - 11.837333906441927, - 11.821142863482237, - 11.883630882948637, - 11.930469889193773, - 11.835900135338306, - 11.855106800794601, - 11.8336770683527, - 11.82427816092968, - 11.852141004055738, - 11.836942750960588, - 11.836160905659199, - 11.844466906040907, - 11.835921090096235, - 12.216500006616116, - 11.915421113371849, - 11.881185695528984, - 11.829629074782133 - ] - }, - "steady_event_ms": { - "median": 11.813136100769043, - "p90": 11.877385520935059, - "samples": [ - 11.817536354064941, - 11.876895904541016, - 11.849247932434082, - 11.809503555297852, - 11.875743865966797, - 11.848608016967773, - 11.826432228088379, - 11.81430435180664, - 11.820927619934082, - 11.858304023742676, - 11.881792068481445, - 11.76899242401123, - 11.804191589355469, - 11.791328430175781, - 11.778176307678223, - 11.840191841125488, - 11.887743949890137, - 11.793055534362793, - 11.811967849731445, - 11.790207862854004, - 11.78172779083252, - 11.809823989868164, - 11.793184280395508, - 11.793120384216309, - 11.801568031311035, - 11.792511940002441, - 12.174240112304688, - 11.872447967529297, - 11.838656425476074, - 11.787263870239258 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 56109.36489701271, - 15.04540117457509, - 12.538247276097536, - 12.602739036083221, - 12.204947881400585, - 12.105939909815788, - 12.170661706477404, - 12.339662294834852, - 12.12005689740181 - ], - "event_ms_including_first": [ - 56109.16796875, - 15.01046371459961, - 12.505727767944336, - 12.569503784179688, - 12.173376083374023, - 12.075008392333984, - 12.14025592803955, - 12.309087753295898, - 12.08902359008789 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/3j/c3jhrl6ze54ozmozxtxuizkafijbohbw53j53hn2okkeqhybm3ep.py" - ], - "routes": [ - { - "sha256": "752d0803e3c03a8e34aa80861e1dea19b373e140d04e0e08bdbf5ab50de13d29", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "elapsed_s": 60.069340229034424 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n512_TORCH_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" - } - } - }, - { - "run": "Nano_n96_BASE_p0", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 96, - "started": 1792864021.0256033, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 480268, - "first_peak": { - "allocated": 204831232, - "reserved": 232783872 - }, - "steady_peak": { - "allocated": 104167936, - "reserved": 232783872 - }, - "full_window_peak": { - "allocated": 204831232, - "reserved": 232783872 - }, - "steady_wall_ms": { - "median": 10.733155999332666, - "p90": 10.87905541062355, - "min": 10.657132137566805, - "max": 11.141397058963776, - "samples": [ - 10.728776920586824, - 10.748565196990967, - 10.817025322467089, - 10.73679281398654, - 10.76126890257001, - 10.721183381974697, - 10.676818899810314, - 10.729498695582151, - 10.80954959616065, - 10.934435762465, - 10.832382831722498, - 10.718457866460085, - 10.715814307332039, - 10.721213184297085, - 10.735160205513239, - 10.657132137566805, - 10.759546421468258, - 10.727264918386936, - 10.760147124528885, - 11.141397058963776, - 10.891173966228962, - 10.699501726776361, - 10.720672085881233, - 10.800282936543226, - 10.721663944423199, - 10.711315087974072, - 10.713379364460707, - 10.731151793152094, - 10.877708904445171, - 10.735671035945415 - ] - }, - "steady_event_ms": { - "median": 10.691344261169434, - "p90": 10.837651538848878, - "samples": [ - 10.679424285888672, - 10.70524787902832, - 10.77462387084961, - 10.693951606750488, - 10.712800025939941, - 10.678208351135254, - 10.635231971740723, - 10.686944007873535, - 10.758975982666016, - 10.892383575439453, - 10.788928031921387, - 10.675840377807617, - 10.6746244430542, - 10.678943634033203, - 10.693375587463379, - 10.6146879196167, - 10.717120170593262, - 10.67795181274414, - 10.717599868774414, - 11.100000381469727, - 10.849344253540039, - 10.657471656799316, - 10.679360389709473, - 10.758720397949219, - 10.68012809753418, - 10.66966438293457, - 10.671551704406738, - 10.689760208129883, - 10.836352348327637, - 10.692928314208984 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 92821.31170481443, - 14.613362029194832, - 11.181642767041922, - 11.214093770831823, - 11.122060939669609, - 11.039023753255606, - 10.99772471934557, - 11.638885829597712, - 10.881715919822454 - ], - "event_ms_including_first": [ - 92820.96875, - 14.582847595214844, - 11.152480125427246, - 11.183967590332031, - 11.091327667236328, - 11.008288383483887, - 10.96735954284668, - 11.608192443847656, - 10.85155200958252 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/xt/cxtaymbrblp46rlykltzbo7iz5yni5morlx573efzpa5ecchrvrl.py" - ], - "routes": [ - { - "sha256": "cba1a62b4389df004c8aa90085d868da326250d562233dca490331b71c3efd88", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 204831232, - "reserved": 232783872 - }, - "elapsed_s": 97.04701805114746 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_BASE_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" - } - } - }, - { - "run": "Nano_n96_BASE_p1", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 96, - "started": 1792864289.6198416, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 480268, - "first_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "steady_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "full_window_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "steady_wall_ms": { - "median": 10.827781865373254, - "p90": 10.899460967630148, - "min": 10.741183999925852, - "max": 10.92290598899126, - "samples": [ - 10.86328411474824, - 10.918017011135817, - 10.84054121747613, - 10.83585200831294, - 10.899301618337631, - 10.819741990417242, - 10.75743418186903, - 10.783974081277847, - 10.834109038114548, - 10.827656835317612, - 10.832175612449646, - 10.786429047584534, - 10.881909169256687, - 10.827906895428896, - 10.77065896242857, - 10.830332059413195, - 10.853315237909555, - 10.797119233757257, - 10.92290598899126, - 10.85173198953271, - 10.900895111262798, - 10.813229717314243, - 10.813119355589151, - 10.789284016937017, - 10.878792963922024, - 10.805523954331875, - 10.803361423313618, - 10.741183999925852, - 10.74131391942501, - 10.7572041451931 - ] - }, - "steady_event_ms": { - "median": 10.785791873931885, - "p90": 10.857631587982178, - "samples": [ - 10.811776161193848, - 10.87440013885498, - 10.797887802124023, - 10.792799949645996, - 10.857407569885254, - 10.77724838256836, - 10.715999603271484, - 10.741375923156738, - 10.79155158996582, - 10.785408020019531, - 10.790143966674805, - 10.743583679199219, - 10.839584350585938, - 10.786175727844238, - 10.728799819946289, - 10.787808418273926, - 10.800736427307129, - 10.753824234008789, - 10.880800247192383, - 10.809568405151367, - 10.859647750854492, - 10.771583557128906, - 10.771488189697266, - 10.745216369628906, - 10.834303855895996, - 10.763551712036133, - 10.760640144348145, - 10.699647903442383, - 10.698816299438477, - 10.715776443481445 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 55701.768561732024, - 13.8981849886477, - 11.759857181459665, - 11.462095193564892, - 11.171555612236261, - 11.200760956853628, - 11.0764866694808, - 11.444801930338144, - 11.174711864441633 - ], - "event_ms_including_first": [ - 55701.546875, - 13.854144096374512, - 11.728128433227539, - 11.428031921386719, - 11.140800476074219, - 11.170016288757324, - 11.045663833618164, - 11.414239883422852, - 11.144000053405762 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/xt/cxtaymbrblp46rlykltzbo7iz5yni5morlx573efzpa5ecchrvrl.py" - ], - "routes": [ - { - "sha256": "cba1a62b4389df004c8aa90085d868da326250d562233dca490331b71c3efd88", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "elapsed_s": 59.9027578830719 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_BASE_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" - } - } - }, - { - "run": "Nano_n96_BASE_p2", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 96, - "started": 1792864481.3907807, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 480268, - "first_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "steady_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "full_window_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "steady_wall_ms": { - "median": 10.998343816027045, - "p90": 11.144884023815393, - "min": 10.779886040836573, - "max": 15.755651984363794, - "samples": [ - 10.874154977500439, - 10.873873252421618, - 10.891676880419254, - 11.144876014441252, - 10.877581313252449, - 10.87558688595891, - 10.792290326207876, - 10.860849171876907, - 10.839369148015976, - 10.964544955641031, - 10.809683240950108, - 10.804563760757446, - 10.779886040836573, - 10.806648060679436, - 10.848124977201223, - 15.755651984363794, - 12.825530022382736, - 11.096253991127014, - 11.144956108182669, - 11.085723992437124, - 11.05540618300438, - 11.087947990745306, - 11.118114925920963, - 11.057940777391195, - 11.081826873123646, - 11.038594879209995, - 11.140736751258373, - 11.002376675605774, - 10.994310956448317, - 11.007186025381088 - ] - }, - "steady_event_ms": { - "median": 10.956480026245117, - "p90": 11.10163230895996, - "samples": [ - 10.82374382019043, - 10.831104278564453, - 10.848575592041016, - 11.102784156799316, - 10.833919525146484, - 10.832575798034668, - 10.750495910644531, - 10.818400382995605, - 10.797920227050781, - 10.921567916870117, - 10.766719818115234, - 10.762080192565918, - 10.737471580505371, - 10.764384269714355, - 10.806464195251465, - 15.710944175720215, - 12.783072471618652, - 11.05408000946045, - 11.1015043258667, - 11.042880058288574, - 11.013407707214355, - 11.045984268188477, - 11.075424194335938, - 11.015487670898438, - 11.03974437713623, - 10.996671676635742, - 11.098912239074707, - 10.960127830505371, - 10.952832221984863, - 10.9618558883667 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 54769.29545216262, - 13.770753983408213, - 11.659588199108839, - 11.302273254841566, - 11.25294016674161, - 11.096274014562368, - 11.093398090451956, - 11.46297575905919, - 11.174872051924467 - ], - "event_ms_including_first": [ - 54769.08984375, - 13.737759590148926, - 11.624128341674805, - 11.269344329833984, - 11.22156810760498, - 11.06492805480957, - 11.062623977661133, - 11.43222427368164, - 11.143584251403809 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor/xt/cxtaymbrblp46rlykltzbo7iz5yni5morlx573efzpa5ecchrvrl.py" - ], - "routes": [ - { - "sha256": "cba1a62b4389df004c8aa90085d868da326250d562233dca490331b71c3efd88", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "elapsed_s": 58.89723491668701 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_BASE_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE", - "gpu": "1", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_BASE/triton" - } - } - }, - { - "run": "Nano_n96_ECS_p0", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 96, - "started": 1792864122.8756602, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 480268, - "first_peak": { - "allocated": 204831232, - "reserved": 232783872 - }, - "steady_peak": { - "allocated": 104167936, - "reserved": 232783872 - }, - "full_window_peak": { - "allocated": 204831232, - "reserved": 232783872 - }, - "steady_wall_ms": { - "median": 10.751245310530066, - "p90": 10.808398528024554, - "min": 10.631013195961714, - "max": 11.018664110451937, - "samples": [ - 10.804920922964811, - 10.83969697356224, - 10.780936107039452, - 10.79531293362379, - 10.744957718998194, - 10.75512683019042, - 10.762781836092472, - 10.772780980914831, - 10.797187220305204, - 10.794821660965681, - 10.754887945950031, - 10.771297849714756, - 10.746531188488007, - 10.747602675110102, - 10.796335060149431, - 10.72707399725914, - 10.767350904643536, - 10.729058180004358, - 11.018664110451937, - 10.631393641233444, - 10.631013195961714, - 10.705273132771254, - 10.703008621931076, - 10.673021897673607, - 10.734137147665024, - 10.671518743038177, - 10.670618154108524, - 10.696236044168472, - 10.896113235503435, - 10.73046075180173 - ] - }, - "steady_event_ms": { - "median": 10.71068811416626, - "p90": 10.760060501098632, - "samples": [ - 10.752191543579102, - 10.797183990478516, - 10.739744186401367, - 10.7542724609375, - 10.703392028808594, - 10.714048385620117, - 10.721247673034668, - 10.73203182220459, - 10.754048347473145, - 10.753408432006836, - 10.714367866516113, - 10.730048179626465, - 10.705887794494629, - 10.707327842712402, - 10.755935668945312, - 10.686079978942871, - 10.726400375366211, - 10.68614387512207, - 10.97753620147705, - 10.590720176696777, - 10.590847969055176, - 10.664352416992188, - 10.6626558303833, - 10.632384300231934, - 10.693535804748535, - 10.630399703979492, - 10.629695892333984, - 10.6561918258667, - 10.855104446411133, - 10.680512428283691 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 93603.48245827481, - 14.961379114538431, - 11.682859156280756, - 11.430552694946527, - 11.271502822637558, - 11.213222052901983, - 11.120748240500689, - 11.493450962007046, - 11.1066410318017 - ], - "event_ms_including_first": [ - 93603.1484375, - 14.930975914001465, - 11.653440475463867, - 11.400639533996582, - 11.241567611694336, - 11.183199882507324, - 11.09119987487793, - 11.46288013458252, - 11.076448440551758 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/za/czayf3532psnxdtw7xetqlsc6pd6v7htufd3gew6twzdaxoxmclg.py" - ], - "routes": [ - { - "sha256": "2bd826f473a672ac42b626c10de39c75d10102ecd71410c6dd4cdebb9320c92a", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 204831232, - "reserved": 232783872 - }, - "elapsed_s": 98.04223704338074 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_ECS_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" - } - } - }, - { - "run": "Nano_n96_ECS_p1", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 96, - "started": 1792864225.857543, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 480268, - "first_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "steady_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "full_window_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "steady_wall_ms": { - "median": 10.834284592419863, - "p90": 11.058952659368515, - "min": 10.748827829957008, - "max": 11.119076982140541, - "samples": [ - 11.101322714239359, - 11.119076982140541, - 11.045548133552074, - 11.066337116062641, - 11.002095881849527, - 11.058132164180279, - 11.03077083826065, - 10.980304796248674, - 11.03949686512351, - 11.032914277166128, - 10.901986621320248, - 10.797549970448017, - 10.751774068921804, - 10.795475915074348, - 10.816184803843498, - 10.766139719635248, - 10.836664121598005, - 10.77226223424077, - 10.796448215842247, - 10.799484327435493, - 10.772442910820246, - 10.748827829957008, - 10.849247220903635, - 10.777051094919443, - 10.875968262553215, - 10.827417019754648, - 10.829288978129625, - 10.768875945359468, - 10.83190506324172, - 10.862252209335566 - ] - }, - "steady_event_ms": { - "median": 10.791536331176758, - "p90": 11.016917991638184, - "samples": [ - 11.044639587402344, - 11.073920249938965, - 11.003392219543457, - 11.024031639099121, - 10.959615707397461, - 11.016127586364746, - 10.989119529724121, - 10.93712043762207, - 10.997632026672363, - 10.99078369140625, - 10.85977554321289, - 10.755776405334473, - 10.710016250610352, - 10.741312026977539, - 10.774304389953613, - 10.723456382751465, - 10.794048309326172, - 10.728511810302734, - 10.753824234008789, - 10.757375717163086, - 10.730624198913574, - 10.706944465637207, - 10.806719779968262, - 10.732064247131348, - 10.834431648254395, - 10.78115177154541, - 10.786144256591797, - 10.727007865905762, - 10.789024353027344, - 10.810463905334473 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 54761.62023888901, - 14.032318256795406, - 11.889121029525995, - 11.73345698043704, - 11.478154920041561, - 11.462516151368618, - 11.35220704600215, - 11.678113136440516, - 11.256566736847162 - ], - "event_ms_including_first": [ - 54761.39453125, - 13.996383666992188, - 11.85644817352295, - 11.700799942016602, - 11.446016311645508, - 11.430432319641113, - 11.320608139038086, - 11.645983695983887, - 11.218208312988281 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/za/czayf3532psnxdtw7xetqlsc6pd6v7htufd3gew6twzdaxoxmclg.py" - ], - "routes": [ - { - "sha256": "2bd826f473a672ac42b626c10de39c75d10102ecd71410c6dd4cdebb9320c92a", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "elapsed_s": 58.92485165596008 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_ECS_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" - } - } - }, - { - "run": "Nano_n96_ECS_p2", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 96, - "started": 1792864545.0989456, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 480268, - "first_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "steady_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "full_window_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "steady_wall_ms": { - "median": 10.780998272821307, - "p90": 10.826601833105087, - "min": 10.706027038395405, - "max": 10.85093105211854, - "samples": [ - 10.782009921967983, - 10.817678179591894, - 10.749098379164934, - 10.829549748450518, - 10.85093105211854, - 10.80044498667121, - 10.779986623674631, - 10.830000974237919, - 10.826274286955595, - 10.790436062961817, - 10.758045129477978, - 10.744289960712194, - 10.751763824373484, - 10.706027038395405, - 10.708551853895187, - 10.7421251013875, - 10.792800690978765, - 10.707349982112646, - 10.749629698693752, - 10.81469189375639, - 10.803751181811094, - 10.784285143017769, - 10.754649061709642, - 10.735833086073399, - 10.792650748044252, - 10.795045644044876, - 10.734951123595238, - 10.777933057397604, - 10.738769080489874, - 10.794233996421099 - ] - }, - "steady_event_ms": { - "median": 10.738671779632568, - "p90": 10.786323070526123, - "samples": [ - 10.7326078414917, - 10.776576042175293, - 10.707967758178711, - 10.788224220275879, - 10.806559562683105, - 10.759136199951172, - 10.739935874938965, - 10.788991928100586, - 10.786111831665039, - 10.749792098999023, - 10.717151641845703, - 10.6942720413208, - 10.710975646972656, - 10.665984153747559, - 10.667519569396973, - 10.701055526733398, - 10.752639770507812, - 10.666975975036621, - 10.697471618652344, - 10.77286434173584, - 10.763423919677734, - 10.742912292480469, - 10.71452808380127, - 10.685407638549805, - 10.75171184539795, - 10.754816055297852, - 10.694111824035645, - 10.737407684326172, - 10.69820785522461, - 10.754048347473145 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 55300.507810898125, - 14.478270895779133, - 12.003426905721426, - 11.69545529410243, - 11.360862758010626, - 11.300619691610336, - 11.26081496477127, - 11.460251174867153, - 11.067869607359171 - ], - "event_ms_including_first": [ - 55300.30078125, - 14.442208290100098, - 11.970815658569336, - 11.663392066955566, - 11.330368041992188, - 11.248127937316895, - 11.231136322021484, - 11.430463790893555, - 11.038335800170898 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor/za/czayf3532psnxdtw7xetqlsc6pd6v7htufd3gew6twzdaxoxmclg.py" - ], - "routes": [ - { - "sha256": "2bd826f473a672ac42b626c10de39c75d10102ecd71410c6dd4cdebb9320c92a", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "elapsed_s": 59.48199510574341 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_ECS_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_ECS/triton" - } - } - }, - { - "run": "Nano_n96_TORCH_p0", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 96, - "started": 1792863903.9348423, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 480268, - "first_peak": { - "allocated": 267504640, - "reserved": 295698432 - }, - "steady_peak": { - "allocated": 168914432, - "reserved": 295698432 - }, - "full_window_peak": { - "allocated": 267504640, - "reserved": 295698432 - }, - "steady_wall_ms": { - "median": 10.857054498046637, - "p90": 10.90511935763061, - "min": 10.758072137832642, - "max": 11.050153989344835, - "samples": [ - 10.857671033591032, - 10.904368944466114, - 10.865516029298306, - 10.802946984767914, - 10.819538962095976, - 10.843753814697266, - 10.814157780259848, - 10.88523305952549, - 10.882287286221981, - 10.880183894187212, - 10.94115898013115, - 10.878289118409157, - 10.911873076111078, - 10.848433244973421, - 10.854925960302353, - 10.85355319082737, - 10.86358167231083, - 10.847772937268019, - 10.850267019122839, - 10.818838141858578, - 10.856437962502241, - 10.889740660786629, - 10.860124602913857, - 10.837251786142588, - 10.859103873372078, - 10.758072137832642, - 11.050153989344835, - 10.898669250309467, - 10.793108958750963, - 10.815191082656384 - ] - }, - "steady_event_ms": { - "median": 10.81337594985962, - "p90": 10.861683177947999, - "samples": [ - 10.80838394165039, - 10.860671997070312, - 10.822591781616211, - 10.761343955993652, - 10.777152061462402, - 10.800288200378418, - 10.772735595703125, - 10.842368125915527, - 10.840127944946289, - 10.838208198547363, - 10.89897632598877, - 10.835552215576172, - 10.870783805847168, - 10.806816101074219, - 10.812704086303711, - 10.810720443725586, - 10.820927619934082, - 10.806431770324707, - 10.808671951293945, - 10.777055740356445, - 10.814047813415527, - 10.847776412963867, - 10.81827163696289, - 10.795136451721191, - 10.81612777709961, - 10.715904235839844, - 11.008671760559082, - 10.856415748596191, - 10.750783920288086, - 10.773728370666504 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 88560.2951599285, - 15.084350947290659, - 11.486507952213287, - 11.724798008799553, - 11.425802949815989, - 11.459317058324814, - 11.436713859438896, - 11.63086062297225, - 11.230925098061562 - ], - "event_ms_including_first": [ - 88559.9375, - 15.054368019104004, - 11.45689582824707, - 11.6942720413208, - 11.394847869873047, - 11.429056167602539, - 11.406047821044922, - 11.59990406036377, - 11.20032024383545 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/hg/chg6wzs2xjm2gwlehr2fbnsgvlt73vrtgsdw4i5fohwcmscdn2bw.py" - ], - "routes": [ - { - "sha256": "b535aa30720bdd4a7b4d7f7f266eeaa7d6205b2217f5ad2c4c7f660b2bd656fc", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 267504640, - "reserved": 295698432 - }, - "elapsed_s": 92.92989468574524 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_TORCH_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" - } - } - }, - { - "run": "Nano_n96_TORCH_p1", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 96, - "started": 1792864354.2838655, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 480268, - "first_peak": { - "allocated": 168914432, - "reserved": 190840832 - }, - "steady_peak": { - "allocated": 168914432, - "reserved": 190840832 - }, - "full_window_peak": { - "allocated": 168914432, - "reserved": 190840832 - }, - "steady_wall_ms": { - "median": 10.842765448614955, - "p90": 10.89477320201695, - "min": 10.768103878945112, - "max": 11.153141036629677, - "samples": [ - 10.90514287352562, - 10.878954082727432, - 10.846813209354877, - 10.88989432901144, - 10.872601997107267, - 10.846572928130627, - 10.773944668471813, - 10.84093190729618, - 10.880316141992807, - 10.863093193620443, - 10.868433862924576, - 10.84459898993373, - 10.821936186403036, - 10.818488895893097, - 10.83518099039793, - 10.801536962389946, - 10.819371324032545, - 10.855258908122778, - 10.768103878945112, - 10.808840859681368, - 10.769215878099203, - 10.80280914902687, - 10.986065957695246, - 10.794434230774641, - 10.794984642416239, - 10.778994765132666, - 11.153141036629677, - 10.893621016293764, - 10.866379830986261, - 10.834760032594204 - ] - }, - "steady_event_ms": { - "median": 10.799535751342773, - "p90": 10.851967811584473, - "samples": [ - 10.854559898376465, - 10.835552215576172, - 10.80457592010498, - 10.846816062927246, - 10.829952239990234, - 10.804287910461426, - 10.73145580291748, - 10.798527717590332, - 10.83852767944336, - 10.821056365966797, - 10.826592445373535, - 10.800543785095215, - 10.77990436553955, - 10.776320457458496, - 10.793279647827148, - 10.760031700134277, - 10.776543617248535, - 10.813728332519531, - 10.72655963897705, - 10.766655921936035, - 10.725664138793945, - 10.761919975280762, - 10.943743705749512, - 10.751744270324707, - 10.753312110900879, - 10.737055778503418, - 11.111136436462402, - 10.851679801940918, - 10.823871612548828, - 10.793408393859863 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 55847.48191293329, - 14.04241705313325, - 11.672261636704206, - 11.654529254883528, - 11.33274007588625, - 11.394738219678402, - 11.384136974811554, - 11.567564215511084, - 11.224906891584396 - ], - "event_ms_including_first": [ - 55847.27734375, - 14.009183883666992, - 11.64025592803955, - 11.620960235595703, - 11.301823616027832, - 11.3635835647583, - 11.352352142333984, - 11.53542423248291, - 11.193440437316895 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/hg/chg6wzs2xjm2gwlehr2fbnsgvlt73vrtgsdw4i5fohwcmscdn2bw.py" - ], - "routes": [ - { - "sha256": "b535aa30720bdd4a7b4d7f7f266eeaa7d6205b2217f5ad2c4c7f660b2bd656fc", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 168914432, - "reserved": 190840832 - }, - "elapsed_s": 59.70823812484741 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_TORCH_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" - } - } - }, - { - "run": "Nano_n96_TORCH_p2", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 96, - "started": 1792864418.0821834, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 480268, - "first_peak": { - "allocated": 168914432, - "reserved": 190840832 - }, - "steady_peak": { - "allocated": 168914432, - "reserved": 190840832 - }, - "full_window_peak": { - "allocated": 168914432, - "reserved": 190840832 - }, - "steady_wall_ms": { - "median": 10.69800229743123, - "p90": 10.754376510158181, - "min": 10.654861107468605, - "max": 11.754055973142385, - "samples": [ - 10.700777173042297, - 10.715133976191282, - 10.699113830924034, - 10.654861107468605, - 10.68326411768794, - 11.754055973142385, - 11.300900019705296, - 10.680268052965403, - 10.685307905077934, - 10.747465305030346, - 10.71334071457386, - 10.684655979275703, - 10.713981930166483, - 10.676641017198563, - 10.68259309977293, - 10.686549823731184, - 10.733498726040125, - 10.683243628591299, - 10.698172729462385, - 10.669707786291838, - 10.735752992331982, - 10.685116983950138, - 10.68250322714448, - 10.697831865400076, - 10.742336045950651, - 10.740522295236588, - 10.807918850332499, - 10.748427361249924, - 10.664459317922592, - 10.697520803660154 - ] - }, - "steady_event_ms": { - "median": 10.656463623046875, - "p90": 10.712748432159424, - "samples": [ - 10.65113639831543, - 10.673184394836426, - 10.657024383544922, - 10.61359977722168, - 10.641440391540527, - 11.707551956176758, - 11.252351760864258, - 10.637824058532715, - 10.643808364868164, - 10.70531177520752, - 10.672384262084961, - 10.643199920654297, - 10.671968460083008, - 10.635007858276367, - 10.641280174255371, - 10.645055770874023, - 10.691840171813965, - 10.642399787902832, - 10.656991958618164, - 10.628191947937012, - 10.694751739501953, - 10.644031524658203, - 10.64089584350586, - 10.656959533691406, - 10.701408386230469, - 10.69916820526123, - 10.765567779541016, - 10.706879615783691, - 10.62390422821045, - 10.655967712402344 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 55381.22761901468, - 13.754493091255426, - 11.31836324930191, - 11.312562972307205, - 11.177427135407925, - 11.123885866254568, - 11.266796384006739, - 11.545511893928051, - 10.938966646790504 - ], - "event_ms_including_first": [ - 55381.02734375, - 13.722911834716797, - 11.287039756774902, - 11.281472206115723, - 11.146880149841309, - 11.094079971313477, - 11.237759590148926, - 11.515904426574707, - 10.909536361694336 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor/hg/chg6wzs2xjm2gwlehr2fbnsgvlt73vrtgsdw4i5fohwcmscdn2bw.py" - ], - "routes": [ - { - "sha256": "b535aa30720bdd4a7b4d7f7f266eeaa7d6205b2217f5ad2c4c7f660b2bd656fc", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 168914432, - "reserved": 190840832 - }, - "elapsed_s": 59.17427396774292 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_pr_20261018/models/DPA4-Nano-OMat24-v20260805.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Nano_n96_TORCH_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH", - "gpu": "1", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Nano_TORCH/triton" - } - } - }, - { - "run": "NeoCu_n4096_BASE_p0", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 4096, - "started": 1792868123.1350977, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "parameter_count": 1124910, - "first_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - }, - "steady_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - }, - "full_window_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - }, - "steady_wall_ms": { - "median": 80.32713015563786, - "p90": 80.51427467726171, - "min": 80.12435678392649, - "max": 80.90564329177141, - "samples": [ - 80.26505308225751, - 80.4279800504446, - 80.23814298212528, - 80.3706618025899, - 80.27752581983805, - 80.2444750443101, - 80.3326703608036, - 80.30397677794099, - 80.27813816443086, - 80.42500494048, - 80.38592105731368, - 80.28538106009364, - 80.67486668005586, - 80.90564329177141, - 80.38176316767931, - 80.34715801477432, - 80.43078612536192, - 80.51326172426343, - 80.52339125424623, - 80.260104034096, - 80.38847614079714, - 80.30541008338332, - 80.25659713894129, - 80.24798100814223, - 80.4141047410667, - 80.48368571326137, - 80.12905577197671, - 80.25590516626835, - 80.12435678392649, - 80.32158995047212 - ] - }, - "steady_event_ms": { - "median": 80.2801742553711, - "p90": 80.46779937744141, - "samples": [ - 80.20540618896484, - 80.37935638427734, - 80.19078063964844, - 80.32364654541016, - 80.22991943359375, - 80.19718170166016, - 80.2852783203125, - 80.2544937133789, - 80.23228454589844, - 80.37913513183594, - 80.33824157714844, - 80.23766326904297, - 80.62380981445312, - 80.8583984375, - 80.3355484008789, - 80.30009460449219, - 80.38409423828125, - 80.46688079833984, - 80.47606658935547, - 80.21356964111328, - 80.3410873413086, - 80.25958251953125, - 80.20767974853516, - 80.20140838623047, - 80.36009979248047, - 80.43705749511719, - 80.08073425292969, - 80.20909118652344, - 80.07711791992188, - 80.27507019042969 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 73949.57724306732, - 86.8740864098072, - 81.13977499306202, - 80.92188369482756, - 80.51841100677848, - 80.4877239279449, - 80.41399391368032, - 80.67111019045115, - 80.26729663833976 - ], - "event_ms_including_first": [ - 73949.25, - 86.83606719970703, - 81.10588836669922, - 80.88787078857422, - 80.48521423339844, - 80.45500946044922, - 80.38195037841797, - 80.62911987304688, - 80.23494720458984 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/xa/cxazbdrklj3m4rz4wghdrus6hkjdqhiw2qrmdr3uoyetgzcfdrvy.py" - ], - "routes": [ - { - "sha256": "0e26451d495a702bb2e2961a6c53a3a22faae697a63f047bb6d44732628a35c4", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - }, - "elapsed_s": 83.83816456794739 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_BASE_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[16, 16, 8]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" - } - } - }, - { - "run": "NeoCu_n4096_BASE_p1", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 4096, - "started": 1792868387.2107086, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "parameter_count": 1124910, - "first_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - }, - "steady_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - }, - "full_window_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - }, - "steady_wall_ms": { - "median": 80.13155683875084, - "p90": 80.2633062005043, - "min": 79.97071789577603, - "max": 80.49774402752519, - "samples": [ - 80.26471268385649, - 80.16620669513941, - 80.10355802252889, - 80.1069657318294, - 80.25672798976302, - 80.06555680185556, - 80.2206601947546, - 80.12183383107185, - 80.18077490851283, - 80.26314992457628, - 80.49774402752519, - 80.15242079272866, - 80.29691409319639, - 80.15353279188275, - 80.25000477209687, - 80.16290981322527, - 80.09402081370354, - 80.10904910042882, - 80.10840835049748, - 80.08335018530488, - 80.19167510792613, - 79.97071789577603, - 80.15888277441263, - 80.01469122245908, - 80.09883994236588, - 80.03430813550949, - 80.05854394286871, - 80.07052587345243, - 80.14127984642982, - 80.06669906899333 - ] - }, - "steady_event_ms": { - "median": 80.08596801757812, - "p90": 80.2109992980957, - "samples": [ - 80.20620727539062, - 80.11952209472656, - 80.05731201171875, - 80.0615005493164, - 80.21068572998047, - 80.02044677734375, - 80.17529296875, - 80.0761947631836, - 80.1358413696289, - 80.21382141113281, - 80.4505615234375, - 80.1061782836914, - 80.24992370605469, - 80.10771179199219, - 80.2031021118164, - 80.11711883544922, - 80.04790496826172, - 80.06390380859375, - 80.06124877929688, - 80.03638458251953, - 80.14630126953125, - 79.92473602294922, - 80.1118392944336, - 79.96934509277344, - 80.05331420898438, - 79.98844909667969, - 80.01270294189453, - 80.0251235961914, - 80.09574127197266, - 80.02156829833984 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 74194.41817095503, - 85.71029035374522, - 80.54011268541217, - 80.45409061014652, - 80.14401607215405, - 80.19817713648081, - 80.26808919385076, - 80.30013041570783, - 80.30385663732886 - ], - "event_ms_including_first": [ - 74194.1015625, - 85.67727661132812, - 80.50819396972656, - 80.41539001464844, - 80.11209869384766, - 80.16633605957031, - 80.2366714477539, - 80.26748657226562, - 80.27030181884766 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/xa/cxazbdrklj3m4rz4wghdrus6hkjdqhiw2qrmdr3uoyetgzcfdrvy.py" - ], - "routes": [ - { - "sha256": "0e26451d495a702bb2e2961a6c53a3a22faae697a63f047bb6d44732628a35c4", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - }, - "elapsed_s": 84.00558567047119 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_BASE_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[16, 16, 8]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" - } - } - }, - { - "run": "NeoCu_n4096_BASE_p2", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 4096, - "started": 1792868658.6328928, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "parameter_count": 1124910, - "first_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - }, - "steady_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - }, - "full_window_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - }, - "steady_wall_ms": { - "median": 80.10453544557095, - "p90": 80.18670538440347, - "min": 79.99687688425183, - "max": 80.27157606557012, - "samples": [ - 80.21746296435595, - 80.11257601901889, - 79.99687688425183, - 80.05871390923858, - 80.12527972459793, - 80.02063212916255, - 80.1929272711277, - 80.06287179887295, - 80.09153604507446, - 80.05692111328244, - 80.08695673197508, - 80.03879617899656, - 80.1004022359848, - 80.10866865515709, - 80.18601406365633, - 80.0600559450686, - 80.1188382320106, - 80.13951685279608, - 80.0603567622602, - 80.0573411397636, - 80.11785568669438, - 80.12346597388387, - 80.27157606557012, - 80.11620212346315, - 80.05480701103806, - 80.11000091210008, - 80.12684201821685, - 80.01950988546014, - 80.08425170555711, - 80.1209113560617 - ] - }, - "steady_event_ms": { - "median": 80.05836486816406, - "p90": 80.13001708984375, - "samples": [ - 80.16041564941406, - 80.06550598144531, - 79.95021057128906, - 80.01155090332031, - 80.07036590576172, - 79.97430419921875, - 80.14729309082031, - 80.01577758789062, - 80.04630279541016, - 80.00969696044922, - 80.04096221923828, - 79.9922866821289, - 80.0540771484375, - 80.06265258789062, - 80.12809753417969, - 80.01232147216797, - 80.07341003417969, - 80.09331512451172, - 80.01407623291016, - 80.01030731201172, - 80.07174682617188, - 80.0769271850586, - 80.22297668457031, - 80.07001495361328, - 80.00892639160156, - 80.06409454345703, - 80.08070373535156, - 79.97283172607422, - 80.03836822509766, - 80.07433319091797 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 72013.99471005425, - 85.6666979379952, - 80.83410793915391, - 80.74837690219283, - 80.27519285678864, - 80.28546208515763, - 80.32192103564739, - 80.40106110274792, - 80.34672820940614 - ], - "event_ms_including_first": [ - 72013.65625, - 85.62876892089844, - 80.80016326904297, - 80.71501159667969, - 80.24393463134766, - 80.25468444824219, - 80.2907485961914, - 80.36685180664062, - 80.31462097167969 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/xa/cxazbdrklj3m4rz4wghdrus6hkjdqhiw2qrmdr3uoyetgzcfdrvy.py" - ], - "routes": [ - { - "sha256": "0e26451d495a702bb2e2961a6c53a3a22faae697a63f047bb6d44732628a35c4", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - }, - "elapsed_s": 81.74831676483154 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_BASE_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[16, 16, 8]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" - } - } - }, - { - "run": "NeoCu_n4096_ECS_p0", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 4096, - "started": 1792868211.4409509, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "parameter_count": 1124910, - "first_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - }, - "steady_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - }, - "full_window_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - }, - "steady_wall_ms": { - "median": 80.31475683674216, - "p90": 80.4004886187613, - "min": 80.16964327543974, - "max": 80.55102312937379, - "samples": [ - 80.46550117433071, - 80.35080507397652, - 80.2654530853033, - 80.36064309999347, - 80.35749802365899, - 80.27941966429353, - 80.25653706863523, - 80.22375497967005, - 80.3905101493001, - 80.35435201600194, - 80.19355777651072, - 80.24772070348263, - 80.28530096635222, - 80.31836384907365, - 80.16964327543974, - 80.55102312937379, - 80.47046093270183, - 80.26095479726791, - 80.24900266900659, - 80.27832815423608, - 80.25126717984676, - 80.3197561763227, - 80.26688685640693, - 80.35259833559394, - 80.39221307262778, - 80.31114982441068, - 80.25471307337284, - 80.39314486086369, - 80.32819302752614, - 80.39326500147581 - ] - }, - "steady_event_ms": { - "median": 80.26953887939453, - "p90": 80.35458984375, - "samples": [ - 80.40758514404297, - 80.30384063720703, - 80.21794891357422, - 80.31501007080078, - 80.31132507324219, - 80.23343658447266, - 80.21056365966797, - 80.17910766601562, - 80.3449935913086, - 80.30889892578125, - 80.14911651611328, - 80.20118713378906, - 80.23977661132812, - 80.27334594726562, - 80.1231689453125, - 80.50476837158203, - 80.42546844482422, - 80.2154541015625, - 80.2037124633789, - 80.23324584960938, - 80.20582580566406, - 80.27436828613281, - 80.21897888183594, - 80.30652618408203, - 80.34505462646484, - 80.26573181152344, - 80.2081298828125, - 80.34537506103516, - 80.28262329101562, - 80.34870147705078 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 73632.82458903268, - 85.89509828016162, - 80.92920808121562, - 80.6803866289556, - 80.48214297741652, - 80.38720302283764, - 80.26101486757398, - 80.41962468996644, - 80.25125693529844 - ], - "event_ms_including_first": [ - 73632.515625, - 85.86176300048828, - 80.89746856689453, - 80.64070129394531, - 80.45053100585938, - 80.3551025390625, - 80.2291488647461, - 80.38813018798828, - 80.21949005126953 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/oa/coajcio4wzyccyqwku2yf2oqrympn2c6ndwut366wqwidcj2xkyw.py" - ], - "routes": [ - { - "sha256": "4301f667fc125b923f1c0ef2ab927074bc6e243295f83548a285bd10f738a627", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - }, - "elapsed_s": 83.44936060905457 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_ECS_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[16, 16, 8]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" - } - } - }, - { - "run": "NeoCu_n4096_ECS_p1", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 4096, - "started": 1792868299.1433072, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "parameter_count": 1124910, - "first_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - }, - "steady_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - }, - "full_window_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - }, - "steady_wall_ms": { - "median": 80.35085024312139, - "p90": 80.54153216071427, - "min": 80.17089543864131, - "max": 80.72082418948412, - "samples": [ - 80.29866591095924, - 80.54144494235516, - 80.27228573337197, - 80.31847421079874, - 80.32469591125846, - 80.26721701025963, - 80.34609630703926, - 80.38137201219797, - 80.35560417920351, - 80.59523720294237, - 80.41799208149314, - 80.38968872278929, - 80.52803995087743, - 80.52899222820997, - 80.3994769230485, - 80.54231712594628, - 80.5012988857925, - 80.48755303025246, - 80.39684174582362, - 80.72082418948412, - 80.25986282154918, - 80.22226206958294, - 80.24027617648244, - 80.29756415635347, - 80.21436678245664, - 80.45322820544243, - 80.29945800080895, - 80.25071630254388, - 80.21133067086339, - 80.17089543864131 - ] - }, - "steady_event_ms": { - "median": 80.30249404907227, - "p90": 80.48973159790039, - "samples": [ - 80.2375717163086, - 80.48912048339844, - 80.22509002685547, - 80.27235412597656, - 80.27731323242188, - 80.22051239013672, - 80.29859161376953, - 80.33475494384766, - 80.306396484375, - 80.54959869384766, - 80.3707504272461, - 80.34268951416016, - 80.47901153564453, - 80.48381042480469, - 80.3529281616211, - 80.49523162841797, - 80.4551010131836, - 80.44182586669922, - 80.35040283203125, - 80.67369842529297, - 80.212158203125, - 80.1756820678711, - 80.19139099121094, - 80.2496337890625, - 80.16742706298828, - 80.40643310546875, - 80.25183868408203, - 80.20416259765625, - 80.16563415527344, - 80.1242904663086 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 74031.63462225348, - 86.5353369154036, - 80.98067436367273, - 80.9595650061965, - 80.76253300532699, - 80.66258393228054, - 80.35736717283726, - 80.56525001302361, - 80.38541115820408 - ], - "event_ms_including_first": [ - 74031.3125, - 86.49795532226562, - 80.94611358642578, - 80.92521667480469, - 80.7311019897461, - 80.63046264648438, - 80.32450866699219, - 80.53202819824219, - 80.35298919677734 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/oa/coajcio4wzyccyqwku2yf2oqrympn2c6ndwut366wqwidcj2xkyw.py" - ], - "routes": [ - { - "sha256": "4301f667fc125b923f1c0ef2ab927074bc6e243295f83548a285bd10f738a627", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - }, - "elapsed_s": 83.818922996521 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_ECS_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[16, 16, 8]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" - } - } - }, - { - "run": "NeoCu_n4096_ECS_p2", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 4096, - "started": 1792868744.6540964, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "parameter_count": 1124910, - "first_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - }, - "steady_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - }, - "full_window_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - }, - "steady_wall_ms": { - "median": 80.27959172613919, - "p90": 80.39197344332933, - "min": 80.19969100132585, - "max": 80.48136159777641, - "samples": [ - 80.39377722889185, - 80.37029299885035, - 80.39177302271128, - 80.2627089433372, - 80.27601521462202, - 80.3109910339117, - 80.29384911060333, - 80.26909176260233, - 80.38436993956566, - 80.19969100132585, - 80.2145479246974, - 80.29627287760377, - 80.2085972391069, - 80.21266525611281, - 80.25211887434125, - 80.23451641201973, - 80.48136159777641, - 80.20429918542504, - 80.25817107409239, - 80.28316823765635, - 80.29188495129347, - 80.29470033943653, - 80.20883705466986, - 80.31666092574596, - 80.40320500731468, - 80.31427720561624, - 80.28463087975979, - 80.26765892282128, - 80.24453511461616, - 80.23188076913357 - ] - }, - "steady_event_ms": { - "median": 80.23303985595703, - "p90": 80.33891906738282, - "samples": [ - 80.33586883544922, - 80.32112121582031, - 80.34419250488281, - 80.21542358398438, - 80.2294692993164, - 80.26380920410156, - 80.24765014648438, - 80.22064208984375, - 80.33833312988281, - 80.15382385253906, - 80.16178894042969, - 80.2496337890625, - 80.16175842285156, - 80.16572570800781, - 80.20527648925781, - 80.18793487548828, - 80.43516540527344, - 80.15718078613281, - 80.20979309082031, - 80.23661041259766, - 80.24566650390625, - 80.24137878417969, - 80.16009521484375, - 80.26812744140625, - 80.35686492919922, - 80.26787567138672, - 80.23715209960938, - 80.22096252441406, - 80.19821166992188, - 80.18476867675781 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 72490.87165901437, - 85.59105498716235, - 80.91207593679428, - 80.69116901606321, - 80.37476101890206, - 80.22443670779467, - 80.4784270003438, - 80.509795807302, - 80.45174600556493 - ], - "event_ms_including_first": [ - 72490.546875, - 85.55744171142578, - 80.88015747070312, - 80.6588134765625, - 80.34310150146484, - 80.19004821777344, - 80.44703674316406, - 80.47808074951172, - 80.41897583007812 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/oa/coajcio4wzyccyqwku2yf2oqrympn2c6ndwut366wqwidcj2xkyw.py" - ], - "routes": [ - { - "sha256": "4301f667fc125b923f1c0ef2ab927074bc6e243295f83548a285bd10f738a627", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - }, - "elapsed_s": 82.31692743301392 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_ECS_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[16, 16, 8]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" - } - } - }, - { - "run": "NeoCu_n4096_TORCH_p0", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 4096, - "started": 1792868031.9178941, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "parameter_count": 1124910, - "first_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - }, - "steady_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - }, - "full_window_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - }, - "steady_wall_ms": { - "median": 160.91131581924856, - "p90": 161.08381124213338, - "min": 160.60722060501575, - "max": 161.2943490035832, - "samples": [ - 160.81728879362345, - 161.17499396204948, - 160.90001398697495, - 160.60722060501575, - 160.82137636840343, - 160.73932126164436, - 160.8777423389256, - 160.8921899460256, - 160.91111488640308, - 161.07771079987288, - 160.82579363137484, - 161.04969661682844, - 160.91383015736938, - 160.99795000627637, - 160.86778370663524, - 160.95472825691104, - 160.98694875836372, - 160.91151675209403, - 161.2943490035832, - 160.9101938083768, - 161.0428737476468, - 160.9364738687873, - 160.88197007775307, - 160.9621220268309, - 160.88549699634314, - 160.9831009991467, - 160.89995438233018, - 160.8574539422989, - 161.00375028327107, - 161.1387152224779 - ] - }, - "steady_event_ms": { - "median": 160.8641128540039, - "p90": 161.03654937744142, - "samples": [ - 160.7545928955078, - 161.1266632080078, - 160.85206604003906, - 160.55914306640625, - 160.77334594726562, - 160.69187927246094, - 160.8311004638672, - 160.84486389160156, - 160.8643798828125, - 161.03045654296875, - 160.77920532226562, - 161.000732421875, - 160.86611938476562, - 160.95126342773438, - 160.8211212158203, - 160.90687561035156, - 160.9403533935547, - 160.8638458251953, - 161.24700927734375, - 160.86172485351562, - 160.9967041015625, - 160.88890075683594, - 160.83482360839844, - 160.9132843017578, - 160.83868408203125, - 160.93603515625, - 160.85189819335938, - 160.81011962890625, - 160.9571533203125, - 161.0913848876953 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 70238.21411561221, - 167.09822276607156, - 160.32463777810335, - 160.11506086215377, - 159.97274406254292, - 160.14968696981668, - 160.4468380101025, - 160.16260208562016, - 159.8577261902392 - ], - "event_ms_including_first": [ - 70237.9375, - 167.060546875, - 160.29139709472656, - 160.08181762695312, - 159.94053649902344, - 160.11148071289062, - 160.4153289794922, - 160.1314239501953, - 159.81686401367188 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/zk/czk36ybaulyzucwgmurvf5gbzwy6ccce4gi4zzmn3omgrsfy7foy.py" - ], - "routes": [ - { - "sha256": "8a0380038aea6832f7f71fe5f3579c781cae06d887a391fcf883290ae5964e79", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - }, - "elapsed_s": 85.8185966014862 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_TORCH_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[16, 16, 8]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" - } - } - }, - { - "run": "NeoCu_n4096_TORCH_p1", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 4096, - "started": 1792868475.5015504, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "parameter_count": 1124910, - "first_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - }, - "steady_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - }, - "full_window_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - }, - "steady_wall_ms": { - "median": 160.88904533535242, - "p90": 161.02441484108567, - "min": 160.7751208357513, - "max": 161.34862322360277, - "samples": [ - 160.8860599808395, - 160.7762430794537, - 161.00823087617755, - 160.7751208357513, - 160.85768630728126, - 160.82187788560987, - 160.85485136136413, - 160.9487389214337, - 160.82853125408292, - 160.82196915522218, - 160.85551166906953, - 161.00536519661546, - 160.77981889247894, - 160.83080600947142, - 161.27979382872581, - 160.79549910500646, - 160.8835649676621, - 160.90901382267475, - 160.93950113281608, - 160.84088431671262, - 161.34862322360277, - 160.93081422150135, - 160.89203068986535, - 160.9358643181622, - 160.9947858378291, - 160.9586770646274, - 161.02185705676675, - 160.81545688211918, - 160.99191922694445, - 161.047434899956 - ] - }, - "steady_event_ms": { - "median": 160.8408660888672, - "p90": 160.97650909423828, - "samples": [ - 160.82310485839844, - 160.7271728515625, - 160.96109008789062, - 160.72720336914062, - 160.81097412109375, - 160.7729949951172, - 160.8059539794922, - 160.9017333984375, - 160.7815399169922, - 160.77503967285156, - 160.80618286132812, - 160.95741271972656, - 160.73126220703125, - 160.78233337402344, - 161.22982788085938, - 160.7473907470703, - 160.83734130859375, - 160.86224365234375, - 160.89219665527344, - 160.79017639160156, - 161.3026885986328, - 160.88499450683594, - 160.84439086914062, - 160.8880615234375, - 160.94837951660156, - 160.9074249267578, - 160.9738311767578, - 160.76666259765625, - 160.94403076171875, - 161.0006103515625 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 70823.27430415899, - 166.6825800202787, - 160.87923711165786, - 159.9146449007094, - 159.96182383969426, - 159.79080135002732, - 159.73006561398506, - 160.0230596959591, - 159.85825890675187 - ], - "event_ms_including_first": [ - 70822.9609375, - 166.63763427734375, - 160.8455352783203, - 159.88099670410156, - 159.9288330078125, - 159.75689697265625, - 159.69635009765625, - 159.98326110839844, - 159.8249969482422 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/zk/czk36ybaulyzucwgmurvf5gbzwy6ccce4gi4zzmn3omgrsfy7foy.py" - ], - "routes": [ - { - "sha256": "8a0380038aea6832f7f71fe5f3579c781cae06d887a391fcf883290ae5964e79", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - }, - "elapsed_s": 86.46810007095337 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_TORCH_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[16, 16, 8]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" - } - } - }, - { - "run": "NeoCu_n4096_TORCH_p2", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 4096, - "started": 1792868567.4155483, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "0f3f970603bb3ed7e5ab28cada203da1d4850c7157fbe6ded70a459908e40556", - "parameter_count": 1124910, - "first_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - }, - "steady_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - }, - "full_window_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - }, - "steady_wall_ms": { - "median": 160.94043804332614, - "p90": 161.10150669701397, - "min": 160.6604540720582, - "max": 161.24244267120957, - "samples": [ - 161.24244267120957, - 160.7575169764459, - 160.85377894341946, - 160.75772792100906, - 160.69468902423978, - 160.6604540720582, - 160.81038676202297, - 160.80951457843184, - 161.0308438539505, - 160.90691927820444, - 160.93159606680274, - 161.03385901078582, - 160.92677600681782, - 160.97676102072, - 160.93466198071837, - 161.1436060629785, - 160.88165109977126, - 161.03510092943907, - 161.0054662451148, - 160.9849170781672, - 161.09682898968458, - 160.93435091897845, - 160.9484381042421, - 160.88436590507627, - 160.9462141059339, - 160.92358017340302, - 160.95218481495976, - 161.0963880084455, - 161.04171378538013, - 161.20797814801335 - ] - }, - "steady_event_ms": { - "median": 160.8941650390625, - "p90": 161.05460205078126, - "samples": [ - 161.1735076904297, - 160.70822143554688, - 160.8065643310547, - 160.71055603027344, - 160.6451873779297, - 160.61392211914062, - 160.76336669921875, - 160.7606964111328, - 160.98377990722656, - 160.85955810546875, - 160.88327026367188, - 160.9854736328125, - 160.8796844482422, - 160.92994689941406, - 160.8882293701172, - 161.09613037109375, - 160.832763671875, - 160.98867797851562, - 160.95706176757812, - 160.93670654296875, - 161.04998779296875, - 160.88783264160156, - 160.90118408203125, - 160.8369598388672, - 160.9001007080078, - 160.8772735595703, - 160.90518188476562, - 161.04946899414062, - 160.994873046875, - 161.16085815429688 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 70224.4316469878, - 166.8362095952034, - 160.29304964467883, - 160.18545581027865, - 160.13020323589444, - 159.94378039613366, - 160.00680904835463, - 160.23520100861788, - 159.94847938418388 - ], - "event_ms_including_first": [ - 70224.1015625, - 166.79820251464844, - 160.2587890625, - 160.15245056152344, - 160.0979766845703, - 159.91087341308594, - 159.974365234375, - 160.20159912109375, - 159.9159698486328 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/zk/czk36ybaulyzucwgmurvf5gbzwy6ccce4gi4zzmn3omgrsfy7foy.py" - ], - "routes": [ - { - "sha256": "8a0380038aea6832f7f71fe5f3579c781cae06d887a391fcf883290ae5964e79", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - }, - "elapsed_s": 85.80604982376099 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n4096_TORCH_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[16, 16, 8]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" - } - } - }, - { - "run": "NeoCu_n512_BASE_p0", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 512, - "started": 1792867375.5863557, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "parameter_count": 1124910, - "first_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - }, - "steady_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - }, - "full_window_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - }, - "steady_wall_ms": { - "median": 18.317985581234097, - "p90": 18.392029451206326, - "min": 18.12548702582717, - "max": 18.47759261727333, - "samples": [ - 18.33830028772354, - 18.334341701120138, - 18.409964628517628, - 18.2941360399127, - 18.27024109661579, - 18.30426510423422, - 18.287232611328363, - 18.313152249902487, - 18.331346102058887, - 18.30290211364627, - 18.251946195960045, - 18.315927125513554, - 18.28779373317957, - 18.291289918124676, - 18.32515373826027, - 18.298673909157515, - 18.390036653727293, - 18.355341162532568, - 18.32004403695464, - 18.322790041565895, - 18.329772632569075, - 18.352546263486147, - 18.47759261727333, - 18.328811042010784, - 18.12548702582717, - 18.16197670996189, - 18.23699800297618, - 18.3531166985631, - 18.452344927936792, - 18.28543981537223 - ] - }, - "steady_event_ms": { - "median": 18.27400016784668, - "p90": 18.347451972961426, - "samples": [ - 18.28441619873047, - 18.28892707824707, - 18.36614418029785, - 18.249919891357422, - 18.225984573364258, - 18.260095596313477, - 18.24412727355957, - 18.268415451049805, - 18.28553581237793, - 18.25814437866211, - 18.208799362182617, - 18.271936416625977, - 18.243839263916016, - 18.24742317199707, - 18.280704498291016, - 18.254623413085938, - 18.345375061035156, - 18.311359405517578, - 18.276063919067383, - 18.276992797851562, - 18.2860164642334, - 18.30886459350586, - 18.433504104614258, - 18.280799865722656, - 18.082496643066406, - 18.118656158447266, - 18.193599700927734, - 18.308927536010742, - 18.408639907836914, - 18.241567611694336 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 72861.11057503149, - 22.67401898279786, - 19.43998970091343, - 19.212170038372278, - 19.010248128324747, - 18.81168270483613, - 18.738504964858294, - 19.09976778551936, - 18.71504122391343 - ], - "event_ms_including_first": [ - 72860.84375, - 22.6396484375, - 19.406591415405273, - 19.179872512817383, - 18.957183837890625, - 18.780704498291016, - 18.707584381103516, - 19.068607330322266, - 18.683008193969727 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/6u/c6uio2mlwplg7clc7ibfabi56lxbruno5mhen4m4uzp6nwjklraw.py" - ], - "routes": [ - { - "sha256": "ad560398cb4675c19ec3c164990e43c33e15b273b8be04f5b766a58cf688ed1b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - }, - "elapsed_s": 77.7641134262085 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_BASE_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 4]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" - } - } - }, - { - "run": "NeoCu_n512_BASE_p1", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 512, - "started": 1792867623.6504543, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "parameter_count": 1124910, - "first_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - }, - "steady_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - }, - "full_window_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - }, - "steady_wall_ms": { - "median": 17.667372012510896, - "p90": 17.74062621407211, - "min": 17.600915860384703, - "max": 17.80840801075101, - "samples": [ - 17.690395936369896, - 17.80840801075101, - 17.75546930730343, - 17.620514146983624, - 17.65201287344098, - 17.67515717074275, - 17.60757900774479, - 17.655158881098032, - 17.645270098000765, - 17.618238925933838, - 17.66325393691659, - 17.645881976932287, - 17.649628221988678, - 17.627327237278223, - 17.691236920654774, - 17.687629908323288, - 17.72604277357459, - 17.600915860384703, - 17.66776293516159, - 17.66538806259632, - 17.716283909976482, - 17.73897698149085, - 17.71177537739277, - 17.728817649185658, - 17.65616098418832, - 17.709962092339993, - 17.6669810898602, - 17.778342124074697, - 17.716303933411837, - 17.655349802225828 - ] - }, - "steady_event_ms": { - "median": 17.622272491455078, - "p90": 17.696124267578124, - "samples": [ - 17.6362247467041, - 17.763967514038086, - 17.711360931396484, - 17.57695960998535, - 17.608543395996094, - 17.6312313079834, - 17.56438446044922, - 17.610944747924805, - 17.601055145263672, - 17.57491111755371, - 17.619136810302734, - 17.602272033691406, - 17.60518455505371, - 17.583295822143555, - 17.64678382873535, - 17.642911911010742, - 17.68230438232422, - 17.557952880859375, - 17.62281608581543, - 17.62063980102539, - 17.672256469726562, - 17.69443130493164, - 17.66819190979004, - 17.68499183654785, - 17.605440139770508, - 17.662208557128906, - 17.621728897094727, - 17.73459243774414, - 17.6724796295166, - 17.605056762695312 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 72186.29837920889, - 20.77224664390087, - 18.459497950971127, - 18.41534487903118, - 18.431926146149635, - 18.287282902747393, - 18.24901020154357, - 18.488393165171146, - 17.995100934058428 - ], - "event_ms_including_first": [ - 72186.03125, - 20.738815307617188, - 18.426143646240234, - 18.382688522338867, - 18.400320053100586, - 18.255712509155273, - 18.216320037841797, - 18.456832885742188, - 17.963520050048828 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/6u/c6uio2mlwplg7clc7ibfabi56lxbruno5mhen4m4uzp6nwjklraw.py" - ], - "routes": [ - { - "sha256": "ad560398cb4675c19ec3c164990e43c33e15b273b8be04f5b766a58cf688ed1b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - }, - "elapsed_s": 77.12511920928955 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_BASE_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 4]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" - } - } - }, - { - "run": "NeoCu_n512_BASE_p2", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 512, - "started": 1792867867.3844774, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "parameter_count": 1124910, - "first_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - }, - "steady_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - }, - "full_window_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - }, - "steady_wall_ms": { - "median": 18.38823826983571, - "p90": 18.475860822945833, - "min": 18.13986385241151, - "max": 18.52780720219016, - "samples": [ - 18.392801750451326, - 18.465058878064156, - 18.453445751219988, - 18.472231924533844, - 18.406438175588846, - 18.405485898256302, - 18.39431608095765, - 18.365620635449886, - 18.318861722946167, - 18.399835098534822, - 18.340272828936577, - 18.35091318935156, - 18.434370867908, - 18.379537388682365, - 18.383674789220095, - 18.52780720219016, - 18.46656110137701, - 18.45242502167821, - 18.41561496257782, - 18.520404119044542, - 18.359658773988485, - 18.344351090490818, - 18.21903418749571, - 18.13986385241151, - 18.178638070821762, - 18.244853243231773, - 18.316116649657488, - 18.246996216475964, - 18.353888764977455, - 18.508520908653736 - ] - }, - "steady_event_ms": { - "median": 18.338736534118652, - "p90": 18.429842948913574, - "samples": [ - 18.33785629272461, - 18.41926383972168, - 18.408512115478516, - 18.42585563659668, - 18.361791610717773, - 18.357759475708008, - 18.3505916595459, - 18.321792602539062, - 18.274911880493164, - 18.35580825805664, - 18.29622459411621, - 18.297183990478516, - 18.390239715576172, - 18.334272384643555, - 18.339616775512695, - 18.473920822143555, - 18.42144012451172, - 18.40732765197754, - 18.370624542236328, - 18.4768009185791, - 18.31603240966797, - 18.299840927124023, - 18.174047470092773, - 18.096607208251953, - 18.134719848632812, - 18.20185661315918, - 18.262048721313477, - 18.20207977294922, - 18.309568405151367, - 18.465728759765625 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 73110.57898681611, - 22.930022794753313, - 19.518358167260885, - 19.446943886578083, - 18.943523056805134, - 18.875043839216232, - 18.82791379466653, - 19.116188399493694, - 18.79234705120325 - ], - "event_ms_including_first": [ - 73110.2890625, - 22.893247604370117, - 19.48627281188965, - 19.414335250854492, - 18.912031173706055, - 18.8437442779541, - 18.796863555908203, - 19.084991455078125, - 18.759967803955078 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/6u/c6uio2mlwplg7clc7ibfabi56lxbruno5mhen4m4uzp6nwjklraw.py" - ], - "routes": [ - { - "sha256": "ad560398cb4675c19ec3c164990e43c33e15b273b8be04f5b766a58cf688ed1b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - }, - "elapsed_s": 78.02004361152649 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_BASE_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 4]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" - } - } - }, - { - "run": "NeoCu_n512_ECS_p0", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 512, - "started": 1792867457.7499602, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "parameter_count": 1124910, - "first_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - }, - "steady_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - }, - "full_window_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - }, - "steady_wall_ms": { - "median": 18.211815506219864, - "p90": 18.391289794817567, - "min": 17.997365444898605, - "max": 1106.9143749773502, - "samples": [ - 18.010188825428486, - 18.19373620674014, - 18.023645039647818, - 18.014458008110523, - 17.997365444898605, - 1106.9143749773502, - 20.081551745533943, - 18.344991840422153, - 18.207772634923458, - 18.228841945528984, - 18.251224886626005, - 18.217341043055058, - 18.523569218814373, - 18.210458103567362, - 18.181913997977972, - 18.207392189651728, - 18.349200021475554, - 18.245574086904526, - 18.13597697764635, - 18.213172908872366, - 18.17457005381584, - 18.1415481492877, - 18.214315176010132, - 18.164009787142277, - 18.192644231021404, - 18.376592081040144, - 18.2407945394516, - 18.249622080475092, - 18.188086338341236, - 18.226868007332087 - ] - }, - "steady_event_ms": { - "median": 18.16551971435547, - "p90": 18.343412017822267, - "samples": [ - 17.958208084106445, - 18.148576736450195, - 17.980512619018555, - 17.96998405456543, - 17.954879760742188, - 1106.85107421875, - 20.033599853515625, - 18.298463821411133, - 18.16214370727539, - 18.16694450378418, - 18.202592849731445, - 18.170368194580078, - 18.47577667236328, - 18.164287567138672, - 18.134944915771484, - 18.160703659057617, - 18.302688598632812, - 18.195423126220703, - 18.089887619018555, - 18.166751861572266, - 18.128799438476562, - 18.096416473388672, - 18.16828727722168, - 18.117311477661133, - 18.14556884765625, - 18.328704833984375, - 18.194751739501953, - 18.202880859375, - 18.142175674438477, - 18.1810245513916 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 72776.37767419219, - 21.621299907565117, - 18.861427903175354, - 18.898597918450832, - 18.638195004314184, - 18.610492814332247, - 18.669976387172937, - 19.048770889639854, - 19.144301768392324 - ], - "event_ms_including_first": [ - 72776.1171875, - 21.588960647583008, - 18.828960418701172, - 18.866527557373047, - 18.60688018798828, - 18.57916831970215, - 18.63849639892578, - 19.017120361328125, - 19.11315155029297 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/ud/cudr6ur5jvxqcfsncjcbz5djez5yz7fne7owy3ysag7ce454f5vc.py" - ], - "routes": [ - { - "sha256": "f837a965b99b1209b4b994c0c27f83a2b75ed59ceb52c5aa605c444e35ee8cfc", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - }, - "elapsed_s": 78.751633644104 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_ECS_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 4]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" - } - } - }, - { - "run": "NeoCu_n512_ECS_p1", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 512, - "started": 1792867540.0730972, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "parameter_count": 1124910, - "first_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - }, - "steady_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - }, - "full_window_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - }, - "steady_wall_ms": { - "median": 18.612637417390943, - "p90": 18.689959635958076, - "min": 18.53156415745616, - "max": 19.176472909748554, - "samples": [ - 18.708318937569857, - 18.92417622730136, - 18.536803778260946, - 19.176472909748554, - 18.66626925766468, - 18.599993083626032, - 18.61316803842783, - 18.667702097445726, - 18.61191587522626, - 18.682449124753475, - 18.62766593694687, - 18.58470495790243, - 18.648494966328144, - 18.612106796354055, - 18.67891289293766, - 18.607608042657375, - 18.687919713556767, - 18.599381670355797, - 18.66298308596015, - 18.607216887176037, - 18.53156415745616, - 18.571450375020504, - 18.600113224238157, - 18.559998366981745, - 18.642824608832598, - 18.640981055796146, - 18.53983011096716, - 18.586016725748777, - 18.643885850906372, - 18.568473868072033 - ] - }, - "steady_event_ms": { - "median": 18.567935943603516, - "p90": 18.642749404907228, - "samples": [ - 18.653663635253906, - 18.87833595275879, - 18.49190330505371, - 19.13100814819336, - 18.621728897094727, - 18.55619239807129, - 18.568607330322266, - 18.62166404724121, - 18.567264556884766, - 18.63759994506836, - 18.582719802856445, - 18.5382080078125, - 18.60259246826172, - 18.566879272460938, - 18.633983612060547, - 18.553119659423828, - 18.641536712646484, - 18.5546875, - 18.613056182861328, - 18.560863494873047, - 18.486656188964844, - 18.526336669921875, - 18.554271697998047, - 18.50713539123535, - 18.598400115966797, - 18.594911575317383, - 18.494720458984375, - 18.541471481323242, - 18.600000381469727, - 18.524415969848633 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 74094.92480102926, - 21.824765019118786, - 19.814377184957266, - 19.52620316296816, - 19.47222091257572, - 19.30387271568179, - 19.29151965305209, - 19.634957890957594, - 19.092875067144632 - ], - "event_ms_including_first": [ - 74094.6484375, - 21.786624908447266, - 19.780736923217773, - 19.492639541625977, - 19.440479278564453, - 19.27187156677246, - 19.258623123168945, - 19.60361671447754, - 19.061599731445312 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/ud/cudr6ur5jvxqcfsncjcbz5djez5yz7fne7owy3ysag7ce454f5vc.py" - ], - "routes": [ - { - "sha256": "f837a965b99b1209b4b994c0c27f83a2b75ed59ceb52c5aa605c444e35ee8cfc", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - }, - "elapsed_s": 79.02699065208435 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_ECS_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 4]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" - } - } - }, - { - "run": "NeoCu_n512_ECS_p2", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 512, - "started": 1792867949.9683478, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "parameter_count": 1124910, - "first_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - }, - "steady_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - }, - "full_window_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - }, - "steady_wall_ms": { - "median": 18.244627164676785, - "p90": 18.353943154215813, - "min": 18.16973090171814, - "max": 18.41383194550872, - "samples": [ - 18.27229466289282, - 18.41383194550872, - 18.274429254233837, - 18.24824931100011, - 18.172265961766243, - 18.241005018353462, - 18.21195101365447, - 18.392482306808233, - 18.26687389984727, - 18.238080199807882, - 18.22703890502453, - 18.349661026149988, - 18.240776378661394, - 18.27320596203208, - 18.27417779713869, - 18.240615259855986, - 18.342216964811087, - 18.234283197671175, - 18.224865198135376, - 18.204757943749428, - 18.217891920357943, - 18.407620023936033, - 18.16973090171814, - 18.25102372094989, - 18.185500986874104, - 18.253889866173267, - 18.189807888120413, - 18.201170954853296, - 18.302041105926037, - 18.269910011440516 - ] - }, - "steady_event_ms": { - "median": 18.201712608337402, - "p90": 18.3113431930542, - "samples": [ - 18.219263076782227, - 18.370080947875977, - 18.231103897094727, - 18.204864501953125, - 18.127519607543945, - 18.19856071472168, - 18.168895721435547, - 18.348928451538086, - 18.222911834716797, - 18.194528579711914, - 18.183616638183594, - 18.307167053222656, - 18.19603157043457, - 18.22991943359375, - 18.23174476623535, - 18.196800231933594, - 18.299072265625, - 18.191200256347656, - 18.18191909790039, - 18.16214370727539, - 18.175296783447266, - 18.357696533203125, - 18.124832153320312, - 18.20729637145996, - 18.142656326293945, - 18.21139144897461, - 18.146560668945312, - 18.158079147338867, - 18.258943557739258, - 18.227008819580078 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 72755.30387600884, - 21.8058992177248, - 18.94325204193592, - 18.9330717548728, - 18.879240844398737, - 18.704912159591913, - 18.703178968280554, - 19.054172094911337, - 18.60086526721716 - ], - "event_ms_including_first": [ - 72755.03125, - 21.772544860839844, - 18.91152000427246, - 18.90163230895996, - 18.84886360168457, - 18.67411231994629, - 18.672576904296875, - 19.024703979492188, - 18.570463180541992 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/ud/cudr6ur5jvxqcfsncjcbz5djez5yz7fne7owy3ysag7ce454f5vc.py" - ], - "routes": [ - { - "sha256": "f837a965b99b1209b4b994c0c27f83a2b75ed59ceb52c5aa605c444e35ee8cfc", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - }, - "elapsed_s": 77.62899470329285 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_ECS_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 4]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" - } - } - }, - { - "run": "NeoCu_n512_TORCH_p0", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 512, - "started": 1792867295.289518, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "parameter_count": 1124910, - "first_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - }, - "steady_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - }, - "full_window_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - }, - "steady_wall_ms": { - "median": 22.892822977155447, - "p90": 22.935968451201916, - "min": 22.840383928269148, - "max": 22.971282247453928, - "samples": [ - 22.88747299462557, - 22.92340062558651, - 22.849021013826132, - 22.85867929458618, - 22.84437185153365, - 22.88222312927246, - 22.948617581278086, - 22.900016978383064, - 22.907831706106663, - 22.924141958355904, - 22.907041013240814, - 22.898653987795115, - 22.8955983184278, - 22.84711692482233, - 22.894937079399824, - 22.888194303959608, - 22.934562992304564, - 22.861343808472157, - 22.95208489522338, - 22.894897032529116, - 22.971282247453928, - 22.90420513600111, - 22.880639880895615, - 22.848539985716343, - 22.876612842082977, - 22.840383928269148, - 22.87767454981804, - 22.89725188165903, - 22.889648098498583, - 22.89074892178178 - ] - }, - "steady_event_ms": { - "median": 22.84966468811035, - "p90": 22.893577003479002, - "samples": [ - 22.83795166015625, - 22.87993621826172, - 22.806047439575195, - 22.81599998474121, - 22.802080154418945, - 22.840192794799805, - 22.905759811401367, - 22.85651206970215, - 22.866592407226562, - 22.88159942626953, - 22.864479064941406, - 22.855487823486328, - 22.85353660583496, - 22.804895401000977, - 22.850976943969727, - 22.845600128173828, - 22.892223358154297, - 22.818143844604492, - 22.909536361694336, - 22.851999282836914, - 22.930688858032227, - 22.861888885498047, - 22.83776092529297, - 22.80588722229004, - 22.830623626708984, - 22.797760009765625, - 22.83577537536621, - 22.854400634765625, - 22.848064422607422, - 22.848352432250977 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 70117.18882713467, - 25.602501817047596, - 23.27850228175521, - 23.24585011228919, - 23.16527906805277, - 23.106747772544622, - 23.09809159487486, - 23.230682127177715, - 22.917850874364376 - ], - "event_ms_including_first": [ - 70116.9453125, - 25.57030487060547, - 23.24732780456543, - 23.214847564697266, - 23.135263442993164, - 23.066944122314453, - 23.06710433959961, - 23.199583053588867, - 22.887327194213867 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/xw/cxwzecc6qbdtcebhdoqewj7neutdlxe2a3yio2tkmh25jtqiyqop.py" - ], - "routes": [ - { - "sha256": "4af81d972bc58c4ae73a0ca23b4cc28878f6fd1e9da40d46de82b6e58a95ee51", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - }, - "elapsed_s": 74.98854279518127 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_TORCH_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 4]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" - } - } - }, - { - "run": "NeoCu_n512_TORCH_p1", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 512, - "started": 1792867705.2509341, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "parameter_count": 1124910, - "first_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - }, - "steady_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - }, - "full_window_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - }, - "steady_wall_ms": { - "median": 22.922137985005975, - "p90": 22.966267308220267, - "min": 22.85027178004384, - "max": 23.669429123401642, - "samples": [ - 22.935573011636734, - 23.019071202725172, - 23.061320651322603, - 23.669429123401642, - 22.960400208830833, - 22.939260117709637, - 22.95264508575201, - 22.95604208484292, - 22.959438152611256, - 22.95206394046545, - 22.907078731805086, - 22.927316837012768, - 22.924942895770073, - 22.919333074241877, - 22.948908153921366, - 22.850933019071817, - 22.902629803866148, - 22.87224307656288, - 22.930022794753313, - 22.862284909933805, - 22.853208240121603, - 22.892601788043976, - 22.867383901029825, - 22.885438054800034, - 22.878075018525124, - 22.866361774504185, - 22.899375297129154, - 22.906949277967215, - 22.937897127121687, - 22.85027178004384 - ] - }, - "steady_event_ms": { - "median": 22.87726402282715, - "p90": 22.921407890319824, - "samples": [ - 22.88003158569336, - 22.972959518432617, - 23.004575729370117, - 23.62505531311035, - 22.915264129638672, - 22.89574432373047, - 22.908479690551758, - 22.91116714477539, - 22.915679931640625, - 22.908096313476562, - 22.86288070678711, - 22.882848739624023, - 22.880159378051758, - 22.874496459960938, - 22.90540885925293, - 22.799488067626953, - 22.859071731567383, - 22.82921600341797, - 22.887487411499023, - 22.812959671020508, - 22.808671951293945, - 22.84899139404297, - 22.823808670043945, - 22.84169578552246, - 22.833984375, - 22.8155517578125, - 22.85590362548828, - 22.863712310791016, - 22.895008087158203, - 22.806655883789062 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 70294.02185184881, - 26.032893918454647, - 23.56678480282426, - 23.409748915582895, - 23.206885904073715, - 23.11225701123476, - 23.071950767189264, - 23.176168091595173, - 22.908932995051146 - ], - "event_ms_including_first": [ - 70293.765625, - 25.997760772705078, - 23.53376007080078, - 23.374719619750977, - 23.175615310668945, - 23.08073616027832, - 23.04115104675293, - 23.145343780517578, - 22.876863479614258 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/xw/cxwzecc6qbdtcebhdoqewj7neutdlxe2a3yio2tkmh25jtqiyqop.py" - ], - "routes": [ - { - "sha256": "4af81d972bc58c4ae73a0ca23b4cc28878f6fd1e9da40d46de82b6e58a95ee51", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - }, - "elapsed_s": 75.17518830299377 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_TORCH_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 4]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" - } - } - }, - { - "run": "NeoCu_n512_TORCH_p2", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 512, - "started": 1792867786.306482, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "5112283825116b0284546585bd96c92c3b630851deb594b804ce039746052fe0", - "parameter_count": 1124910, - "first_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - }, - "steady_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - }, - "full_window_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - }, - "steady_wall_ms": { - "median": 22.897385992109776, - "p90": 22.925185598433018, - "min": 22.827779408544302, - "max": 22.936835885047913, - "samples": [ - 22.843227721750736, - 22.920655086636543, - 22.827779408544302, - 22.88346504792571, - 22.889014799147844, - 22.886049933731556, - 22.90334226563573, - 22.901819087564945, - 22.927457932382822, - 22.936835885047913, - 22.870650980621576, - 22.898081690073013, - 22.910085041075945, - 22.92493311688304, - 22.903141099959612, - 22.91313000023365, - 22.89634896442294, - 22.929311264306307, - 22.92347000911832, - 22.890948224812746, - 22.87294389680028, - 22.890438325703144, - 22.891320288181305, - 22.91719801723957, - 22.92482228949666, - 22.896690294146538, - 22.895346861332655, - 22.86780485883355, - 22.89974596351385, - 22.86582114174962 - ] - }, - "steady_event_ms": { - "median": 22.85347270965576, - "p90": 22.880803108215332, - "samples": [ - 22.792095184326172, - 22.876319885253906, - 22.785343170166016, - 22.838592529296875, - 22.845216751098633, - 22.843456268310547, - 22.857759475708008, - 22.858240127563477, - 22.884096145629883, - 22.893375396728516, - 22.827007293701172, - 22.854272842407227, - 22.86720085144043, - 22.880767822265625, - 22.860288619995117, - 22.86947250366211, - 22.851423263549805, - 22.879167556762695, - 22.879552841186523, - 22.84726333618164, - 22.829599380493164, - 22.84716796875, - 22.84761619567871, - 22.873727798461914, - 22.881120681762695, - 22.852672576904297, - 22.85193634033203, - 22.824735641479492, - 22.856319427490234, - 22.82294464111328 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 70884.1023570858, - 25.712166912853718, - 23.492034059017897, - 23.398166988044977, - 23.375545162707567, - 23.12238607555628, - 23.079876322299242, - 23.163193371146917, - 22.92024390771985 - ], - "event_ms_including_first": [ - 70883.8359375, - 25.677120208740234, - 23.459199905395508, - 23.365983963012695, - 23.344127655029297, - 23.091007232666016, - 23.04924774169922, - 23.13279914855957, - 22.888927459716797 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/xw/cxwzecc6qbdtcebhdoqewj7neutdlxe2a3yio2tkmh25jtqiyqop.py" - ], - "routes": [ - { - "sha256": "4af81d972bc58c4ae73a0ca23b4cc28878f6fd1e9da40d46de82b6e58a95ee51", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - }, - "elapsed_s": 75.75378775596619 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n512_TORCH_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 4]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" - } - } - }, - { - "run": "NeoCu_n96_BASE_p0", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 96, - "started": 1792866539.1190507, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "parameter_count": 1124910, - "first_peak": { - "allocated": 353757184, - "reserved": 381681664 - }, - "steady_peak": { - "allocated": 253004288, - "reserved": 381681664 - }, - "full_window_peak": { - "allocated": 353757184, - "reserved": 381681664 - }, - "steady_wall_ms": { - "median": 18.2525881100446, - "p90": 18.366497196257114, - "min": 18.055355176329613, - "max": 18.594383727759123, - "samples": [ - 18.30186089500785, - 18.466823268681765, - 18.283566925674677, - 18.35784688591957, - 18.337229266762733, - 18.324885051697493, - 18.309385981410742, - 18.444349989295006, - 18.310056999325752, - 18.283015117049217, - 18.594383727759123, - 18.30817386507988, - 18.34722701460123, - 18.19064235314727, - 18.210749607533216, - 18.130717799067497, - 18.28828640282154, - 18.26323801651597, - 18.187676090747118, - 18.055355176329613, - 18.161035142838955, - 18.12184089794755, - 18.1535710580647, - 18.111411947757006, - 18.121459987014532, - 18.12647981569171, - 18.11189204454422, - 18.078660126775503, - 18.241938203573227, - 18.130517564713955 - ] - }, - "steady_event_ms": { - "median": 18.205856323242188, - "p90": 18.32359371185303, - "samples": [ - 18.248767852783203, - 18.420000076293945, - 18.238975524902344, - 18.31500816345215, - 18.292512893676758, - 18.281408309936523, - 18.265535354614258, - 18.400863647460938, - 18.26643180847168, - 18.235807418823242, - 18.550399780273438, - 18.264095306396484, - 18.303071975708008, - 18.147327423095703, - 18.16761589050293, - 18.08732795715332, - 18.244319915771484, - 18.220640182495117, - 18.1463680267334, - 18.012928009033203, - 18.11782455444336, - 18.077791213989258, - 18.110240936279297, - 18.068832397460938, - 18.078176498413086, - 18.083776473999023, - 18.06822395324707, - 18.0361270904541, - 18.191072463989258, - 18.086496353149414 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 125161.26786312088, - 22.437002044171095, - 19.20219138264656, - 18.76116869971156, - 18.53608386591077, - 18.55967892333865, - 18.471370916813612, - 18.91999877989292, - 18.615303095430136 - ], - "event_ms_including_first": [ - 125160.8203125, - 22.404319763183594, - 19.170656204223633, - 18.730592727661133, - 18.50422477722168, - 18.527360916137695, - 18.43961524963379, - 18.88719940185547, - 18.583744049072266 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/jw/cjwxo44m6olwba24ixs7djdmx2dwqskg6n5fbwt27h6toolcflz4.py" - ], - "routes": [ - { - "sha256": "a4f86caeb87b798c89669a0d408b80a7b4c3ef0f9d51db90a8e7482f7c0dc81e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 353757184, - "reserved": 381681664 - }, - "elapsed_s": 130.01547503471375 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_BASE_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 3]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" - } - } - }, - { - "run": "NeoCu_n96_BASE_p1", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 96, - "started": 1792866891.0817494, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "parameter_count": 1124910, - "first_peak": { - "allocated": 252135424, - "reserved": 276824064 - }, - "steady_peak": { - "allocated": 253004288, - "reserved": 276824064 - }, - "full_window_peak": { - "allocated": 253004288, - "reserved": 276824064 - }, - "steady_wall_ms": { - "median": 17.812266247346997, - "p90": 17.855205154046416, - "min": 17.73557160049677, - "max": 17.88619626313448, - "samples": [ - 17.874494194984436, - 17.88619626313448, - 17.802187241613865, - 17.81737618148327, - 17.82352803274989, - 17.783522605895996, - 17.839909065514803, - 17.755790147930384, - 17.873302102088928, - 17.8508791141212, - 17.787570133805275, - 17.803259193897247, - 17.833565827459097, - 17.812867648899555, - 17.76820281520486, - 17.83472904935479, - 17.853194382041693, - 17.80424127355218, - 17.797548789530993, - 17.76667032390833, - 17.73557160049677, - 17.806085292249918, - 17.81166484579444, - 17.84277381375432, - 17.759837675839663, - 17.815823201090097, - 17.837754916399717, - 17.761140130460262, - 17.7989206276834, - 17.81946001574397 - ] - }, - "steady_event_ms": { - "median": 17.768431663513184, - "p90": 17.810738563537598, - "samples": [ - 17.820703506469727, - 17.840896606445312, - 17.757823944091797, - 17.774080276489258, - 17.780256271362305, - 17.73263931274414, - 17.796768188476562, - 17.71161651611328, - 17.829856872558594, - 17.806079864501953, - 17.743616104125977, - 17.757984161376953, - 17.78985595703125, - 17.769472122192383, - 17.724607467651367, - 17.791200637817383, - 17.80963134765625, - 17.759807586669922, - 17.75391960144043, - 17.722240447998047, - 17.69161605834961, - 17.7620792388916, - 17.767391204833984, - 17.799135208129883, - 17.715904235839844, - 17.773056030273438, - 17.793119430541992, - 17.717504501342773, - 17.747264862060547, - 17.775455474853516 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 72694.05121123418, - 20.99112095311284, - 18.221679609268904, - 18.25246773660183, - 18.23822082951665, - 18.211540766060352, - 18.210018053650856, - 18.48170068114996, - 17.939186189323664 - ], - "event_ms_including_first": [ - 72693.78125, - 20.958463668823242, - 18.187744140625, - 18.219104766845703, - 18.20742416381836, - 18.18012809753418, - 18.17750358581543, - 18.44937515258789, - 17.906944274902344 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/jw/cjwxo44m6olwba24ixs7djdmx2dwqskg6n5fbwt27h6toolcflz4.py" - ], - "routes": [ - { - "sha256": "a4f86caeb87b798c89669a0d408b80a7b4c3ef0f9d51db90a8e7482f7c0dc81e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 253004288, - "reserved": 276824064 - }, - "elapsed_s": 77.50719714164734 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_BASE_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 3]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" - } - } - }, - { - "run": "NeoCu_n96_BASE_p2", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 96, - "started": 1792867129.864035, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "parameter_count": 1124910, - "first_peak": { - "allocated": 252135424, - "reserved": 276824064 - }, - "steady_peak": { - "allocated": 253004288, - "reserved": 276824064 - }, - "full_window_peak": { - "allocated": 253004288, - "reserved": 276824064 - }, - "steady_wall_ms": { - "median": 18.15490867011249, - "p90": 18.495408399030566, - "min": 18.03266303613782, - "max": 18.772350158542395, - "samples": [ - 18.12161086127162, - 18.183256965130568, - 18.081325106322765, - 18.226478714495897, - 18.31169007346034, - 18.492050003260374, - 18.064963165670633, - 18.094138707965612, - 18.199958838522434, - 18.165523651987314, - 18.525633960962296, - 18.15652707591653, - 18.153290264308453, - 18.086485099047422, - 18.16946128383279, - 18.425545189529657, - 18.282064236700535, - 18.460742197930813, - 18.772350158542395, - 18.09944910928607, - 18.098536878824234, - 18.082175869494677, - 18.129616044461727, - 18.152489326894283, - 18.485507927834988, - 18.067217897623777, - 18.09883676469326, - 18.03266303613782, - 18.053072039037943, - 18.637255299836397 - ] - }, - "steady_event_ms": { - "median": 18.11190414428711, - "p90": 18.452589225769042, - "samples": [ - 18.072223663330078, - 18.13907241821289, - 18.038400650024414, - 18.183488845825195, - 18.26927947998047, - 18.44918441772461, - 18.022367477416992, - 18.051647186279297, - 18.157791137695312, - 18.12259292602539, - 18.483232498168945, - 18.113759994506836, - 18.110048294067383, - 18.04422378540039, - 18.127487182617188, - 18.38332748413086, - 18.24051284790039, - 18.407424926757812, - 18.72969627380371, - 18.0567684173584, - 18.054527282714844, - 18.03945541381836, - 18.086271286010742, - 18.109567642211914, - 18.443456649780273, - 18.023584365844727, - 18.05683135986328, - 17.990623474121094, - 18.01148796081543, - 18.59401512145996 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 73287.22677007318, - 23.00599729642272, - 19.079610239714384, - 18.580937758088112, - 18.483945168554783, - 18.40545702725649, - 18.355883192270994, - 19.225466065108776, - 18.366402946412563 - ], - "event_ms_including_first": [ - 73286.984375, - 22.974016189575195, - 19.0479679107666, - 18.54924774169922, - 18.452640533447266, - 18.374528884887695, - 18.325536727905273, - 19.195392608642578, - 18.33568000793457 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor/jw/cjwxo44m6olwba24ixs7djdmx2dwqskg6n5fbwt27h6toolcflz4.py" - ], - "routes": [ - { - "sha256": "a4f86caeb87b798c89669a0d408b80a7b4c3ef0f9d51db90a8e7482f7c0dc81e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 253004288, - "reserved": 276824064 - }, - "elapsed_s": 78.20176839828491 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_BASE_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 3]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_BASE/triton" - } - } - }, - { - "run": "NeoCu_n96_ECS_p0", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 96, - "started": 1792866673.485356, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "parameter_count": 1124910, - "first_peak": { - "allocated": 355032576, - "reserved": 381681664 - }, - "steady_peak": { - "allocated": 254369280, - "reserved": 381681664 - }, - "full_window_peak": { - "allocated": 355032576, - "reserved": 381681664 - }, - "steady_wall_ms": { - "median": 18.05932796560228, - "p90": 18.229434173554182, - "min": 17.920701764523983, - "max": 18.29589018598199, - "samples": [ - 18.048191908746958, - 18.25997233390808, - 18.165544141083956, - 18.05718895047903, - 18.03028816357255, - 18.1043678894639, - 18.094750121235847, - 18.083578906953335, - 18.056116998195648, - 18.08545272797346, - 17.993859946727753, - 17.991455271840096, - 18.092957325279713, - 18.253870774060488, - 18.05947395041585, - 17.980793956667185, - 18.126330338418484, - 17.920701764523983, - 18.226718995720148, - 18.11420638114214, - 18.008367158472538, - 18.114868085831404, - 18.074401654303074, - 18.020930234342813, - 18.059181980788708, - 18.036500085145235, - 18.29589018598199, - 18.03492708131671, - 17.964713741093874, - 18.053201027214527 - ] - }, - "steady_event_ms": { - "median": 18.01699161529541, - "p90": 18.186553955078125, - "samples": [ - 17.993375778198242, - 18.21683120727539, - 18.11849594116211, - 18.01420783996582, - 17.987552642822266, - 18.051008224487305, - 18.05241584777832, - 18.04047966003418, - 18.013151168823242, - 18.042848587036133, - 17.952287673950195, - 17.948896408081055, - 18.05072021484375, - 18.21183967590332, - 18.01702308654785, - 17.926528930664062, - 18.075328826904297, - 17.87673568725586, - 18.183744430541992, - 18.072128295898438, - 17.965471267700195, - 18.072799682617188, - 18.032032012939453, - 17.978431701660156, - 18.01696014404297, - 17.994335174560547, - 18.25324821472168, - 17.992799758911133, - 17.92255973815918, - 18.010719299316406 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 124999.46137983352, - 21.61933807656169, - 19.06109508126974, - 18.63762503489852, - 18.410545773804188, - 18.411579076200724, - 18.297291826456785, - 18.916491884738207, - 18.264702055603266 - ], - "event_ms_including_first": [ - 124999.0234375, - 21.587392807006836, - 19.029855728149414, - 18.606176376342773, - 18.379743576049805, - 18.380191802978516, - 18.265087127685547, - 18.88559913635254, - 18.23366355895996 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/4h/c4hekpp7puvv4eisnclzly4a67wlmn6ifgs66uyfe3ajorbh2r37.py" - ], - "routes": [ - { - "sha256": "07137055143eed311a30e993d3f2e2a6b5a8231ea70eb201e6327dd4d1c577ca", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 355032576, - "reserved": 381681664 - }, - "elapsed_s": 129.9509253501892 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_ECS_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 3]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" - } - } - }, - { - "run": "NeoCu_n96_ECS_p1", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 96, - "started": 1792866807.8799531, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "parameter_count": 1124910, - "first_peak": { - "allocated": 254369280, - "reserved": 276824064 - }, - "steady_peak": { - "allocated": 254369280, - "reserved": 276824064 - }, - "full_window_peak": { - "allocated": 254369280, - "reserved": 276824064 - }, - "steady_wall_ms": { - "median": 18.42002896592021, - "p90": 18.69931654073298, - "min": 18.26696516945958, - "max": 25.458539836108685, - "samples": [ - 18.452816642820835, - 18.43767799437046, - 18.585195764899254, - 18.33638595417142, - 18.30923603847623, - 18.368718214333057, - 18.36670283228159, - 18.26696516945958, - 18.360801972448826, - 18.49938416853547, - 18.314866349101067, - 18.403141759335995, - 18.285260070115328, - 18.280199728906155, - 18.5927408747375, - 18.399816006422043, - 18.454558681696653, - 18.373806960880756, - 18.3509043417871, - 18.470620270818472, - 18.48650025203824, - 18.690996803343296, - 18.331187311559916, - 25.458539836108685, - 18.774194177240133, - 18.531133886426687, - 18.782919738441706, - 18.31288170069456, - 18.436916172504425, - 18.466702196747065 - ] - }, - "steady_event_ms": { - "median": 18.377055168151855, - "p90": 18.65590705871582, - "samples": [ - 18.401248931884766, - 18.39379119873047, - 18.542560577392578, - 18.29203224182129, - 18.26643180847168, - 18.326047897338867, - 18.324159622192383, - 18.22425651550293, - 18.317535400390625, - 18.457056045532227, - 18.27110481262207, - 18.360319137573242, - 18.24287986755371, - 18.237184524536133, - 18.550399780273438, - 18.357471466064453, - 18.412832260131836, - 18.330303192138672, - 18.308704376220703, - 18.42870330810547, - 18.4451847076416, - 18.648799896240234, - 18.288896560668945, - 25.41164779663086, - 18.719871520996094, - 18.488096237182617, - 18.74038314819336, - 18.27052879333496, - 18.394432067871094, - 18.42425537109375 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 73966.13098587841, - 21.150733344256878, - 18.985732924193144, - 18.898227717727423, - 18.637234810739756, - 18.83387565612793, - 18.76507606357336, - 19.242098089307547, - 18.691628240048885 - ], - "event_ms_including_first": [ - 73965.84375, - 21.1046085357666, - 18.942880630493164, - 18.864896774291992, - 18.6059513092041, - 18.802751541137695, - 18.734207153320312, - 19.211200714111328, - 18.660831451416016 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/4h/c4hekpp7puvv4eisnclzly4a67wlmn6ifgs66uyfe3ajorbh2r37.py" - ], - "routes": [ - { - "sha256": "07137055143eed311a30e993d3f2e2a6b5a8231ea70eb201e6327dd4d1c577ca", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 254369280, - "reserved": 276824064 - }, - "elapsed_s": 78.82752799987793 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_ECS_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 3]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" - } - } - }, - { - "run": "NeoCu_n96_ECS_p2", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 96, - "started": 1792867212.3552787, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "parameter_count": 1124910, - "first_peak": { - "allocated": 254369280, - "reserved": 276824064 - }, - "steady_peak": { - "allocated": 254369280, - "reserved": 276824064 - }, - "full_window_peak": { - "allocated": 254369280, - "reserved": 276824064 - }, - "steady_wall_ms": { - "median": 18.25942052528262, - "p90": 18.342752382159233, - "min": 18.14140798524022, - "max": 24.475242011249065, - "samples": [ - 18.27394776046276, - 18.253610003739595, - 18.222090788185596, - 18.152920063585043, - 18.14140798524022, - 18.317720852792263, - 18.33716779947281, - 18.29833397641778, - 18.31540698185563, - 18.275862094014883, - 18.233923241496086, - 18.31864332780242, - 18.26031180098653, - 18.207702785730362, - 18.258529249578714, - 18.22104910388589, - 18.332178238779306, - 18.275782000273466, - 24.475242011249065, - 19.1614949144423, - 18.39301362633705, - 18.254262395203114, - 18.25358998030424, - 18.280410207808018, - 18.272005021572113, - 18.222631886601448, - 18.235255032777786, - 18.250545021146536, - 18.222672399133444, - 18.256825860589743 - ] - }, - "steady_event_ms": { - "median": 18.215392112731934, - "p90": 18.29949779510498, - "samples": [ - 18.222400665283203, - 18.209823608398438, - 18.178272247314453, - 18.109600067138672, - 18.09756851196289, - 18.274303436279297, - 18.294048309326172, - 18.252735137939453, - 18.272735595703125, - 18.232511520385742, - 18.190048217773438, - 18.275360107421875, - 18.216575622558594, - 18.165023803710938, - 18.21174430847168, - 18.177536010742188, - 18.28803253173828, - 18.232736587524414, - 24.424287796020508, - 19.117536544799805, - 18.348543167114258, - 18.207775115966797, - 18.20844841003418, - 18.23686408996582, - 18.227584838867188, - 18.17945671081543, - 18.191936492919922, - 18.20742416381836, - 18.179424285888672, - 18.214208602905273 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 73524.60601786152, - 21.9517364166677, - 19.634417723864317, - 19.54106194898486, - 19.091202411800623, - 18.98801699280739, - 18.806023988872766, - 19.159290939569473, - 19.270610995590687 - ], - "event_ms_including_first": [ - 73524.359375, - 21.916608810424805, - 19.601215362548828, - 19.507583618164062, - 19.058975219726562, - 18.956159591674805, - 18.774816513061523, - 19.128032684326172, - 19.238431930541992 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor/4h/c4hekpp7puvv4eisnclzly4a67wlmn6ifgs66uyfe3ajorbh2r37.py" - ], - "routes": [ - { - "sha256": "07137055143eed311a30e993d3f2e2a6b5a8231ea70eb201e6327dd4d1c577ca", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 254369280, - "reserved": 276824064 - }, - "elapsed_s": 78.3978099822998 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_ECS_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 3]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_ECS/triton" - } - } - }, - { - "run": "NeoCu_n96_TORCH_p0", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 96, - "started": 1792866418.8775136, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "parameter_count": 1124910, - "first_peak": { - "allocated": 541384704, - "reserved": 612368384 - }, - "steady_peak": { - "allocated": 440721408, - "reserved": 612368384 - }, - "full_window_peak": { - "allocated": 541384704, - "reserved": 612368384 - }, - "steady_wall_ms": { - "median": 12.44979235343635, - "p90": 12.505908822640777, - "min": 12.361029163002968, - "max": 12.567630037665367, - "samples": [ - 12.482478749006987, - 12.567630037665367, - 12.470546178519726, - 12.463332153856754, - 12.435110285878181, - 12.445228174328804, - 12.361029163002968, - 12.43067067116499, - 12.450830079615116, - 12.485594023019075, - 12.50821677967906, - 12.412496842443943, - 12.489613145589828, - 12.444355990737677, - 12.461820151656866, - 12.444215826690197, - 12.505652382969856, - 12.454716954380274, - 12.421573046594858, - 12.41573179140687, - 12.388390954583883, - 12.431974057108164, - 12.43737293407321, - 12.496405746787786, - 12.395924888551235, - 12.464453931897879, - 12.537562754005194, - 12.488850858062506, - 12.448754627257586, - 12.437152676284313 - ] - }, - "steady_event_ms": { - "median": 12.407487869262695, - "p90": 12.459388732910156, - "samples": [ - 12.431584358215332, - 12.52451229095459, - 12.427712440490723, - 12.421183586120605, - 12.392640113830566, - 12.402912139892578, - 12.314496040344238, - 12.388511657714844, - 12.408512115478516, - 12.435839653015137, - 12.458911895751953, - 12.369152069091797, - 12.446528434753418, - 12.402144432067871, - 12.419232368469238, - 12.40287971496582, - 12.463680267333984, - 12.412511825561523, - 12.379167556762695, - 12.37388801574707, - 12.346688270568848, - 12.390463829040527, - 12.395487785339355, - 12.45315170288086, - 12.354175567626953, - 12.422335624694824, - 12.494784355163574, - 12.439040184020996, - 12.406463623046875, - 12.39516830444336 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 110542.740277946, - 16.50755200535059, - 13.443944975733757, - 13.195997104048729, - 13.04700504988432, - 12.964057736098766, - 12.840835843235254, - 13.223859015852213, - 12.783137150108814 - ], - "event_ms_including_first": [ - 110542.3046875, - 16.47532844543457, - 13.412991523742676, - 13.165311813354492, - 13.015040397644043, - 12.933343887329102, - 12.809760093688965, - 13.192864418029785, - 12.752448081970215 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/gq/cgqxdbomxuzvkjzgxsnxq6b3tjqj7zixfbwmuik2ygdsztydnhbm.py" - ], - "routes": [ - { - "sha256": "93ab40b3e0e376483a7774a65ce47bd9453708174e3b1c36984b719b02af962e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 541384704, - "reserved": 612368384 - }, - "elapsed_s": 114.66392302513123 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_TORCH_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 3]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" - } - } - }, - { - "run": "NeoCu_n96_TORCH_p1", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 96, - "started": 1792866973.129114, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "parameter_count": 1124910, - "first_peak": { - "allocated": 440721408, - "reserved": 507510784 - }, - "steady_peak": { - "allocated": 440721408, - "reserved": 507510784 - }, - "full_window_peak": { - "allocated": 440721408, - "reserved": 507510784 - }, - "steady_wall_ms": { - "median": 12.16584094800055, - "p90": 12.289544334635139, - "min": 12.087733019143343, - "max": 12.381397653371096, - "samples": [ - 12.31651520356536, - 12.350428849458694, - 12.22033379599452, - 12.251412030309439, - 12.163626961410046, - 12.194565031677485, - 12.22738716751337, - 12.190577108412981, - 12.168054934591055, - 12.160911224782467, - 12.213910929858685, - 12.117329053580761, - 12.150090653449297, - 12.12019519880414, - 12.160220183432102, - 12.28654757142067, - 12.1884741820395, - 12.381397653371096, - 12.136856094002724, - 12.211016844958067, - 12.150962837040424, - 12.154819909483194, - 12.087733019143343, - 12.141834944486618, - 12.170229107141495, - 12.144690845161676, - 12.157444842159748, - 12.175919953733683, - 12.116957921534777, - 12.132588308304548 - ] - }, - "steady_event_ms": { - "median": 12.123183727264404, - "p90": 12.24600601196289, - "samples": [ - 12.264639854431152, - 12.30684757232666, - 12.179136276245117, - 12.20473575592041, - 12.120927810668945, - 12.151935577392578, - 12.184320449829102, - 12.14748764038086, - 12.125439643859863, - 12.118047714233398, - 12.171520233154297, - 12.075231552124023, - 12.106623649597168, - 12.077183723449707, - 12.117823600769043, - 12.243935585021973, - 12.145695686340332, - 12.338591575622559, - 12.095232009887695, - 12.167296409606934, - 12.108960151672363, - 12.113056182861328, - 12.045696258544922, - 12.097855567932129, - 12.126655578613281, - 12.101280212402344, - 12.113568305969238, - 12.132927894592285, - 12.074560165405273, - 12.090304374694824 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 68841.95871185511, - 15.612421091645956, - 13.037518132477999, - 12.856676243245602, - 12.687265872955322, - 12.705649714916945, - 12.567258905619383, - 13.023070059716702, - 12.515850830823183 - ], - "event_ms_including_first": [ - 68841.7109375, - 15.57699203491211, - 13.00499153137207, - 12.824992179870605, - 12.654751777648926, - 12.67363166809082, - 12.535743713378906, - 12.991840362548828, - 12.485183715820312 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/gq/cgqxdbomxuzvkjzgxsnxq6b3tjqj7zixfbwmuik2ygdsztydnhbm.py" - ], - "routes": [ - { - "sha256": "93ab40b3e0e376483a7774a65ce47bd9453708174e3b1c36984b719b02af962e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 440721408, - "reserved": 507510784 - }, - "elapsed_s": 72.93481755256653 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_TORCH_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 3]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" - } - } - }, - { - "run": "NeoCu_n96_TORCH_p2", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 96, - "started": 1792867051.3587835, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "bcccu", - "input_sha256": "29518b5c0a9a57444005435bd1a7973bc872b23e45cd7370c3b12ac84bdce2aa", - "parameter_count": 1124910, - "first_peak": { - "allocated": 440721408, - "reserved": 507510784 - }, - "steady_peak": { - "allocated": 440721408, - "reserved": 507510784 - }, - "full_window_peak": { - "allocated": 440721408, - "reserved": 507510784 - }, - "steady_wall_ms": { - "median": 12.232150649651885, - "p90": 12.29708082973957, - "min": 12.1318269520998, - "max": 12.32578232884407, - "samples": [ - 12.279636226594448, - 12.31942092999816, - 12.248367071151733, - 12.219010852277279, - 12.20756908878684, - 12.225052807480097, - 12.170310132205486, - 12.241343036293983, - 12.213040143251419, - 12.236303649842739, - 12.243818026036024, - 12.175559997558594, - 12.194184120744467, - 12.190376874059439, - 12.237896677106619, - 12.230933178216219, - 12.295586057007313, - 12.241143267601728, - 12.310533784329891, - 12.234270107001066, - 12.218751013278961, - 12.1318269520998, - 12.211757246404886, - 12.233368121087551, - 12.208571657538414, - 12.23401864990592, - 12.225062120705843, - 12.32578232884407, - 12.223558966070414, - 12.242996133863926 - ] - }, - "steady_event_ms": { - "median": 12.188799858093262, - "p90": 12.253894424438476, - "samples": [ - 12.230015754699707, - 12.273311614990234, - 12.2041597366333, - 12.175904273986816, - 12.164064407348633, - 12.182304382324219, - 12.126879692077637, - 12.197504043579102, - 12.167136192321777, - 12.193440437316895, - 12.192000389099121, - 12.131808280944824, - 12.151359558105469, - 12.147968292236328, - 12.194592475891113, - 12.187007904052734, - 12.252511978149414, - 12.19820785522461, - 12.266336441040039, - 12.1911039352417, - 12.175423622131348, - 12.088831901550293, - 12.168607711791992, - 12.190591812133789, - 12.16592025756836, - 12.190848350524902, - 12.182016372680664, - 12.282719612121582, - 12.179840087890625, - 12.201567649841309 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 68944.8289591819, - 15.6882144510746, - 13.182169757783413, - 12.85635493695736, - 12.577278073877096, - 12.540017254650593, - 12.452803086489439, - 12.77485117316246, - 12.338676955550909 - ], - "event_ms_including_first": [ - 68944.59375, - 15.652288436889648, - 13.1494722366333, - 12.82419204711914, - 12.545599937438965, - 12.508735656738281, - 12.421952247619629, - 12.743295669555664, - 12.307231903076172 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor/gq/cgqxdbomxuzvkjzgxsnxq6b3tjqj7zixfbwmuik2ygdsztydnhbm.py" - ], - "routes": [ - { - "sha256": "93ab40b3e0e376483a7774a65ce47bd9453708174e3b1c36984b719b02af962e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 440721408, - "reserved": 507510784 - }, - "elapsed_s": 73.024080991745 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/NeoCu_n96_TORCH_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 3]", - "system": "bcccu", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/NeoCu_TORCH/triton" - } - } - }, - { - "run": "Neo_n4096_BASE_p0", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 4096, - "started": 1792865702.8093216, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 1124910, - "first_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - }, - "steady_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - }, - "full_window_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - }, - "steady_wall_ms": { - "median": 156.48052119649947, - "p90": 156.68433769606054, - "min": 156.27337992191315, - "max": 180.99981034174562, - "samples": [ - 156.4929848536849, - 156.68412623926997, - 156.5261883661151, - 156.54564509168267, - 180.99981034174562, - 156.3616869971156, - 156.46844869479537, - 156.40755370259285, - 156.45742788910866, - 156.46160580217838, - 156.49324608966708, - 156.51069907471538, - 156.43191896378994, - 156.39943908900023, - 156.3932471908629, - 156.4072729088366, - 156.6428579390049, - 156.62103705108166, - 156.27337992191315, - 156.49058995768428, - 156.41227271407843, - 156.68624080717564, - 156.83523193001747, - 156.4358277246356, - 156.35444270446897, - 156.6509041003883, - 156.53416281566024, - 156.36695781722665, - 156.49088099598885, - 156.47045243531466 - ] - }, - "steady_event_ms": { - "median": 156.4232635498047, - "p90": 156.62041931152345, - "samples": [ - 156.4088592529297, - 156.63536071777344, - 156.4773406982422, - 156.49842834472656, - 180.95309448242188, - 156.3152618408203, - 156.4231719970703, - 156.3574981689453, - 156.41033935546875, - 156.4054412841797, - 156.4455108642578, - 156.46377563476562, - 156.38592529296875, - 156.3533172607422, - 156.3461456298828, - 156.3600311279297, - 156.59510803222656, - 156.57469177246094, - 156.22650146484375, - 156.44320678710938, - 156.365478515625, - 156.61875915527344, - 156.78822326660156, - 156.38771057128906, - 156.30796813964844, - 156.6031036376953, - 156.48345947265625, - 156.32025146484375, - 156.43820190429688, - 156.42335510253906 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 72919.18353596702, - 163.6372678913176, - 156.97519574314356, - 156.7812287248671, - 156.44078701734543, - 156.77533810958266, - 156.83727571740746, - 157.3728071525693, - 158.71155494824052 - ], - "event_ms_including_first": [ - 72918.9375, - 163.5992889404297, - 156.94029235839844, - 156.7470703125, - 156.4081573486328, - 156.74281311035156, - 156.8046112060547, - 157.32684326171875, - 158.67808532714844 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/r6/cr6523viczcwtkqd6oor5bw7nyliqlvjtwxnahabcibuwpe6z5tj.py" - ], - "routes": [ - { - "sha256": "b1e59a2969372a19fc391246c26d59c7425ec24133f0006f48af837acd05af1b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - }, - "elapsed_s": 88.49972105026245 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_BASE_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" - } - } - }, - { - "run": "Neo_n4096_BASE_p1", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 4096, - "started": 1792865980.8284543, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 1124910, - "first_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - }, - "steady_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - }, - "full_window_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - }, - "steady_wall_ms": { - "median": 156.51258709840477, - "p90": 156.65167407132685, - "min": 156.34719002991915, - "max": 157.37557178363204, - "samples": [ - 156.48639295250177, - 156.40126168727875, - 157.37557178363204, - 156.51047928258777, - 156.50014905259013, - 156.42337314784527, - 156.63987258449197, - 156.5129728987813, - 156.41803294420242, - 156.57644299790263, - 156.54038544744253, - 156.54217824339867, - 156.53499495238066, - 156.34719002991915, - 156.50896495208144, - 156.52673924341798, - 156.5152476541698, - 156.51220129802823, - 156.56592324376106, - 156.5523878671229, - 156.4616858959198, - 156.61648893728852, - 156.76603093743324, - 156.7462533712387, - 156.46365005522966, - 156.47027222439647, - 156.4549128524959, - 156.47445106878877, - 156.50980733335018, - 156.64116526022553 - ] - }, - "steady_event_ms": { - "median": 156.4656524658203, - "p90": 156.60491638183595, - "samples": [ - 156.42633056640625, - 156.35235595703125, - 157.32733154296875, - 156.46006774902344, - 156.4536895751953, - 156.37660217285156, - 156.58755493164062, - 156.46560668945312, - 156.3600311279297, - 156.5286407470703, - 156.49356079101562, - 156.4903106689453, - 156.4878387451172, - 156.3013458251953, - 156.46217346191406, - 156.48028564453125, - 156.468994140625, - 156.4656982421875, - 156.51670837402344, - 156.50588989257812, - 156.4041290283203, - 156.5674285888672, - 156.71839904785156, - 156.69923400878906, - 156.4186248779297, - 156.4247283935547, - 156.4083251953125, - 156.42930603027344, - 156.4633331298828, - 156.5944366455078 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 72625.17619831488, - 162.52721101045609, - 156.78396495059133, - 156.6762919537723, - 156.45836992189288, - 156.52647893875837, - 156.5912808291614, - 156.69818269088864, - 157.04721212387085 - ], - "event_ms_including_first": [ - 72624.8671875, - 162.4931182861328, - 156.750244140625, - 156.64230346679688, - 156.42697143554688, - 156.49395751953125, - 156.559814453125, - 156.6663055419922, - 157.01309204101562 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/r6/cr6523viczcwtkqd6oor5bw7nyliqlvjtwxnahabcibuwpe6z5tj.py" - ], - "routes": [ - { - "sha256": "b1e59a2969372a19fc391246c26d59c7425ec24133f0006f48af837acd05af1b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - }, - "elapsed_s": 88.19822382926941 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_BASE_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" - } - } - }, - { - "run": "Neo_n4096_BASE_p2", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 4096, - "started": 1792866230.3832273, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 1124910, - "first_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - }, - "steady_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - }, - "full_window_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - }, - "steady_wall_ms": { - "median": 156.61568753421307, - "p90": 157.58409621194005, - "min": 156.36457316577435, - "max": 1344.7500169277191, - "samples": [ - 1344.7500169277191, - 158.23369286954403, - 156.68727178126574, - 156.466334592551, - 156.56048292294145, - 156.51642996817827, - 156.59921569749713, - 156.45963186398149, - 156.66951797902584, - 156.6830649971962, - 156.72752866521478, - 156.44518472254276, - 157.2590721771121, - 158.8391768746078, - 156.85077104717493, - 156.49727312847972, - 156.5148658119142, - 156.53574606403708, - 156.44299099221826, - 156.68206196278334, - 156.36457316577435, - 156.44990280270576, - 156.5282312221825, - 156.46951086819172, - 156.43609780818224, - 156.632159370929, - 156.8234101869166, - 157.5119188055396, - 156.77065029740334, - 156.64127469062805 - ] - }, - "steady_event_ms": { - "median": 156.56343841552734, - "p90": 157.5366943359375, - "samples": [ - 1344.668701171875, - 158.18348693847656, - 156.63885498046875, - 156.418212890625, - 156.5122528076172, - 156.46937561035156, - 156.5511016845703, - 156.40982055664062, - 156.6222686767578, - 156.62506103515625, - 156.67913818359375, - 156.39779663085938, - 157.1939239501953, - 158.78909301757812, - 156.8037109375, - 156.44908142089844, - 156.46719360351562, - 156.4883270263672, - 156.39523315429688, - 156.62623596191406, - 156.31829833984375, - 156.4033966064453, - 156.47958374023438, - 156.42166137695312, - 156.3896942138672, - 156.57577514648438, - 156.77325439453125, - 157.46482849121094, - 156.72409057617188, - 156.59481811523438 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 73097.5666618906, - 163.44412276521325, - 156.77008870989084, - 156.45608631893992, - 156.49416809901595, - 156.8271261639893, - 156.59832395613194, - 156.83517092838883, - 156.5969018265605 - ], - "event_ms_including_first": [ - 73097.3125, - 163.4073944091797, - 156.73651123046875, - 156.42153930664062, - 156.4615936279297, - 156.791259765625, - 156.5655975341797, - 156.80108642578125, - 156.56285095214844 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/r6/cr6523viczcwtkqd6oor5bw7nyliqlvjtwxnahabcibuwpe6z5tj.py" - ], - "routes": [ - { - "sha256": "b1e59a2969372a19fc391246c26d59c7425ec24133f0006f48af837acd05af1b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - }, - "elapsed_s": 89.87030506134033 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_BASE_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" - } - } - }, - { - "run": "Neo_n4096_ECS_p0", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 4096, - "started": 1792865795.6343956, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 1124910, - "first_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "steady_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "full_window_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "steady_wall_ms": { - "median": 156.5818835515529, - "p90": 156.71164304949343, - "min": 156.37402143329382, - "max": 156.75293607637286, - "samples": [ - 156.66262479498982, - 156.39801556244493, - 156.44815005362034, - 156.42081899568439, - 156.53929160907865, - 156.4436717890203, - 156.4604239538312, - 156.41044033691287, - 156.72230813652277, - 156.52682911604643, - 156.55572386458516, - 156.53176791965961, - 156.6477078013122, - 156.43646894022822, - 156.60134004428983, - 156.66048182174563, - 156.64891991764307, - 156.63161734119058, - 156.70381393283606, - 156.37402143329382, - 156.6304750740528, - 156.67587099596858, - 156.51614917442203, - 156.71997424215078, - 156.7107173614204, - 156.50030924007297, - 156.75293607637286, - 156.5973130054772, - 156.5664540976286, - 156.7012188024819 - ] - }, - "steady_event_ms": { - "median": 156.5336456298828, - "p90": 156.66429748535157, - "samples": [ - 156.59085083007812, - 156.3494415283203, - 156.40159606933594, - 156.3741455078125, - 156.49375915527344, - 156.39718627929688, - 156.41481018066406, - 156.36338806152344, - 156.67372131347656, - 156.48089599609375, - 156.50067138671875, - 156.4839324951172, - 156.6015625, - 156.39065551757812, - 156.55506896972656, - 156.61404418945312, - 156.60269165039062, - 156.5839080810547, - 156.6575927734375, - 156.3271026611328, - 156.58367919921875, - 156.62921142578125, - 156.46563720703125, - 156.6727294921875, - 156.66336059570312, - 156.45298767089844, - 156.70594787597656, - 156.54806518554688, - 156.51922607421875, - 156.65481567382812 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 72474.02952983975, - 162.12231665849686, - 156.97010699659586, - 156.8793347105384, - 156.52658883482218, - 156.60702995955944, - 156.68534906581044, - 156.8877911195159, - 156.5409661270678 - ], - "event_ms_including_first": [ - 72473.734375, - 162.08595275878906, - 156.9364776611328, - 156.8465576171875, - 156.49481201171875, - 156.5738525390625, - 156.6517791748047, - 156.8561553955078, - 156.50665283203125 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/kf/ckf3pureuhkwfcery5lodm2gfxvh7xcqriovtuw2vtaeiqpi2svo.py" - ], - "routes": [ - { - "sha256": "141f28b0d52d57cb774d03932d92a61acb12636892cb98c78cc00bb0e8ed2c97", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "elapsed_s": 88.00500774383545 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_ECS_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" - } - } - }, - { - "run": "Neo_n4096_ECS_p1", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 4096, - "started": 1792865887.9604423, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 1124910, - "first_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "steady_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "full_window_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "steady_wall_ms": { - "median": 156.59486246295273, - "p90": 156.8413075990975, - "min": 156.38881782069802, - "max": 156.96907509118319, - "samples": [ - 156.64710570126772, - 156.53442312031984, - 156.96907509118319, - 156.69254213571548, - 156.5653719007969, - 156.55346028506756, - 156.76632104441524, - 156.38881782069802, - 156.564530916512, - 156.49400698021054, - 156.8362140096724, - 156.5952580422163, - 156.59446688368917, - 156.51406534016132, - 156.6105978563428, - 156.48541087284684, - 156.49956790730357, - 156.69695101678371, - 156.7459129728377, - 156.59557888284326, - 156.53866110369563, - 156.88714990392327, - 156.9039011374116, - 156.54865093529224, - 156.5403752028942, - 156.50627994909883, - 156.78639896214008, - 156.68566897511482, - 156.53224010020494, - 156.61657880991697 - ] - }, - "steady_event_ms": { - "median": 156.52971649169922, - "p90": 156.79306640625, - "samples": [ - 156.56207275390625, - 156.4817352294922, - 156.92051696777344, - 156.64463806152344, - 156.51766967773438, - 156.5070343017578, - 156.47705078125, - 156.33990478515625, - 156.51702880859375, - 156.4370574951172, - 156.78982543945312, - 156.54176330566406, - 156.54640197753906, - 156.4666290283203, - 156.55410766601562, - 156.43807983398438, - 156.45018005371094, - 156.64991760253906, - 156.69830322265625, - 156.54786682128906, - 156.4911651611328, - 156.82223510742188, - 156.85494995117188, - 156.50111389160156, - 156.4935302734375, - 156.4580535888672, - 156.72988891601562, - 156.6381072998047, - 156.48512268066406, - 156.56661987304688 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 73057.99957504496, - 162.91738906875253, - 157.27915009483695, - 156.7848757840693, - 156.6492598503828, - 156.94780414924026, - 156.67544025927782, - 156.73310915008187, - 156.59383591264486 - ], - "event_ms_including_first": [ - 73057.6953125, - 162.87954711914062, - 157.24525451660156, - 156.74937438964844, - 156.61753845214844, - 156.9153594970703, - 156.64332580566406, - 156.69725036621094, - 156.56063842773438 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/kf/ckf3pureuhkwfcery5lodm2gfxvh7xcqriovtuw2vtaeiqpi2svo.py" - ], - "routes": [ - { - "sha256": "141f28b0d52d57cb774d03932d92a61acb12636892cb98c78cc00bb0e8ed2c97", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "elapsed_s": 88.61730241775513 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_ECS_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" - } - } - }, - { - "run": "Neo_n4096_ECS_p2", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 4096, - "started": 1792866323.932033, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 1124910, - "first_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "steady_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "full_window_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "steady_wall_ms": { - "median": 156.6487962845713, - "p90": 156.7776191048324, - "min": 156.477278098464, - "max": 157.0051652379334, - "samples": [ - 156.77719423547387, - 156.51274472475052, - 156.66113514453173, - 156.74181701615453, - 156.59493021667004, - 156.72515612095594, - 156.64956299588084, - 156.477278098464, - 156.72873333096504, - 156.55704773962498, - 156.576634850353, - 156.7336223088205, - 156.6645009443164, - 156.69835498556495, - 156.64508426561952, - 156.61507798358798, - 157.0051652379334, - 156.6960709169507, - 156.64802957326174, - 156.5972939133644, - 156.66799806058407, - 156.63412399590015, - 156.63166902959347, - 156.65755793452263, - 156.86173411086202, - 156.63350280374289, - 156.78144292905927, - 156.5991980023682, - 156.63955500349402, - 156.63405368104577 - ] - }, - "steady_event_ms": { - "median": 156.60116577148438, - "p90": 156.7186264038086, - "samples": [ - 156.7169952392578, - 156.463623046875, - 156.61053466796875, - 156.6940155029297, - 156.54873657226562, - 156.67759704589844, - 156.60159301757812, - 156.43043518066406, - 156.68199157714844, - 156.5086669921875, - 156.53033447265625, - 156.6855926513672, - 156.61561584472656, - 156.65142822265625, - 156.59642028808594, - 156.56585693359375, - 156.9588165283203, - 156.64944458007812, - 156.60073852539062, - 156.5503387451172, - 156.6221466064453, - 156.58790588378906, - 156.58316040039062, - 156.6096954345703, - 156.81398010253906, - 156.58642578125, - 156.73330688476562, - 156.5517120361328, - 156.59228515625, - 156.58761596679688 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 75028.39578595012, - 162.30412386357784, - 157.16205164790154, - 157.01185772195458, - 156.62314370274544, - 156.98825288563967, - 156.85709472745657, - 156.8092447705567, - 156.71858424320817 - ], - "event_ms_including_first": [ - 75028.0703125, - 162.2689208984375, - 157.129150390625, - 156.9792022705078, - 156.59071350097656, - 156.9549102783203, - 156.8251495361328, - 156.7770233154297, - 156.68704223632812 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/kf/ckf3pureuhkwfcery5lodm2gfxvh7xcqriovtuw2vtaeiqpi2svo.py" - ], - "routes": [ - { - "sha256": "141f28b0d52d57cb774d03932d92a61acb12636892cb98c78cc00bb0e8ed2c97", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "elapsed_s": 90.64900159835815 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_ECS_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" - } - } - }, - { - "run": "Neo_n4096_TORCH_p0", - "result": { - "status": "oom", - "mode": "TORCH", - "n_atoms": 4096, - "started": 1792865623.9983976, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 1124910, - "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/7p/c7pndtfxe3mrtfgixzsmsf3r355pce3qwesz5k6bbekdcu6zibmr.py\", line 21401, in call\n buf200 = empty_strided_cuda((2, s29, 10, 32), (320*s29, 320, 32, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 1.54 GiB. GPU 0 has a total capacity of 31.36 GiB of which 441.06 MiB is free. Including non-PyTorch memory, this process has 30.89 GiB memory in use. Of the allocated memory 30.08 GiB is allocated by PyTorch, and 131.51 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", - "partial_arrays": 0, - "complete_peak": { - "allocated": 32302947328, - "reserved": 32440844288 - }, - "elapsed_s": 73.36892628669739 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_TORCH_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" - } - } - }, - { - "run": "Neo_n4096_TORCH_p1", - "result": { - "status": "oom", - "mode": "TORCH", - "n_atoms": 4096, - "started": 1792866073.2576334, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 1124910, - "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/7p/c7pndtfxe3mrtfgixzsmsf3r355pce3qwesz5k6bbekdcu6zibmr.py\", line 21401, in call\n buf200 = empty_strided_cuda((2, s29, 10, 32), (320*s29, 320, 32, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 1.54 GiB. GPU 0 has a total capacity of 31.36 GiB of which 441.06 MiB is free. Including non-PyTorch memory, this process has 30.89 GiB memory in use. Of the allocated memory 30.08 GiB is allocated by PyTorch, and 131.51 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", - "partial_arrays": 0, - "complete_peak": { - "allocated": 32302947328, - "reserved": 32440844288 - }, - "elapsed_s": 73.83922123908997 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_TORCH_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" - } - } - }, - { - "run": "Neo_n4096_TORCH_p2", - "result": { - "status": "oom", - "mode": "TORCH", - "n_atoms": 4096, - "started": 1792866152.7280385, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "parameter_count": 1124910, - "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/7p/c7pndtfxe3mrtfgixzsmsf3r355pce3qwesz5k6bbekdcu6zibmr.py\", line 21401, in call\n buf200 = empty_strided_cuda((2, s29, 10, 32), (320*s29, 320, 32, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 1.54 GiB. GPU 0 has a total capacity of 31.36 GiB of which 441.06 MiB is free. Including non-PyTorch memory, this process has 30.89 GiB memory in use. Of the allocated memory 30.08 GiB is allocated by PyTorch, and 131.51 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", - "partial_arrays": 0, - "complete_peak": { - "allocated": 32302947328, - "reserved": 32440844288 - }, - "elapsed_s": 71.68084454536438 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n4096_TORCH_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" - } - } - }, - { - "run": "Neo_n512_BASE_p0", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 512, - "started": 1792864963.3391845, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 1124910, - "first_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - }, - "steady_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - }, - "full_window_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - }, - "steady_wall_ms": { - "median": 23.472956148907542, - "p90": 23.53168581612408, - "min": 23.415828123688698, - "max": 23.588123731315136, - "samples": [ - 23.44526443630457, - 23.490979801863432, - 23.45575299113989, - 23.56627117842436, - 23.50505581125617, - 23.473205976188183, - 23.472304921597242, - 23.487943690270185, - 23.465191014111042, - 23.47711380571127, - 23.45324819907546, - 23.428662214428186, - 23.464810103178024, - 23.43367226421833, - 23.47173308953643, - 23.509524762630463, - 23.530895356088877, - 23.538799956440926, - 23.48811412230134, - 23.491802159696817, - 23.415828123688698, - 23.46716495230794, - 23.431536741554737, - 23.483484983444214, - 23.466393817216158, - 23.4727063216269, - 23.44946190714836, - 23.474459070712328, - 23.483396042138338, - 23.588123731315136 - ] - }, - "steady_event_ms": { - "median": 23.42742347717285, - "p90": 23.485471534729005, - "samples": [ - 23.391136169433594, - 23.444608688354492, - 23.410879135131836, - 23.520832061767578, - 23.46009635925293, - 23.427104949951172, - 23.42767906188965, - 23.443296432495117, - 23.420576095581055, - 23.431968688964844, - 23.40892791748047, - 23.382368087768555, - 23.419776916503906, - 23.38934326171875, - 23.427040100097656, - 23.46460723876953, - 23.484447479248047, - 23.494688034057617, - 23.444448471069336, - 23.448192596435547, - 23.37107276916504, - 23.42233657836914, - 23.38684844970703, - 23.43846321105957, - 23.42051124572754, - 23.427167892456055, - 23.403488159179688, - 23.428863525390625, - 23.438688278198242, - 23.544544219970703 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 71574.58715187386, - 27.03565265983343, - 24.624940939247608, - 24.257296696305275, - 23.898229002952576, - 23.94630992785096, - 24.055976886302233, - 24.18797602877021, - 23.861099034547806 - ], - "event_ms_including_first": [ - 71574.34375, - 27.000703811645508, - 24.591487884521484, - 24.22377586364746, - 23.86684799194336, - 23.913984298706055, - 24.024608612060547, - 24.155616760253906, - 23.828832626342773 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/sx/csxsithsb5hcw7sqhfteh7w2yqxh3eqhd7dcadrbwxnksvqhwnot.py" - ], - "routes": [ - { - "sha256": "558e1a55ec953d53c9330d7b3d7a2343737d1dde28f8be25a60848d4af3f0a46", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - }, - "elapsed_s": 76.845778465271 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_BASE_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" - } - } - }, - { - "run": "Neo_n512_BASE_p1", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 512, - "started": 1792865211.682315, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 1124910, - "first_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - }, - "steady_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - }, - "full_window_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - }, - "steady_wall_ms": { - "median": 23.83947791531682, - "p90": 24.04231270775199, - "min": 23.7435270100832, - "max": 24.237079080194235, - "samples": [ - 24.195801001042128, - 23.84970709681511, - 23.74483970925212, - 23.76331388950348, - 23.92103197053075, - 23.79600564017892, - 23.776068352162838, - 23.7435270100832, - 23.783071897923946, - 23.79114693030715, - 24.237079080194235, - 24.103736970573664, - 23.811515420675278, - 23.782679811120033, - 23.963171988725662, - 23.809561040252447, - 23.903719149529934, - 23.752031847834587, - 23.762923199683428, - 23.855377919971943, - 23.85222213342786, - 23.837423883378506, - 23.9456077106297, - 23.823988158255816, - 23.841531947255135, - 23.795364890247583, - 23.87268142774701, - 24.035487789660692, - 23.968761786818504, - 23.927454371005297 - ] - }, - "steady_event_ms": { - "median": 23.795791625976562, - "p90": 23.997990608215332, - "samples": [ - 24.141759872436523, - 23.804672241210938, - 23.70025634765625, - 23.719392776489258, - 23.878080368041992, - 23.751935958862305, - 23.730592727661133, - 23.698240280151367, - 23.73923110961914, - 23.747615814208984, - 24.193248748779297, - 24.059968948364258, - 23.768415451049805, - 23.7391357421875, - 23.91904067993164, - 23.76531219482422, - 23.860511779785156, - 23.708480834960938, - 23.718847274780273, - 23.81158447265625, - 23.80847930908203, - 23.79417610168457, - 23.90131187438965, - 23.779743194580078, - 23.797407150268555, - 23.750656127929688, - 23.82841682434082, - 23.991104125976562, - 23.924320220947266, - 23.883359909057617 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 73439.61009802297, - 27.57379040122032, - 24.418822024017572, - 24.324122816324234, - 24.22081772238016, - 24.330175016075373, - 24.16901011019945, - 24.512238800525665, - 24.036178831011057 - ], - "event_ms_including_first": [ - 73439.3828125, - 27.539936065673828, - 24.386783599853516, - 24.291296005249023, - 24.188703536987305, - 24.299232482910156, - 24.137983322143555, - 24.47964859008789, - 24.003103256225586 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/sx/csxsithsb5hcw7sqhfteh7w2yqxh3eqhd7dcadrbwxnksvqhwnot.py" - ], - "routes": [ - { - "sha256": "558e1a55ec953d53c9330d7b3d7a2343737d1dde28f8be25a60848d4af3f0a46", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - }, - "elapsed_s": 78.7138307094574 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_BASE_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" - } - } - }, - { - "run": "Neo_n512_BASE_p2", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 512, - "started": 1792865459.376957, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 1124910, - "first_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - }, - "steady_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - }, - "full_window_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - }, - "steady_wall_ms": { - "median": 23.391558090224862, - "p90": 23.42084739357233, - "min": 23.34288600832224, - "max": 23.431914392858744, - "samples": [ - 23.39491480961442, - 23.404292296618223, - 23.358074948191643, - 23.36060907691717, - 23.431914392858744, - 23.365408182144165, - 23.420703131705523, - 23.39923195540905, - 23.422145750373602, - 23.38790101930499, - 23.35849590599537, - 23.42562237754464, - 23.37529743090272, - 23.374454583972692, - 23.393311072140932, - 23.37321313098073, - 23.396738339215517, - 23.380836937576532, - 23.393000941723585, - 23.36246194317937, - 23.34288600832224, - 23.398820776492357, - 23.387981113046408, - 23.35974806919694, - 23.39581586420536, - 23.39011523872614, - 23.40599475428462, - 23.40649627149105, - 23.40696705505252, - 23.36644008755684 - ] - }, - "steady_event_ms": { - "median": 23.345104217529297, - "p90": 23.370797157287598, - "samples": [ - 23.34102439880371, - 23.359264373779297, - 23.31443214416504, - 23.317184448242188, - 23.38764762878418, - 23.32156753540039, - 23.376384735107422, - 23.350847244262695, - 23.370176315307617, - 23.3437442779541, - 23.31609535217285, - 23.381824493408203, - 23.332191467285156, - 23.329856872558594, - 23.349695205688477, - 23.32931137084961, - 23.35296058654785, - 23.337631225585938, - 23.349023818969727, - 23.319488525390625, - 23.300416946411133, - 23.354719161987305, - 23.343616485595703, - 23.31065559387207, - 23.352224349975586, - 23.346464157104492, - 23.36288070678711, - 23.361984252929688, - 23.361600875854492, - 23.323583602905273 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 72196.17018988356, - 26.458889711648226, - 23.73197115957737, - 23.804357275366783, - 23.67665572091937, - 23.56088673695922, - 23.60380906611681, - 23.753772024065256, - 23.454366251826286 - ], - "event_ms_including_first": [ - 72195.9296875, - 26.426719665527344, - 23.699935913085938, - 23.771455764770508, - 23.645408630371094, - 23.523935317993164, - 23.573440551757812, - 23.7225284576416, - 23.42310333251953 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/sx/csxsithsb5hcw7sqhfteh7w2yqxh3eqhd7dcadrbwxnksvqhwnot.py" - ], - "routes": [ - { - "sha256": "558e1a55ec953d53c9330d7b3d7a2343737d1dde28f8be25a60848d4af3f0a46", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - }, - "elapsed_s": 77.46324419975281 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_BASE_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" - } - } - }, - { - "run": "Neo_n512_ECS_p0", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 512, - "started": 1792865044.7561097, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 1124910, - "first_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "steady_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "full_window_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "steady_wall_ms": { - "median": 23.730306420475245, - "p90": 23.828300880268216, - "min": 23.64894887432456, - "max": 24.083248805254698, - "samples": [ - 23.926242254674435, - 23.769135121256113, - 23.716966155916452, - 23.68405507877469, - 23.749207612127066, - 23.748505860567093, - 23.704172112047672, - 23.769275285303593, - 23.654748685657978, - 23.69773108512163, - 23.74044107273221, - 23.67904456332326, - 23.71512306854129, - 23.722195997834206, - 23.738416843116283, - 23.89515284448862, - 23.79456302151084, - 23.76632997766137, - 23.79430178552866, - 23.69840070605278, - 23.705284111201763, - 23.67494674399495, - 23.67599867284298, - 23.820872884243727, - 23.66591989994049, - 23.805614095181227, - 23.751401342451572, - 24.083248805254698, - 23.64894887432456, - 23.694223258644342 - ] - }, - "steady_event_ms": { - "median": 23.685407638549805, - "p90": 23.77716407775879, - "samples": [ - 23.873632431030273, - 23.724639892578125, - 23.67318344116211, - 23.64041519165039, - 23.705280303955078, - 23.704832077026367, - 23.660255432128906, - 23.724224090576172, - 23.61155128479004, - 23.65452766418457, - 23.697792053222656, - 23.63590431213379, - 23.670368194580078, - 23.679519653320312, - 23.691295623779297, - 23.85215950012207, - 23.75200080871582, - 23.723039627075195, - 23.750751495361328, - 23.654783248901367, - 23.66227149963379, - 23.632320404052734, - 23.63315200805664, - 23.768831253051758, - 23.622623443603516, - 23.76211166381836, - 23.70800018310547, - 24.039871215820312, - 23.606624603271484, - 23.65068817138672 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 74371.19716638699, - 26.240242179483175, - 24.193615652620792, - 24.158751126378775, - 24.06575484201312, - 24.18988011777401, - 24.044093675911427, - 24.32574611157179, - 23.887699004262686 - ], - "event_ms_including_first": [ - 74370.9609375, - 26.20854377746582, - 24.161760330200195, - 24.125919342041016, - 24.034879684448242, - 24.158815383911133, - 24.014272689819336, - 24.295391082763672, - 23.856447219848633 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/m2/cm2w6le275rcokfq5ek6qcfmj7nwxnjs7zsbx26lirbhof7x6oyk.py" - ], - "routes": [ - { - "sha256": "19c8da1d296e6ef073a8c0800d9b41638ef7f3a5b42cce1002a98687e067bb11", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "elapsed_s": 79.71142411231995 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_ECS_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" - } - } - }, - { - "run": "Neo_n512_ECS_p1", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 512, - "started": 1792865128.688177, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 1124910, - "first_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "steady_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "full_window_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "steady_wall_ms": { - "median": 23.494862718507648, - "p90": 23.648257786408067, - "min": 23.448830004781485, - "max": 23.97965220734477, - "samples": [ - 23.470160085707903, - 23.56250397861004, - 23.463848046958447, - 23.675858974456787, - 23.53673567995429, - 23.448830004781485, - 23.546825163066387, - 23.465432226657867, - 23.533360101282597, - 23.469279054552317, - 23.51085701957345, - 23.485729936510324, - 23.482013028115034, - 23.47933780401945, - 23.49845413118601, - 23.645190987735987, - 23.684334941208363, - 23.491591215133667, - 23.97965220734477, - 23.485048674046993, - 23.470299784094095, - 23.503654170781374, - 23.50792195647955, - 23.471523076295853, - 23.50022690370679, - 23.476953152567148, - 23.47791474312544, - 23.498134221881628, - 23.625674191862345, - 23.4786169603467 - ] - }, - "steady_event_ms": { - "median": 23.44976043701172, - "p90": 23.58700771331787, - "samples": [ - 23.41747283935547, - 23.51750373840332, - 23.42006492614746, - 23.630783081054688, - 23.49247932434082, - 23.405439376831055, - 23.503007888793945, - 23.42086410522461, - 23.49020767211914, - 23.425472259521484, - 23.467071533203125, - 23.44233512878418, - 23.438304901123047, - 23.435935974121094, - 23.4550724029541, - 23.581247329711914, - 23.64022445678711, - 23.4486083984375, - 23.936063766479492, - 23.441823959350586, - 23.426624298095703, - 23.459840774536133, - 23.46451187133789, - 23.42643165588379, - 23.456287384033203, - 23.432832717895508, - 23.43414306640625, - 23.450912475585938, - 23.582143783569336, - 23.435359954833984 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 73498.66676004604, - 26.35693224146962, - 24.461843073368073, - 24.213985074311495, - 24.02117196470499, - 23.84860534220934, - 24.056208319962025, - 24.16743664070964, - 23.675058037042618 - ], - "event_ms_including_first": [ - 73498.4296875, - 26.32156753540039, - 24.428415298461914, - 24.181472778320312, - 23.990367889404297, - 23.81839942932129, - 24.02627182006836, - 24.13711929321289, - 23.644287109375 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/m2/cm2w6le275rcokfq5ek6qcfmj7nwxnjs7zsbx26lirbhof7x6oyk.py" - ], - "routes": [ - { - "sha256": "19c8da1d296e6ef073a8c0800d9b41638ef7f3a5b42cce1002a98687e067bb11", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "elapsed_s": 78.74085116386414 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_ECS_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" - } - } - }, - { - "run": "Neo_n512_ECS_p2", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 512, - "started": 1792865541.0710413, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 1124910, - "first_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "steady_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "full_window_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "steady_wall_ms": { - "median": 23.41842302121222, - "p90": 23.45206644386053, - "min": 23.373063188046217, - "max": 23.484733887016773, - "samples": [ - 23.484733887016773, - 23.472319822758436, - 23.41406000778079, - 23.45868479460478, - 23.375628050416708, - 23.43052113428712, - 23.423087317496538, - 23.41622393578291, - 23.423587903380394, - 23.437004070729017, - 23.449568077921867, - 23.44484766945243, - 23.440550081431866, - 23.446430917829275, - 23.431092966347933, - 23.428286891430616, - 23.413569200783968, - 23.396065924316645, - 23.40101497247815, - 23.39276997372508, - 23.37877405807376, - 23.407887667417526, - 23.41432962566614, - 23.388091009110212, - 23.411063943058252, - 23.391246795654297, - 23.373063188046217, - 23.42062210664153, - 23.451331071555614, - 23.37874285876751 - ] - }, - "steady_event_ms": { - "median": 23.37395191192627, - "p90": 23.406226921081544, - "samples": [ - 23.431072235107422, - 23.4270076751709, - 23.369375228881836, - 23.414464950561523, - 23.331615447998047, - 23.38662338256836, - 23.378944396972656, - 23.37174415588379, - 23.379552841186523, - 23.392032623291016, - 23.405311584472656, - 23.4005126953125, - 23.395999908447266, - 23.40278434753418, - 23.387392044067383, - 23.380992889404297, - 23.369504928588867, - 23.35193634033203, - 23.35651206970215, - 23.349407196044922, - 23.334848403930664, - 23.35590362548828, - 23.369375228881836, - 23.343936920166016, - 23.367712020874023, - 23.34707260131836, - 23.328256607055664, - 23.37615966796875, - 23.398143768310547, - 23.333951950073242 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 72999.97337628156, - 26.498846244066954, - 24.363423231989145, - 23.985108826309443, - 23.85898120701313, - 23.77190627157688, - 23.70533999055624, - 23.93717924132943, - 23.90140015631914 - ], - "event_ms_including_first": [ - 72999.734375, - 26.444576263427734, - 24.330080032348633, - 23.95212745666504, - 23.827455520629883, - 23.74025535583496, - 23.674560546875, - 23.90563201904297, - 23.852672576904297 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/m2/cm2w6le275rcokfq5ek6qcfmj7nwxnjs7zsbx26lirbhof7x6oyk.py" - ], - "routes": [ - { - "sha256": "19c8da1d296e6ef073a8c0800d9b41638ef7f3a5b42cce1002a98687e067bb11", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "elapsed_s": 78.31566429138184 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_ECS_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" - } - } - }, - { - "run": "Neo_n512_TORCH_p0", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 512, - "started": 1792864881.7219424, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 1124910, - "first_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "steady_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "full_window_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "steady_wall_ms": { - "median": 46.99176293797791, - "p90": 47.01843303628266, - "min": 46.94853723049164, - "max": 47.07791982218623, - "samples": [ - 46.98795126751065, - 47.05140087753534, - 46.99028609320521, - 46.96715110912919, - 46.992830000817776, - 46.95226391777396, - 46.98702972382307, - 47.048235312104225, - 46.97624919936061, - 46.99230892583728, - 46.99810966849327, - 46.94853723049164, - 47.015121672302485, - 46.990484930574894, - 46.99121695011854, - 46.98532586917281, - 46.99280112981796, - 47.004792373627424, - 47.07791982218623, - 46.98894312605262, - 46.98598710820079, - 46.99425306171179, - 47.002068255096674, - 47.00023401528597, - 47.01202595606446, - 46.96967685595155, - 47.008850146085024, - 47.007167246192694, - 46.95721296593547, - 46.948886942118406 - ] - }, - "steady_event_ms": { - "median": 46.94783973693848, - "p90": 46.974121475219725, - "samples": [ - 46.92323303222656, - 47.005985260009766, - 46.94607925415039, - 46.923583984375, - 46.948577880859375, - 46.907936096191406, - 46.94294357299805, - 47.00502395629883, - 46.931968688964844, - 46.948577880859375, - 46.954593658447266, - 46.90447998046875, - 46.97068786621094, - 46.947776794433594, - 46.946815490722656, - 46.94144058227539, - 46.94790267944336, - 46.96352005004883, - 47.03385543823242, - 46.94569778442383, - 46.94233703613281, - 46.951168060302734, - 46.95827102661133, - 46.95606231689453, - 46.968929290771484, - 46.916255950927734, - 46.94963073730469, - 46.953025817871094, - 46.90342330932617, - 46.90576171875 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 69124.7489452362, - 49.76351233199239, - 47.44802042841911, - 47.42101766169071, - 47.4090869538486, - 47.29119408875704, - 47.17597598209977, - 47.244615852832794, - 47.02235572040081 - ], - "event_ms_including_first": [ - 69124.5390625, - 49.73148727416992, - 47.4152946472168, - 47.38115310668945, - 47.378143310546875, - 47.259647369384766, - 47.1446418762207, - 47.21401596069336, - 46.989952087402344 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/cq/ccqe5u272jrtq4fpm2o7gwk27d5aykenxhb57wg6x7b7t4xve3iw.py" - ], - "routes": [ - { - "sha256": "87608c81891309b6957cf18a940bf19b63f6fdd161f5cf06568ead5eeae6b151", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "elapsed_s": 75.79353308677673 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_TORCH_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" - } - } - }, - { - "run": "Neo_n512_TORCH_p1", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 512, - "started": 1792865294.88639, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 1124910, - "first_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "steady_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "full_window_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "steady_wall_ms": { - "median": 46.9794615637511, - "p90": 47.0337123144418, - "min": 46.920374035835266, - "max": 51.351903937757015, - "samples": [ - 46.963196247816086, - 46.987731009721756, - 46.958726830780506, - 46.920374035835266, - 46.938057988882065, - 47.131123021245, - 46.950400806963444, - 46.95668304339051, - 46.98754195123911, - 47.02288890257478, - 46.98225203901529, - 46.957083977758884, - 46.96551011875272, - 46.99385305866599, - 46.95576103404164, - 46.96193290874362, - 47.007408924400806, - 47.009702771902084, - 47.01380105689168, - 46.98675964027643, - 46.99499486014247, - 46.97667108848691, - 46.955701895058155, - 46.92967189475894, - 46.994884964078665, - 51.351903937757015, - 47.240179032087326, - 47.0206537283957, - 46.94470018148422, - 46.964036766439676 - ] - }, - "steady_event_ms": { - "median": 46.936767578125, - "p90": 46.99078598022461, - "samples": [ - 46.907745361328125, - 46.944000244140625, - 46.91609573364258, - 46.877342224121094, - 46.89555358886719, - 47.08844757080078, - 46.90681457519531, - 46.91328048706055, - 46.945438385009766, - 46.97993469238281, - 46.939456939697266, - 46.914207458496094, - 46.922367095947266, - 46.95158386230469, - 46.913631439208984, - 46.91932678222656, - 46.96428680419922, - 46.96662521362305, - 46.97187042236328, - 46.94367980957031, - 46.952640533447266, - 46.934078216552734, - 46.91328048706055, - 46.88713455200195, - 46.95110321044922, - 51.294273376464844, - 47.19420623779297, - 46.97769546508789, - 46.90288162231445, - 46.92166519165039 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 70829.90197278559, - 49.956288654357195, - 47.52054763957858, - 47.364172991365194, - 47.50605998560786, - 47.2664381377399, - 47.348171938210726, - 47.40398796275258, - 47.02786775305867 - ], - "event_ms_including_first": [ - 70829.6796875, - 49.92428970336914, - 47.48835372924805, - 47.33126449584961, - 47.47468948364258, - 47.22787094116211, - 47.317344665527344, - 47.37247848510742, - 46.99635314941406 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/cq/ccqe5u272jrtq4fpm2o7gwk27d5aykenxhb57wg6x7b7t4xve3iw.py" - ], - "routes": [ - { - "sha256": "87608c81891309b6957cf18a940bf19b63f6fdd161f5cf06568ead5eeae6b151", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "elapsed_s": 77.531822681427 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_TORCH_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" - } - } - }, - { - "run": "Neo_n512_TORCH_p2", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 512, - "started": 1792865377.763738, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "parameter_count": 1124910, - "first_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "steady_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "full_window_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "steady_wall_ms": { - "median": 46.97064450010657, - "p90": 47.008851915597916, - "min": 46.88762314617634, - "max": 47.14811500161886, - "samples": [ - 47.14811500161886, - 47.008040361106396, - 46.971460804343224, - 46.914041973650455, - 46.97266314178705, - 46.88762314617634, - 46.935493126511574, - 46.92897107452154, - 46.965590212494135, - 46.92520387470722, - 46.95008089765906, - 46.94693489000201, - 46.94128409028053, - 46.92210769280791, - 46.97094019502401, - 46.9018891453743, - 46.97034880518913, - 46.90614715218544, - 46.973415184766054, - 46.97811417281628, - 46.91897192969918, - 46.95130279287696, - 47.00277093797922, - 47.02956089749932, - 46.983292791992426, - 46.98978504166007, - 47.0044338144362, - 47.016155906021595, - 47.00421309098601, - 46.984465792775154 - ] - }, - "steady_event_ms": { - "median": 46.923871994018555, - "p90": 46.960967254638675, - "samples": [ - 47.09574508666992, - 46.96332931518555, - 46.92700958251953, - 46.87014389038086, - 46.927486419677734, - 46.8441276550293, - 46.89209747314453, - 46.88700866699219, - 46.922367095947266, - 46.881343841552734, - 46.90719985961914, - 46.90371322631836, - 46.895999908447266, - 46.87923049926758, - 46.92758560180664, - 46.858497619628906, - 46.92588806152344, - 46.86000061035156, - 46.928321838378906, - 46.925376892089844, - 46.87516784667969, - 46.89891052246094, - 46.95840072631836, - 46.95916748046875, - 46.919742584228516, - 46.93190383911133, - 46.95897674560547, - 46.973758697509766, - 46.9607048034668, - 46.940608978271484 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 69550.52131414413, - 49.84914604574442, - 47.558550257235765, - 47.48950991779566, - 47.296203672885895, - 47.319046687334776, - 47.19853959977627, - 47.3137772642076, - 47.01655590906739 - ], - "event_ms_including_first": [ - 69550.296875, - 49.81644821166992, - 47.52560043334961, - 47.45683288574219, - 47.263553619384766, - 47.28758239746094, - 47.167327880859375, - 47.28217697143555, - 46.98505783081055 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/cq/ccqe5u272jrtq4fpm2o7gwk27d5aykenxhb57wg6x7b7t4xve3iw.py" - ], - "routes": [ - { - "sha256": "87608c81891309b6957cf18a940bf19b63f6fdd161f5cf06568ead5eeae6b151", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "elapsed_s": 76.26847910881042 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n512_TORCH_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" - } - } - }, - { - "run": "Neo_n96_BASE_p0", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 96, - "started": 1792864122.3377771, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 1124910, - "first_peak": { - "allocated": 646372352, - "reserved": 694157312 - }, - "steady_peak": { - "allocated": 545709056, - "reserved": 694157312 - }, - "full_window_peak": { - "allocated": 646372352, - "reserved": 694157312 - }, - "steady_wall_ms": { - "median": 18.34854017943144, - "p90": 18.44224533997476, - "min": 18.211465794593096, - "max": 18.523053731769323, - "samples": [ - 18.34557019174099, - 18.330059945583344, - 18.313559237867594, - 18.40580301359296, - 18.401585053652525, - 18.339348025619984, - 18.215122632682323, - 18.523053731769323, - 18.32438912242651, - 18.35385477170348, - 18.369364086538553, - 18.288061022758484, - 18.301996868103743, - 18.453453201800585, - 18.32623267546296, - 18.211465794593096, - 18.47081631422043, - 18.360116984695196, - 18.441000021994114, - 18.31671502441168, - 18.43303395435214, - 18.335961271077394, - 18.29556468874216, - 18.363844137638807, - 18.36036704480648, - 18.36447510868311, - 18.325109966099262, - 18.351510167121887, - 18.312708009034395, - 18.368983175605536 - ] - }, - "steady_event_ms": { - "median": 18.29911994934082, - "p90": 18.39932174682617, - "samples": [ - 18.293888092041016, - 18.28563117980957, - 18.26927947998047, - 18.36275291442871, - 18.35919952392578, - 18.29587173461914, - 18.171903610229492, - 18.47964859008789, - 18.281024932861328, - 18.3023681640625, - 18.325088500976562, - 18.245344161987305, - 18.2488956451416, - 18.409631729125977, - 18.282880783081055, - 18.16806411743164, - 18.428255081176758, - 18.316448211669922, - 18.398176193237305, - 18.273056030273438, - 18.391071319580078, - 18.29372787475586, - 18.253087997436523, - 18.320735931396484, - 18.31737518310547, - 18.31337547302246, - 18.28121566772461, - 18.309280395507812, - 18.26915168762207, - 18.326112747192383 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 125353.61708281562, - 22.169218864291906, - 19.218076951801777, - 18.82081711664796, - 18.608505837619305, - 18.754039891064167, - 18.57342990115285, - 19.039528910070658, - 18.63673934713006 - ], - "event_ms_including_first": [ - 125353.203125, - 22.137760162353516, - 19.186880111694336, - 18.789695739746094, - 18.57766342163086, - 18.722623825073242, - 18.542335510253906, - 19.00761604309082, - 18.60550308227539 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/eq/ceqxwyk62sk4v57fkibgzv45dm7esitmn4felslkntpsep2t2qqe.py" - ], - "routes": [ - { - "sha256": "88a7f76f0c36e917c6c366a7ed05087145a36b37ea5c7765401714f632fae2d3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 646372352, - "reserved": 694157312 - }, - "elapsed_s": 130.1617293357849 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_BASE_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" - } - } - }, - { - "run": "Neo_n96_BASE_p1", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 96, - "started": 1792864474.3981674, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 1124910, - "first_peak": { - "allocated": 545709056, - "reserved": 589299712 - }, - "steady_peak": { - "allocated": 545709056, - "reserved": 589299712 - }, - "full_window_peak": { - "allocated": 545709056, - "reserved": 589299712 - }, - "steady_wall_ms": { - "median": 17.487884033471346, - "p90": 17.701540840789676, - "min": 17.387925181537867, - "max": 18.233501818031073, - "samples": [ - 18.233501818031073, - 17.77975494042039, - 17.726374324411154, - 17.698781564831734, - 17.582592088729143, - 17.447256948798895, - 17.523962073028088, - 17.49640004709363, - 17.608411144465208, - 17.54587283357978, - 17.487644217908382, - 17.495489213615656, - 17.437659204006195, - 17.45732594281435, - 17.56714330986142, - 17.45338784530759, - 17.51914294436574, - 17.447396647185087, - 17.55694393068552, - 17.46559189632535, - 17.434963025152683, - 17.61460304260254, - 17.485979944467545, - 17.467675730586052, - 17.47677195817232, - 17.48607074841857, - 17.387925181537867, - 17.479608301073313, - 17.48812384903431, - 17.463937867432833 - ] - }, - "steady_event_ms": { - "median": 17.44444751739502, - "p90": 17.655973625183105, - "samples": [ - 18.160064697265625, - 17.734304428100586, - 17.682239532470703, - 17.65305519104004, - 17.538272857666016, - 17.403263092041016, - 17.47964859008789, - 17.451711654663086, - 17.565439224243164, - 17.50102424621582, - 17.444799423217773, - 17.45123291015625, - 17.394527435302734, - 17.414079666137695, - 17.523712158203125, - 17.410240173339844, - 17.475391387939453, - 17.404415130615234, - 17.513248443603516, - 17.422592163085938, - 17.390655517578125, - 17.569791793823242, - 17.440767288208008, - 17.423839569091797, - 17.423999786376953, - 17.442272186279297, - 17.344383239746094, - 17.43619155883789, - 17.444095611572266, - 17.42051124572754 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 72164.22679368407, - 20.515702199190855, - 18.38913606479764, - 18.253599759191275, - 18.10473809018731, - 18.01825501024723, - 17.98604428768158, - 18.382824026048183, - 17.85301323980093 - ], - "event_ms_including_first": [ - 72163.984375, - 20.48303985595703, - 18.356416702270508, - 18.220800399780273, - 18.072864532470703, - 17.986560821533203, - 17.951007843017578, - 18.35055923461914, - 17.822080612182617 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/eq/ceqxwyk62sk4v57fkibgzv45dm7esitmn4felslkntpsep2t2qqe.py" - ], - "routes": [ - { - "sha256": "88a7f76f0c36e917c6c366a7ed05087145a36b37ea5c7765401714f632fae2d3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 545709056, - "reserved": 589299712 - }, - "elapsed_s": 76.95597267150879 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_BASE_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" - } - } - }, - { - "run": "Neo_n96_BASE_p2", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 96, - "started": 1792864715.980704, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 1124910, - "first_peak": { - "allocated": 545709056, - "reserved": 589299712 - }, - "steady_peak": { - "allocated": 545709056, - "reserved": 589299712 - }, - "full_window_peak": { - "allocated": 545709056, - "reserved": 589299712 - }, - "steady_wall_ms": { - "median": 17.992521403357387, - "p90": 18.385345488786697, - "min": 17.875676043331623, - "max": 18.757541198283434, - "samples": [ - 17.960526049137115, - 18.098798114806414, - 17.946539912372828, - 17.99245597794652, - 17.976255621761084, - 18.38134089484811, - 17.931971698999405, - 17.916403245180845, - 18.048221245408058, - 18.003006000071764, - 17.977689392864704, - 18.655868712812662, - 17.992586828768253, - 17.875676043331623, - 18.02075980231166, - 18.029966857284307, - 18.185812048614025, - 18.757541198283434, - 18.421386834234, - 18.327059224247932, - 17.92235393077135, - 18.006933853030205, - 17.952200956642628, - 17.903558909893036, - 17.95659912750125, - 17.94258179143071, - 18.31250125542283, - 17.96230999752879, - 17.90474122390151, - 18.001793883740902 - ] - }, - "steady_event_ms": { - "median": 17.950175285339355, - "p90": 18.343474769592284, - "samples": [ - 17.90991973876953, - 18.05615997314453, - 17.904096603393555, - 17.950687408447266, - 17.93302345275879, - 18.339519500732422, - 17.87286376953125, - 17.873119354248047, - 17.99295997619629, - 17.958656311035156, - 17.93391990661621, - 18.613759994506836, - 17.949663162231445, - 17.833824157714844, - 17.97862434387207, - 17.98851203918457, - 18.144128799438477, - 18.714975357055664, - 18.379072189331055, - 18.28563117980957, - 17.88003158569336, - 17.964223861694336, - 17.910655975341797, - 17.86115264892578, - 17.91449546813965, - 17.9003849029541, - 18.269376754760742, - 17.91993522644043, - 17.86332893371582, - 17.959999084472656 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 72728.42452162877, - 23.266646079719067, - 18.83880514651537, - 18.6008564196527, - 18.455361016094685, - 18.35196604952216, - 18.378385808318853, - 19.150422886013985, - 18.26495211571455 - ], - "event_ms_including_first": [ - 72728.1875, - 23.23311996459961, - 18.805824279785156, - 18.56550407409668, - 18.42406463623047, - 18.320480346679688, - 18.34739112854004, - 19.120384216308594, - 18.23308753967285 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor/eq/ceqxwyk62sk4v57fkibgzv45dm7esitmn4felslkntpsep2t2qqe.py" - ], - "routes": [ - { - "sha256": "88a7f76f0c36e917c6c366a7ed05087145a36b37ea5c7765401714f632fae2d3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 545709056, - "reserved": 589299712 - }, - "elapsed_s": 77.61204385757446 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_BASE_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_BASE/triton" - } - } - }, - { - "run": "Neo_n96_ECS_p0", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 96, - "started": 1792864257.0279186, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 1124910, - "first_peak": { - "allocated": 658144768, - "reserved": 694157312 - }, - "steady_peak": { - "allocated": 557481472, - "reserved": 694157312 - }, - "full_window_peak": { - "allocated": 658144768, - "reserved": 694157312 - }, - "steady_wall_ms": { - "median": 18.035011831671, - "p90": 18.22465849108994, - "min": 17.904140055179596, - "max": 18.341226037591696, - "samples": [ - 17.937833908945322, - 18.20538891479373, - 18.21850286796689, - 17.9204810410738, - 17.917845863848925, - 17.904140055179596, - 17.981195356696844, - 18.060754984617233, - 18.177185207605362, - 18.090982921421528, - 18.014919012784958, - 18.07272806763649, - 17.91988918557763, - 17.979811877012253, - 18.31022696569562, - 17.99589302390814, - 17.988800071179867, - 17.956138122826815, - 18.03193101659417, - 17.963101156055927, - 18.280059099197388, - 18.04152922704816, - 17.997967079281807, - 18.038092646747828, - 17.95486593618989, - 18.341226037591696, - 18.183366861194372, - 18.109166994690895, - 18.059513065963984, - 18.189799040555954 - ] - }, - "steady_event_ms": { - "median": 17.99169635772705, - "p90": 18.180928230285645, - "samples": [ - 17.886943817138672, - 18.160415649414062, - 18.1746883392334, - 17.87775993347168, - 17.87494468688965, - 17.860992431640625, - 17.938175201416016, - 18.01696014404297, - 18.13417625427246, - 18.045408248901367, - 17.9716796875, - 18.0295352935791, - 17.875551223754883, - 17.936864852905273, - 18.267295837402344, - 17.95292854309082, - 17.9418888092041, - 17.912639617919922, - 17.988576889038086, - 17.919391632080078, - 18.23708724975586, - 17.999135971069336, - 17.954784393310547, - 17.994815826416016, - 17.91152000427246, - 18.297216415405273, - 18.14009666442871, - 18.06643295288086, - 18.015296936035156, - 18.146879196166992 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 124468.64810399711, - 22.579277865588665, - 18.915169406682253, - 18.615694250911474, - 18.492110073566437, - 18.440451938658953, - 18.41519493609667, - 18.724188208580017, - 18.258098047226667 - ], - "event_ms_including_first": [ - 124468.2421875, - 22.548255920410156, - 18.88489532470703, - 18.58470344543457, - 18.46086311340332, - 18.40947151184082, - 18.383968353271484, - 18.692991256713867, - 18.22707176208496 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/t3/ct3jv332q663pb7fau5sahydsikcnpltdy2wnxiqaxujbrwe2xrh.py" - ], - "routes": [ - { - "sha256": "65e175bca1f23233ff9f33a17000de61cb7f6359e00f23d5d6a5a18cde6d2ca7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 658144768, - "reserved": 694157312 - }, - "elapsed_s": 129.26316785812378 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_ECS_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" - } - } - }, - { - "run": "Neo_n96_ECS_p1", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 96, - "started": 1792864391.0106223, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 1124910, - "first_peak": { - "allocated": 557481472, - "reserved": 589299712 - }, - "steady_peak": { - "allocated": 557481472, - "reserved": 589299712 - }, - "full_window_peak": { - "allocated": 557481472, - "reserved": 589299712 - }, - "steady_wall_ms": { - "median": 17.637936864048243, - "p90": 17.804267024621367, - "min": 17.560991924256086, - "max": 18.174109049141407, - "samples": [ - 17.606807872653008, - 17.704101745039225, - 17.684996128082275, - 17.968380823731422, - 17.73078180849552, - 17.622938845306635, - 17.63023203238845, - 17.627628054469824, - 17.613191157579422, - 17.631405033171177, - 17.64040207490325, - 17.624891828745604, - 17.619351856410503, - 17.61622680351138, - 17.7063369192183, - 17.656301613897085, - 17.73932809010148, - 17.638477962464094, - 17.791116144508123, - 17.72382901981473, - 17.635933123528957, - 17.670036759227514, - 17.560991924256086, - 17.63739576563239, - 17.922624945640564, - 18.174109049141407, - 17.56738405674696, - 17.588343005627394, - 17.643488012254238, - 17.56748417392373 - ] - }, - "steady_event_ms": { - "median": 17.59388828277588, - "p90": 17.76079387664795, - "samples": [ - 17.55523109436035, - 17.65990447998047, - 17.640703201293945, - 17.925472259521484, - 17.687519073486328, - 17.579456329345703, - 17.587263107299805, - 17.583839416503906, - 17.570783615112305, - 17.58844757080078, - 17.597759246826172, - 17.58185577392578, - 17.57699203491211, - 17.5633602142334, - 17.662752151489258, - 17.61337661743164, - 17.69443130493164, - 17.595712661743164, - 17.747648239135742, - 17.679616928100586, - 17.592063903808594, - 17.627103805541992, - 17.517728805541992, - 17.591455459594727, - 17.879104614257812, - 18.13167953491211, - 17.523775100708008, - 17.546079635620117, - 17.600255966186523, - 17.52230453491211 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 74426.08160804957, - 20.52371622994542, - 18.375800922513008, - 18.395096994936466, - 18.332318402826786, - 18.256634939461946, - 18.229243345558643, - 18.573713954538107, - 17.946319188922644 - ], - "event_ms_including_first": [ - 74425.8203125, - 20.490623474121094, - 18.34239959716797, - 18.36240005493164, - 18.301023483276367, - 18.22515106201172, - 18.19817543029785, - 18.54204750061035, - 17.914047241210938 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/t3/ct3jv332q663pb7fau5sahydsikcnpltdy2wnxiqaxujbrwe2xrh.py" - ], - "routes": [ - { - "sha256": "65e175bca1f23233ff9f33a17000de61cb7f6359e00f23d5d6a5a18cde6d2ca7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 557481472, - "reserved": 589299712 - }, - "elapsed_s": 79.25965547561646 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_ECS_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" - } - } - }, - { - "run": "Neo_n96_ECS_p2", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 96, - "started": 1792864798.1407197, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 1124910, - "first_peak": { - "allocated": 557481472, - "reserved": 589299712 - }, - "steady_peak": { - "allocated": 557481472, - "reserved": 589299712 - }, - "full_window_peak": { - "allocated": 557481472, - "reserved": 589299712 - }, - "steady_wall_ms": { - "median": 18.551687942817807, - "p90": 18.689992604777217, - "min": 18.41905200853944, - "max": 18.871405627578497, - "samples": [ - 18.624631222337484, - 18.642303999513388, - 18.549398984760046, - 18.580377101898193, - 18.60001403838396, - 18.572482280433178, - 18.513971008360386, - 18.666228745132685, - 18.505425192415714, - 18.48539710044861, - 18.49484583362937, - 18.520643934607506, - 18.477371893823147, - 18.55397690087557, - 18.693410325795412, - 18.628276884555817, - 18.600824754685163, - 18.492220900952816, - 18.871405627578497, - 18.453136086463928, - 18.41905200853944, - 18.556742928922176, - 18.45473889261484, - 18.682740163058043, - 18.689612857997417, - 18.474657088518143, - 18.442136235535145, - 18.49882211536169, - 18.517276737838984, - 18.841078970581293 - ] - }, - "steady_event_ms": { - "median": 18.5099515914917, - "p90": 18.648479461669922, - "samples": [ - 18.571327209472656, - 18.597440719604492, - 18.50704002380371, - 18.535551071166992, - 18.557920455932617, - 18.531583786010742, - 18.472639083862305, - 18.623647689819336, - 18.46384048461914, - 18.443071365356445, - 18.4498233795166, - 18.4781436920166, - 18.436256408691406, - 18.512863159179688, - 18.651071548461914, - 18.586559295654297, - 18.559295654296875, - 18.45078468322754, - 18.83011245727539, - 18.411264419555664, - 18.377567291259766, - 18.515775680541992, - 18.413055419921875, - 18.640928268432617, - 18.648191452026367, - 18.416704177856445, - 18.4005126953125, - 18.44553565979004, - 18.476608276367188, - 18.800575256347656 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 74339.57385784015, - 21.287428215146065, - 19.20474600046873, - 19.224323332309723, - 19.032159820199013, - 19.056987017393112, - 19.0767552703619, - 19.40412214025855, - 18.80797604098916 - ], - "event_ms_including_first": [ - 74339.3359375, - 21.254240036010742, - 19.172544479370117, - 19.1911678314209, - 19.000160217285156, - 19.024799346923828, - 19.044416427612305, - 19.373151779174805, - 18.776479721069336 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/t3/ct3jv332q663pb7fau5sahydsikcnpltdy2wnxiqaxujbrwe2xrh.py" - ], - "routes": [ - { - "sha256": "65e175bca1f23233ff9f33a17000de61cb7f6359e00f23d5d6a5a18cde6d2ca7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 557481472, - "reserved": 589299712 - }, - "elapsed_s": 79.26460266113281 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_ECS_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" - } - } - }, - { - "run": "Neo_n96_TORCH_p0", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 96, - "started": 1792863999.7472875, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 1124910, - "first_peak": { - "allocated": 1118501888, - "reserved": 1260388352 - }, - "steady_peak": { - "allocated": 1017838592, - "reserved": 1260388352 - }, - "full_window_peak": { - "allocated": 1118501888, - "reserved": 1260388352 - }, - "steady_wall_ms": { - "median": 13.191187288612127, - "p90": 13.266367325559258, - "min": 13.116164598613977, - "max": 13.67404917255044, - "samples": [ - 13.230211101472378, - 13.441429939121008, - 13.143737334758043, - 13.183953706175089, - 13.18994490429759, - 13.15711298957467, - 13.130131643265486, - 13.231983873993158, - 13.227926101535559, - 13.219410087913275, - 13.192429672926664, - 13.187179807573557, - 13.220151886343956, - 13.207106851041317, - 13.415589928627014, - 13.166159857064486, - 13.67404917255044, - 13.16109113395214, - 13.152734842151403, - 13.166520278900862, - 13.159476686269045, - 13.116164598613977, - 13.150930870324373, - 13.249787036329508, - 13.240319676697254, - 13.244677800685167, - 13.176239095628262, - 13.166690245270729, - 13.219892047345638, - 13.207448180764914 - ] - }, - "steady_event_ms": { - "median": 13.149136066436768, - "p90": 13.224441432952881, - "samples": [ - 13.17420768737793, - 13.398880004882812, - 13.1014404296875, - 13.140800476074219, - 13.148192405700684, - 13.114944458007812, - 13.088224411010742, - 13.189567565917969, - 13.18505573272705, - 13.177472114562988, - 13.150079727172852, - 13.144767761230469, - 13.17795181274414, - 13.164447784423828, - 13.373279571533203, - 13.120896339416504, - 13.632384300231934, - 13.118975639343262, - 13.110112190246582, - 13.12275218963623, - 13.1178560256958, - 13.074015617370605, - 13.109151840209961, - 13.207903861999512, - 13.197919845581055, - 13.202752113342285, - 13.133888244628906, - 13.124159812927246, - 13.177472114562988, - 13.16528034210205 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 112561.75757618621, - 17.38168904557824, - 14.077791012823582, - 13.860479928553104, - 13.582095969468355, - 13.578298036009073, - 13.517653103917837, - 13.712211046367884, - 13.44104902818799 - ], - "event_ms_including_first": [ - 112561.359375, - 17.349119186401367, - 14.046943664550781, - 13.820704460144043, - 13.551487922668457, - 13.54751968383789, - 13.487456321716309, - 13.680864334106445, - 13.410719871520996 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/mj/cmjses2umzitkv4gp2qeaqon3k36jmk67u5xy5qr6mm3lmrgz5hv.py" - ], - "routes": [ - { - "sha256": "ba841b0194a6a580056989d65781eaef17c64480ecff0e1022b08073bc21da08", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 1118501888, - "reserved": 1260388352 - }, - "elapsed_s": 116.72742581367493 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_TORCH_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" - } - } - }, - { - "run": "Neo_n96_TORCH_p1", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 96, - "started": 1792864555.8685224, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 1124910, - "first_peak": { - "allocated": 1017838592, - "reserved": 1176502272 - }, - "steady_peak": { - "allocated": 1017838592, - "reserved": 1176502272 - }, - "full_window_peak": { - "allocated": 1017838592, - "reserved": 1176502272 - }, - "steady_wall_ms": { - "median": 12.997369514778256, - "p90": 13.076308788731694, - "min": 12.915208004415035, - "max": 13.153307605534792, - "samples": [ - 13.094537891447544, - 13.153307605534792, - 12.998817022889853, - 12.996032368391752, - 13.018154073506594, - 12.998295947909355, - 13.07483995333314, - 13.061275240033865, - 13.020055834203959, - 12.996552977710962, - 12.979800347238779, - 12.970894109457731, - 12.956187129020691, - 13.022351078689098, - 13.001963030546904, - 12.99999887123704, - 13.034723699092865, - 13.089528307318687, - 13.025447260588408, - 12.996381614357233, - 12.959722895175219, - 12.993295677006245, - 12.986803892999887, - 12.990591116249561, - 12.99818605184555, - 12.99469918012619, - 12.954342179000378, - 12.938241939991713, - 12.961255852133036, - 12.915208004415035 - ] - }, - "steady_event_ms": { - "median": 12.954319953918457, - "p90": 13.03336935043335, - "samples": [ - 13.041088104248047, - 13.109087944030762, - 12.956031799316406, - 12.95366382598877, - 12.97488021850586, - 12.955488204956055, - 13.032511711120605, - 13.018303871154785, - 12.978240013122559, - 12.954048156738281, - 12.936991691589355, - 12.927712440490723, - 12.913472175598145, - 12.978560447692871, - 12.958975791931152, - 12.956607818603516, - 12.976287841796875, - 13.045920372009277, - 12.982943534851074, - 12.953280448913574, - 12.9170560836792, - 12.950271606445312, - 12.942975997924805, - 12.946623802185059, - 12.954591751098633, - 12.951199531555176, - 12.911040306091309, - 12.895584106445312, - 12.919168472290039, - 12.873248100280762 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 70202.27432902902, - 16.132073011249304, - 13.621311634778976, - 13.425824232399464, - 13.358545955270529, - 13.341875281184912, - 13.28651001676917, - 13.427074998617172, - 13.090569991618395 - ], - "event_ms_including_first": [ - 70202.046875, - 16.079999923706055, - 13.58886432647705, - 13.393535614013672, - 13.327967643737793, - 13.310815811157227, - 13.25715160369873, - 13.397343635559082, - 13.060511589050293 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/mj/cmjses2umzitkv4gp2qeaqon3k36jmk67u5xy5qr6mm3lmrgz5hv.py" - ], - "routes": [ - { - "sha256": "ba841b0194a6a580056989d65781eaef17c64480ecff0e1022b08073bc21da08", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 1017838592, - "reserved": 1176502272 - }, - "elapsed_s": 74.35690426826477 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_TORCH_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" - } - } - }, - { - "run": "Neo_n96_TORCH_p2", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 96, - "started": 1792864635.5300088, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 1124910, - "first_peak": { - "allocated": 1017838592, - "reserved": 1176502272 - }, - "steady_peak": { - "allocated": 1017838592, - "reserved": 1176502272 - }, - "full_window_peak": { - "allocated": 1017838592, - "reserved": 1176502272 - }, - "steady_wall_ms": { - "median": 13.07558105327189, - "p90": 13.151851389557123, - "min": 13.010018039494753, - "max": 13.157967943698168, - "samples": [ - 13.08149192482233, - 13.151634950190783, - 13.04154796525836, - 13.010018039494753, - 13.069670181721449, - 13.049160595983267, - 13.095879927277565, - 13.107031118124723, - 13.06358864530921, - 13.134893029928207, - 13.129923958331347, - 13.058799784630537, - 13.142588082700968, - 13.157967943698168, - 13.124643824994564, - 13.153799343854189, - 13.155612163245678, - 13.065793085843325, - 13.087945058941841, - 13.012583367526531, - 13.043661136180162, - 13.023353181779385, - 13.049812987446785, - 13.026298955082893, - 13.012262061238289, - 13.06681614369154, - 13.046926818788052, - 13.118302915245295, - 13.099116273224354, - 13.127198908478022 - ] - }, - "steady_event_ms": { - "median": 13.030096054077148, - "p90": 13.10913314819336, - "samples": [ - 13.032480239868164, - 13.108832359313965, - 12.998623847961426, - 12.967679977416992, - 13.027711868286133, - 13.005087852478027, - 13.05299186706543, - 13.063072204589844, - 13.021344184875488, - 13.092415809631348, - 13.087455749511719, - 13.006719589233398, - 13.099583625793457, - 13.115296363830566, - 13.081600189208984, - 13.11184024810791, - 13.113632202148438, - 13.023776054382324, - 13.041952133178711, - 12.969696044921875, - 13.00160026550293, - 12.98083209991455, - 13.007904052734375, - 12.984512329101562, - 12.969856262207031, - 13.024255752563477, - 13.004351615905762, - 13.075967788696289, - 13.057408332824707, - 13.085023880004883 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 70566.1840569228, - 16.813669819384813, - 13.45542911440134, - 13.347906060516834, - 13.275329023599625, - 13.421786017715931, - 13.354627881199121, - 13.572800904512405, - 13.207079842686653 - ], - "event_ms_including_first": [ - 70565.9140625, - 16.78201675415039, - 13.424384117126465, - 13.316415786743164, - 13.244704246520996, - 13.391807556152344, - 13.324735641479492, - 13.542495727539062, - 13.176511764526367 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor/mj/cmjses2umzitkv4gp2qeaqon3k36jmk67u5xy5qr6mm3lmrgz5hv.py" - ], - "routes": [ - { - "sha256": "ba841b0194a6a580056989d65781eaef17c64480ecff0e1022b08073bc21da08", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 1017838592, - "reserved": 1176502272 - }, - "elapsed_s": 74.65931630134583 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Neo_n96_TORCH_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_TORCH/triton" - } - } - }, - { - "run": "Pro_n4096_BASE_p0", - "result": { - "status": "oom", - "mode": "BASE", - "n_atoms": 4096, - "started": 1792872634.9226987, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/am/camspdo6kx5gnjlafl7iexnzw6e5snfddhd3trsr3e3n2cztlycx.py\", line 20919, in call\n buf64 = empty_strided_cuda((s46, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 871.06 MiB is free. Including non-PyTorch memory, this process has 30.47 GiB memory in use. Of the allocated memory 29.74 GiB is allocated by PyTorch, and 57.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", - "partial_arrays": 0, - "complete_peak": { - "allocated": 31929301504, - "reserved": 31989956608 - }, - "elapsed_s": 188.92400097846985 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_BASE_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" - } - } - }, - { - "run": "Pro_n4096_BASE_p1", - "result": { - "status": "oom", - "mode": "BASE", - "n_atoms": 4096, - "started": 1792873213.2061002, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/am/camspdo6kx5gnjlafl7iexnzw6e5snfddhd3trsr3e3n2cztlycx.py\", line 20919, in call\n buf64 = empty_strided_cuda((s46, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 871.06 MiB is free. Including non-PyTorch memory, this process has 30.47 GiB memory in use. Of the allocated memory 29.74 GiB is allocated by PyTorch, and 57.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", - "partial_arrays": 0, - "complete_peak": { - "allocated": 31929301504, - "reserved": 31989956608 - }, - "elapsed_s": 186.5676712989807 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_BASE_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" - } - } - }, - { - "run": "Pro_n4096_BASE_p2", - "result": { - "status": "oom", - "mode": "BASE", - "n_atoms": 4096, - "started": 1792873698.0892181, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/am/camspdo6kx5gnjlafl7iexnzw6e5snfddhd3trsr3e3n2cztlycx.py\", line 20919, in call\n buf64 = empty_strided_cuda((s46, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 871.06 MiB is free. Including non-PyTorch memory, this process has 30.47 GiB memory in use. Of the allocated memory 29.74 GiB is allocated by PyTorch, and 57.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", - "partial_arrays": 0, - "complete_peak": { - "allocated": 31929301504, - "reserved": 31989956608 - }, - "elapsed_s": 188.6032009124756 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_BASE_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" - } - } - }, - { - "run": "Pro_n4096_ECS_p0", - "result": { - "status": "oom", - "mode": "ECS", - "n_atoms": 4096, - "started": 1792872829.7394366, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/wu/cwu5rkg3ws24k2ch22id4pkjawrgdklubhesfbxm3qaciqae7gpf.py\", line 20939, in call\n buf64 = empty_strided_cuda((s46, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 871.06 MiB is free. Including non-PyTorch memory, this process has 30.47 GiB memory in use. Of the allocated memory 29.74 GiB is allocated by PyTorch, and 57.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", - "partial_arrays": 0, - "complete_peak": { - "allocated": 31929301504, - "reserved": 31989956608 - }, - "elapsed_s": 186.17430138587952 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_ECS_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" - } - } - }, - { - "run": "Pro_n4096_ECS_p1", - "result": { - "status": "oom", - "mode": "ECS", - "n_atoms": 4096, - "started": 1792873021.7048163, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/wu/cwu5rkg3ws24k2ch22id4pkjawrgdklubhesfbxm3qaciqae7gpf.py\", line 20939, in call\n buf64 = empty_strided_cuda((s46, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 871.06 MiB is free. Including non-PyTorch memory, this process has 30.47 GiB memory in use. Of the allocated memory 29.74 GiB is allocated by PyTorch, and 57.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", - "partial_arrays": 0, - "complete_peak": { - "allocated": 31929301504, - "reserved": 31989956608 - }, - "elapsed_s": 185.50847601890564 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_ECS_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" - } - } - }, - { - "run": "Pro_n4096_ECS_p2", - "result": { - "status": "oom", - "mode": "ECS", - "n_atoms": 4096, - "started": 1792873892.4796147, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/wu/cwu5rkg3ws24k2ch22id4pkjawrgdklubhesfbxm3qaciqae7gpf.py\", line 20939, in call\n buf64 = empty_strided_cuda((s46, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 871.06 MiB is free. Including non-PyTorch memory, this process has 30.47 GiB memory in use. Of the allocated memory 29.74 GiB is allocated by PyTorch, and 57.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", - "partial_arrays": 0, - "complete_peak": { - "allocated": 31929301504, - "reserved": 31989956608 - }, - "elapsed_s": 187.12241053581238 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_ECS_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" - } - } - }, - { - "run": "Pro_n4096_TORCH_p0", - "result": { - "status": "oom", - "mode": "TORCH", - "n_atoms": 4096, - "started": 1792872488.735287, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/db/cdbxhl4ag2mms4oooq2iu5tx2nwa73j2ckthin7jon7hvaejblzz.py\", line 21624, in call\n buf83 = empty_strided_cuda((s29, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 631.06 MiB is free. Including non-PyTorch memory, this process has 30.70 GiB memory in use. Of the allocated memory 29.98 GiB is allocated by PyTorch, and 49.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", - "partial_arrays": 0, - "complete_peak": { - "allocated": 32189347328, - "reserved": 32598130688 - }, - "elapsed_s": 137.5577781200409 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_TORCH_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" - } - } - }, - { - "run": "Pro_n4096_TORCH_p1", - "result": { - "status": "oom", - "mode": "TORCH", - "n_atoms": 4096, - "started": 1792873405.5164213, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/db/cdbxhl4ag2mms4oooq2iu5tx2nwa73j2ckthin7jon7hvaejblzz.py\", line 21624, in call\n buf83 = empty_strided_cuda((s29, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 631.06 MiB is free. Including non-PyTorch memory, this process has 30.70 GiB memory in use. Of the allocated memory 29.98 GiB is allocated by PyTorch, and 49.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", - "partial_arrays": 0, - "complete_peak": { - "allocated": 32189347328, - "reserved": 32598130688 - }, - "elapsed_s": 138.13616728782654 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_TORCH_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" - } - } - }, - { - "run": "Pro_n4096_TORCH_p2", - "result": { - "status": "oom", - "mode": "TORCH", - "n_atoms": 4096, - "started": 1792873552.185923, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "eda961dd45b711e42fad51b8dfde87d6ca736b34ac729d646c98f67481308f83", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/db/cdbxhl4ag2mms4oooq2iu5tx2nwa73j2ckthin7jon7hvaejblzz.py\", line 21624, in call\n buf83 = empty_strided_cuda((s29, 6, 64), (384, 64, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 950.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 631.06 MiB is free. Including non-PyTorch memory, this process has 30.70 GiB memory in use. Of the allocated memory 29.98 GiB is allocated by PyTorch, and 49.85 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", - "partial_arrays": 0, - "complete_peak": { - "allocated": 32189347328, - "reserved": 32598130688 - }, - "elapsed_s": 137.1274483203888 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n4096_TORCH_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[8, 8, 8]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" - } - } - }, - { - "run": "Pro_n512_BASE_p0", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 512, - "started": 1792870883.844925, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "first_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "steady_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "full_window_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "steady_wall_ms": { - "median": 330.3883490152657, - "p90": 331.13448335789144, - "min": 328.93246272578835, - "max": 331.44852705299854, - "samples": [ - 329.4674949720502, - 328.93246272578835, - 329.7875691205263, - 329.31924518197775, - 329.7445778734982, - 329.9583219923079, - 329.66874493286014, - 330.1202282309532, - 330.2524872124195, - 330.1836671307683, - 330.19671216607094, - 330.47837391495705, - 330.1179129630327, - 330.32981399446726, - 329.57038888707757, - 330.29819279909134, - 331.1246959492564, - 330.44688403606415, - 330.8909232728183, - 331.2225700356066, - 330.55757405236363, - 330.8467101305723, - 331.0362780466676, - 330.8506770990789, - 331.0791999101639, - 331.0015620663762, - 330.94645803794265, - 330.99447889253497, - 331.403321120888, - 331.44852705299854 - ] - }, - "steady_event_ms": { - "median": 330.3404541015625, - "p90": 331.08546142578126, - "samples": [ - 329.3716735839844, - 328.87646484375, - 329.7410888671875, - 329.2705993652344, - 329.6970520019531, - 329.9093322753906, - 329.6210632324219, - 330.0731506347656, - 330.20574951171875, - 330.1376037597656, - 330.1489562988281, - 330.43072509765625, - 330.0705261230469, - 330.28118896484375, - 329.52252197265625, - 330.249267578125, - 331.0762939453125, - 330.39971923828125, - 330.843505859375, - 331.16796875, - 330.5086975097656, - 330.7977600097656, - 330.9892578125, - 330.802490234375, - 331.03155517578125, - 330.9538269042969, - 330.8992919921875, - 330.9463806152344, - 331.35516357421875, - 331.39990234375 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 182464.88129207864, - 318.95527616143227, - 323.0022299103439, - 327.4008696898818, - 327.5795769877732, - 327.2301680408418, - 327.4980140849948, - 327.5095862336457, - 326.35235926136374 - ], - "event_ms_including_first": [ - 182464.328125, - 318.91668701171875, - 322.9582214355469, - 327.36541748046875, - 327.5439147949219, - 327.197021484375, - 327.4646911621094, - 327.4757995605469, - 326.3194274902344 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/yn/cynkatpdxuy6z4ecamjpj3aairqgtl3gmx2y4lna7oxrc25dxqy4.py" - ], - "routes": [ - { - "sha256": "731fde8285e01447b81f62b29a0ff978da2ea857a317a68d380e40ec5b5e266c", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "elapsed_s": 211.9595959186554 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_BASE_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" - } - } - }, - { - "run": "Pro_n512_BASE_p1", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 512, - "started": 1792871541.3749335, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "first_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "steady_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "full_window_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "steady_wall_ms": { - "median": 330.69150149822235, - "p90": 331.7792649846524, - "min": 329.13242699578404, - "max": 332.46510196477175, - "samples": [ - 329.3067258782685, - 329.13242699578404, - 329.64295987039804, - 329.9283003434539, - 329.84806783497334, - 330.0530849955976, - 330.3496348671615, - 330.2415511570871, - 330.1067571155727, - 330.68741392344236, - 330.18637727946043, - 330.6649113073945, - 330.68543998524547, - 331.04781387373805, - 330.95708303153515, - 330.6866022758186, - 331.0111057944596, - 331.1797631904483, - 330.90561581775546, - 330.80060686916113, - 330.9154137969017, - 330.5283831432462, - 330.74300922453403, - 330.69558907300234, - 330.9106254018843, - 331.7518341355026, - 332.0534946396947, - 332.0261426270008, - 331.5701009705663, - 332.46510196477175 - ] - }, - "steady_event_ms": { - "median": 330.6449279785156, - "p90": 331.7240692138672, - "samples": [ - 329.24169921875, - 329.0748596191406, - 329.59442138671875, - 329.88189697265625, - 329.8006591796875, - 330.0054016113281, - 330.30328369140625, - 330.1935119628906, - 330.0587463378906, - 330.6302795410156, - 330.1388244628906, - 330.6171569824219, - 330.63763427734375, - 331.0013122558594, - 330.9094543457031, - 330.6412353515625, - 330.963623046875, - 331.1310119628906, - 330.84979248046875, - 330.75274658203125, - 330.87030029296875, - 330.48065185546875, - 330.6937255859375, - 330.64862060546875, - 330.8638916015625, - 331.69561767578125, - 332.00341796875, - 331.9801330566406, - 331.5238037109375, - 332.41796875 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 183793.70096791536, - 318.47902201116085, - 326.0141359642148, - 327.77670538052917, - 327.5198210030794, - 327.0154669880867, - 327.25338730961084, - 326.9509761594236, - 326.35963801294565 - ], - "event_ms_including_first": [ - 183792.984375, - 318.4337463378906, - 325.9812927246094, - 327.74224853515625, - 327.48779296875, - 326.9814453125, - 327.2186584472656, - 326.91754150390625, - 326.32672119140625 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/yn/cynkatpdxuy6z4ecamjpj3aairqgtl3gmx2y4lna7oxrc25dxqy4.py" - ], - "routes": [ - { - "sha256": "731fde8285e01447b81f62b29a0ff978da2ea857a317a68d380e40ec5b5e266c", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "elapsed_s": 213.32395911216736 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_BASE_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" - } - } - }, - { - "run": "Pro_n512_BASE_p2", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 512, - "started": 1792872051.5004563, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "first_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "steady_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "full_window_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "steady_wall_ms": { - "median": 330.46476845629513, - "p90": 331.37708539143205, - "min": 328.76895973458886, - "max": 332.1241680532694, - "samples": [ - 329.0109569206834, - 329.5029061846435, - 329.4539740309119, - 329.99500585719943, - 328.76895973458886, - 329.2420729994774, - 330.147793982178, - 329.27935384213924, - 330.0963370129466, - 329.35326313599944, - 329.9838840030134, - 330.4836289025843, - 330.67820593714714, - 329.76858830079436, - 330.44590801000595, - 329.52689100056887, - 330.58026107028127, - 330.3062040358782, - 331.06003841385245, - 330.5022241547704, - 330.79116884619, - 331.33672131225467, - 331.2470610253513, - 331.15721121430397, - 331.2898017466068, - 330.70824295282364, - 331.74036210402846, - 331.31009992212057, - 331.86169201508164, - 332.1241680532694 - ] - }, - "steady_event_ms": { - "median": 330.4180145263672, - "p90": 331.33119201660156, - "samples": [ - 328.9467468261719, - 329.453369140625, - 329.405029296875, - 329.9477233886719, - 328.7219543457031, - 329.19415283203125, - 330.09954833984375, - 329.2327880859375, - 330.0483093261719, - 329.304443359375, - 329.93621826171875, - 330.4363098144531, - 330.6293640136719, - 329.72076416015625, - 330.39971923828125, - 329.47674560546875, - 330.5314636230469, - 330.2574462890625, - 331.0125427246094, - 330.4523620605469, - 330.74334716796875, - 331.2908935546875, - 331.2001037597656, - 331.1078186035156, - 331.24072265625, - 330.6622619628906, - 331.6938781738281, - 331.2624816894531, - 331.8150939941406, - 332.0722351074219 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 181805.2286328748, - 320.1611186377704, - 326.8331731669605, - 327.4820279330015, - 326.60858798772097, - 326.7710851505399, - 325.9980846196413, - 326.16626331582665, - 326.31915202364326 - ], - "event_ms_including_first": [ - 181804.640625, - 320.12591552734375, - 326.79913330078125, - 327.44677734375, - 326.57177734375, - 326.737548828125, - 325.96441650390625, - 326.1313171386719, - 326.28466796875 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/yn/cynkatpdxuy6z4ecamjpj3aairqgtl3gmx2y4lna7oxrc25dxqy4.py" - ], - "routes": [ - { - "sha256": "731fde8285e01447b81f62b29a0ff978da2ea857a317a68d380e40ec5b5e266c", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "elapsed_s": 211.2205445766449 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_BASE_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" - } - } - }, - { - "run": "Pro_n512_ECS_p0", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 512, - "started": 1792871101.5944726, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "first_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "steady_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "full_window_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "steady_wall_ms": { - "median": 330.5037620011717, - "p90": 331.35263016447425, - "min": 329.32684756815434, - "max": 331.78385021165013, - "samples": [ - 329.7449089586735, - 329.69251926988363, - 330.4862887598574, - 329.7612089663744, - 330.10780438780785, - 329.32684756815434, - 329.95398435741663, - 330.32842073589563, - 329.82192421332, - 329.82171420007944, - 330.521235242486, - 330.18398797139525, - 330.2294840104878, - 330.76681895181537, - 330.43211698532104, - 330.27464896440506, - 330.76017582789063, - 330.0974238663912, - 331.0215608216822, - 330.9924150817096, - 330.99697437137365, - 330.7306612841785, - 331.6651061177254, - 331.1467571184039, - 330.6635841727257, - 331.30740001797676, - 331.029515247792, - 331.31823129951954, - 331.66221994906664, - 331.78385021165013 - ] - }, - "steady_event_ms": { - "median": 330.45086669921875, - "p90": 331.30701599121096, - "samples": [ - 329.6829528808594, - 329.6447448730469, - 330.4280700683594, - 329.71484375, - 330.0538024902344, - 329.278564453125, - 329.9086608886719, - 330.2828063964844, - 329.7767333984375, - 329.7744445800781, - 330.4736633300781, - 330.13739013671875, - 330.1847229003906, - 330.7193908691406, - 330.38629150390625, - 330.22625732421875, - 330.71435546875, - 330.0115966796875, - 330.97491455078125, - 330.9398498535156, - 330.944580078125, - 330.6825866699219, - 331.6192321777344, - 331.0988464355469, - 330.61761474609375, - 331.2622985839844, - 330.98382568359375, - 331.2727355957031, - 331.61553955078125, - 331.73858642578125 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 183996.37485994026, - 319.7685116901994, - 326.9005552865565, - 327.58106011897326, - 327.18660589307547, - 326.04781398549676, - 326.3996592722833, - 326.7992539331317, - 325.7418661378324 - ], - "event_ms_including_first": [ - 183995.671875, - 319.73443603515625, - 326.86676025390625, - 327.54705810546875, - 327.1512756347656, - 326.0149230957031, - 326.3677062988281, - 326.7646484375, - 325.7083435058594 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/wk/cwke62t4jonhwstpp2av3vhx2ebs2wn33ourpfxruiy6da3or2ek.py" - ], - "routes": [ - { - "sha256": "89c0788df7356f657c542a03021870e433d7a073ee758b2e248ae5f4fa5a0900", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "elapsed_s": 213.37857484817505 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_ECS_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" - } - } - }, - { - "run": "Pro_n512_ECS_p1", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 512, - "started": 1792871320.8004878, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "first_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "steady_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "full_window_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "steady_wall_ms": { - "median": 330.61256748624146, - "p90": 331.29749530926347, - "min": 329.4907230883837, - "max": 332.0848438888788, - "samples": [ - 329.67159524559975, - 329.5118729583919, - 329.4907230883837, - 330.1178882829845, - 329.93765687569976, - 330.0144630484283, - 329.84278770163655, - 330.29214665293694, - 330.06658079102635, - 330.8244519867003, - 330.42435673996806, - 330.6037560105324, - 330.53464628756046, - 331.40893606469035, - 330.37154702469707, - 330.32550010830164, - 330.755271948874, - 330.76332695782185, - 330.55624598637223, - 330.62137896195054, - 331.2561782076955, - 330.9639757499099, - 331.67033130303025, - 330.84688521921635, - 330.9861780144274, - 330.7790872640908, - 331.1229660175741, - 330.9287400916219, - 331.2851130031049, - 332.0848438888788 - ] - }, - "steady_event_ms": { - "median": 330.56158447265625, - "p90": 331.24732360839846, - "samples": [ - 329.607177734375, - 329.45989990234375, - 329.4375915527344, - 330.0711975097656, - 329.8907775878906, - 329.96527099609375, - 329.7957763671875, - 330.2444763183594, - 330.0198059082031, - 330.7760314941406, - 330.3763732910156, - 330.55694580078125, - 330.4873046875, - 331.36083984375, - 330.3224182128906, - 330.2769775390625, - 330.69793701171875, - 330.7138671875, - 330.5093688964844, - 330.56622314453125, - 331.2070007324219, - 330.9139099121094, - 331.6217346191406, - 330.7980651855469, - 330.938232421875, - 330.7315979003906, - 331.0748291015625, - 330.88128662109375, - 331.2347106933594, - 332.0374450683594 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 185188.80185578018, - 320.1083689928055, - 326.4369643293321, - 328.1156956218183, - 327.50654499977827, - 327.2781642153859, - 327.561778947711, - 326.5346591360867, - 326.62020111456513 - ], - "event_ms_including_first": [ - 185188.0625, - 320.0699768066406, - 326.4026794433594, - 328.080322265625, - 327.4736633300781, - 327.2415771484375, - 327.52777099609375, - 326.5010681152344, - 326.5869140625 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/wk/cwke62t4jonhwstpp2av3vhx2ebs2wn33ourpfxruiy6da3or2ek.py" - ], - "routes": [ - { - "sha256": "89c0788df7356f657c542a03021870e433d7a073ee758b2e248ae5f4fa5a0900", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "elapsed_s": 214.69410967826843 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_ECS_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" - } - } - }, - { - "run": "Pro_n512_ECS_p2", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 512, - "started": 1792872268.599881, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "first_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "steady_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "full_window_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "steady_wall_ms": { - "median": 330.82179236225784, - "p90": 332.13382181711495, - "min": 329.94279684498906, - "max": 332.74902775883675, - "samples": [ - 330.3526919335127, - 330.4998888634145, - 330.3616177290678, - 330.0859471783042, - 330.1260028965771, - 330.5208389647305, - 330.19236801192164, - 330.5561658926308, - 330.31374774873257, - 330.38712572306395, - 329.94279684498906, - 330.43100917711854, - 330.25210117921233, - 330.2591652609408, - 330.7500518858433, - 330.9173076413572, - 330.8935328386724, - 331.4599241130054, - 331.1420623213053, - 331.90977293998003, - 331.4678478054702, - 331.64697559550405, - 331.6222191788256, - 332.1308200247586, - 331.95623103529215, - 331.9876501336694, - 332.19810808077455, - 332.1608379483223, - 331.8406930193305, - 332.74902775883675 - ] - }, - "steady_event_ms": { - "median": 330.77415466308594, - "p90": 332.0862609863281, - "samples": [ - 330.2875671386719, - 330.4476623535156, - 330.3128967285156, - 330.02642822265625, - 330.0760498046875, - 330.4735412597656, - 330.14453125, - 330.5077819824219, - 330.26678466796875, - 330.3401184082031, - 329.8956604003906, - 330.38226318359375, - 330.2050476074219, - 330.2127685546875, - 330.70166015625, - 330.868896484375, - 330.8466491699219, - 331.4126281738281, - 331.09356689453125, - 331.86346435546875, - 331.41925048828125, - 331.59820556640625, - 331.57354736328125, - 332.083251953125, - 331.9096984863281, - 331.93780517578125, - 332.1499938964844, - 332.11334228515625, - 331.79534912109375, - 332.7011413574219 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 184863.41063678265, - 318.69301572442055, - 325.90644201263785, - 326.4760780148208, - 326.85983274132013, - 327.71198311820626, - 326.58566534519196, - 326.67806977406144, - 326.1484792456031 - ], - "event_ms_including_first": [ - 184862.703125, - 318.6546630859375, - 325.8702697753906, - 326.44232177734375, - 326.8256530761719, - 327.6793212890625, - 326.5516357421875, - 326.6380310058594, - 326.11578369140625 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/wk/cwke62t4jonhwstpp2av3vhx2ebs2wn33ourpfxruiy6da3or2ek.py" - ], - "routes": [ - { - "sha256": "89c0788df7356f657c542a03021870e433d7a073ee758b2e248ae5f4fa5a0900", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "elapsed_s": 214.28966283798218 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_ECS_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" - } - } - }, - { - "run": "Pro_n512_TORCH_p0", - "result": { - "status": "oom", - "mode": "TORCH", - "n_atoms": 512, - "started": 1792870737.0522878, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/b6/cb6y74z5wjdb23bsj7sgwz7n4l6tpvrsmehqafsc5rp6ytf6afxd.py\", line 23148, in call\n buf476 = empty_strided_cuda((1, 16*s29, 128), (2048*s29, 128, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 634.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 153.06 MiB is free. Including non-PyTorch memory, this process has 31.17 GiB memory in use. Of the allocated memory 30.43 GiB is allocated by PyTorch, and 62.92 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", - "partial_arrays": 0, - "complete_peak": { - "allocated": 32676858368, - "reserved": 32847691776 - }, - "elapsed_s": 138.26069927215576 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_TORCH_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" - } - } - }, - { - "run": "Pro_n512_TORCH_p1", - "result": { - "status": "oom", - "mode": "TORCH", - "n_atoms": 512, - "started": 1792871760.549256, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/b6/cb6y74z5wjdb23bsj7sgwz7n4l6tpvrsmehqafsc5rp6ytf6afxd.py\", line 23148, in call\n buf476 = empty_strided_cuda((1, 16*s29, 128), (2048*s29, 128, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 634.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 153.06 MiB is free. Including non-PyTorch memory, this process has 31.17 GiB memory in use. Of the allocated memory 30.43 GiB is allocated by PyTorch, and 62.92 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", - "partial_arrays": 0, - "complete_peak": { - "allocated": 32676858368, - "reserved": 32847691776 - }, - "elapsed_s": 136.69677186012268 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_TORCH_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" - } - } - }, - { - "run": "Pro_n512_TORCH_p2", - "result": { - "status": "oom", - "mode": "TORCH", - "n_atoms": 512, - "started": 1792871905.773682, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "bf70d484ff4dc5117009b05a348a5f4a7a201d16571d4aa92768d0110eb584e1", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "exception": "Traceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 156, in execute\n n_batch, result = callable(batch_nframes, start_index)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 243, in execute_with_batch_size\n return (end_index - start_index), callable(\n ^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 730, in _eval_model\n batch_output = model(\n ^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 201, in forward\n model_pred = self._forward_without_loss(task_key, input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/train/wrapper.py\", line 249, in _forward_without_loss\n model_pred = self.model[task_key](**input_dict)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1779, in _wrapped_call_impl\n return self._call_impl(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/nn/modules/module.py\", line 1790, in _call_impl\n return forward_call(*args, **kwargs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 839, in forward\n model_ret = self.forward_common(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1053, in forward_common\n return self.forward_common_lower(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 1217, in forward_common_lower\n model_predict = compiled_core_compute(\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/model/model/sezm_model.py\", line 2399, in compiled\n return dict(zip(_keys, _fn(*args)))\n ^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/aot_autograd.py\", line 1200, in forward\n return compiled_fn(full_args)\n ^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 580, in runtime_wrapper\n all_outs = call_func_at_runtime_with_args(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/utils.py\", line 138, in call_func_at_runtime_with_args\n out = normalize_as_list(f(args))\n ^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 783, in wrapper\n return compiled_fn(runtime_args)\n ^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_functorch/_aot_autograd/runtime_wrappers.py\", line 1011, in inner_fn\n outs = compiled_fn(args)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/output_code.py\", line 656, in __call__\n return self.current_callable(inputs)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/torch/_inductor/utils.py\", line 3401, in run\n out = model(new_inputs)\n ^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/b6/cb6y74z5wjdb23bsj7sgwz7n4l6tpvrsmehqafsc5rp6ytf6afxd.py\", line 23148, in call\n buf476 = empty_strided_cuda((1, 16*s29, 128), (2048*s29, 128, 1), torch.float32)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\ntorch.OutOfMemoryError: CUDA out of memory. Tried to allocate 634.00 MiB. GPU 0 has a total capacity of 31.36 GiB of which 153.06 MiB is free. Including non-PyTorch memory, this process has 31.17 GiB memory in use. Of the allocated memory 30.43 GiB is allocated by PyTorch, and 62.92 MiB is reserved by PyTorch but unallocated. If reserved but unallocated memory is large try setting PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True to avoid fragmentation. See documentation for Memory Management (https://docs.pytorch.org/docs/stable/notes/cuda.html#optimizing-memory-usage-with-pytorch-cuda-alloc-conf)\n\nThe above exception was the direct cause of the following exception:\n\nTraceback (most recent call last):\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 243, in \n out = evaluate(pos)\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/worker.py\", line 224, in evaluate\n forces = sample.get_forces().copy()\n ^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/atoms.py\", line 2015, in get_forces\n forces = self._calc.get_forces(self)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/abc.py\", line 31, in get_forces\n return self.get_property('forces', atoms)\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/anaconda3/envs/p11/lib/python3.11/site-packages/ase/calculators/calculator.py\", line 517, in get_property\n self.calculate(atoms, [name], system_changes)\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/calculator.py\", line 143, in calculate\n e, f, v = self.dp.eval(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/infer/deep_pot.py\", line 206, in eval\n results = self.deep_eval.eval(\n ^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 556, in eval\n out = self._eval_func(self._eval_model, numb_test, natoms)(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/pt/infer/deep_eval.py\", line 637, in eval_func\n return self.auto_batch_size.execute_all(\n ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 272, in execute_all\n n_batch, result = self.execute(\n ^^^^^^^^^^^^^\n File \"/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base/deepmd/utils/batch_size.py\", line 169, in execute\n raise OutOfMemoryError(\ndeepmd.utils.errors.OutOfMemoryError: The callable still throws an out-of-memory (OOM) error even when batch size is 1!\n", - "partial_arrays": 0, - "complete_peak": { - "allocated": 32676858368, - "reserved": 32847691776 - }, - "elapsed_s": 137.19549584388733 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n512_TORCH_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[4, 4, 4]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" - } - } - }, - { - "run": "Pro_n96_BASE_p0", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 96, - "started": 1792869022.2745385, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "first_peak": { - "allocated": 5139665408, - "reserved": 5251268608 - }, - "steady_peak": { - "allocated": 5039002112, - "reserved": 5251268608 - }, - "full_window_peak": { - "allocated": 5139665408, - "reserved": 5251268608 - }, - "steady_wall_ms": { - "median": 66.9921007938683, - "p90": 67.23123360425234, - "min": 66.28315104171634, - "max": 67.34666088595986, - "samples": [ - 66.28315104171634, - 67.12422985583544, - 66.84515345841646, - 66.78998889401555, - 67.34666088595986, - 66.86208536848426, - 66.88198167830706, - 67.22717499360442, - 66.84165634214878, - 66.9632563367486, - 67.13177403435111, - 66.8840566650033, - 67.04936875030398, - 67.04905908554792, - 66.87885709106922, - 67.1760980039835, - 67.02237809076905, - 66.92571518942714, - 67.22007179632783, - 67.05026002600789, - 66.84327917173505, - 67.29254871606827, - 66.93498278036714, - 66.92715780809522, - 67.26776110008359, - 66.93365098908544, - 67.020945250988, - 67.21300771459937, - 66.91920291632414, - 67.03331880271435 - ] - }, - "steady_event_ms": { - "median": 66.94852828979492, - "p90": 67.18829727172852, - "samples": [ - 66.22537231445312, - 67.07968139648438, - 66.8028793334961, - 66.7457275390625, - 67.30355072021484, - 66.81958770751953, - 66.83843231201172, - 67.1842269897461, - 66.79840087890625, - 66.91964721679688, - 67.08422088623047, - 66.84175872802734, - 67.00752258300781, - 67.0057601928711, - 66.83625793457031, - 67.1335678100586, - 66.97993469238281, - 66.88294219970703, - 67.1759033203125, - 67.00790405273438, - 66.79996490478516, - 67.2498550415039, - 66.89282989501953, - 66.8832015991211, - 67.22492980957031, - 66.890625, - 66.97740936279297, - 67.17062377929688, - 66.87721252441406, - 66.99037170410156 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 290820.4663717188, - 68.3974651619792, - 66.40419038012624, - 66.60013971850276, - 66.67718617245555, - 66.1907372996211, - 66.48434139788151, - 66.53663888573647, - 65.66989235579967 - ], - "event_ms_including_first": [ - 290819.59375, - 68.36598205566406, - 66.37340545654297, - 66.56896209716797, - 66.64553833007812, - 66.15894317626953, - 66.45263671875, - 66.48770904541016, - 65.63798522949219 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/dj/cdjnztrtmgoelm4hiuot7ap2blpjqzombzdzqd4mi57jgti5ydmm.py" - ], - "routes": [ - { - "sha256": "c238802cdf7c9f5fb658a32738a5d1e8f3088559235129f9a4d5392f20778c78", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 5139665408, - "reserved": 5251268608 - }, - "elapsed_s": 300.18249249458313 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_BASE_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" - } - } - }, - { - "run": "Pro_n96_BASE_p1", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 96, - "started": 1792869834.6958387, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "first_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "steady_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "full_window_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "steady_wall_ms": { - "median": 66.9666463509202, - "p90": 67.17907297424972, - "min": 66.65548961609602, - "max": 67.19923578202724, - "samples": [ - 67.09735374897718, - 66.85644900426269, - 67.02389474958181, - 66.90442888066173, - 66.76300195977092, - 67.05790990963578, - 66.91758474335074, - 66.74527889117599, - 67.03388411551714, - 66.83632079511881, - 66.65548961609602, - 67.19923578202724, - 67.04385299235582, - 66.72722427174449, - 67.18344707041979, - 66.81560212746263, - 66.86142925173044, - 67.19181220978498, - 66.75575906410813, - 66.98124390095472, - 67.11360486224294, - 66.8010339140892, - 66.9531007297337, - 67.13511468842626, - 66.88117608428001, - 67.06976192072034, - 67.05749873071909, - 66.85143895447254, - 67.17858696356416, - 66.9801919721067 - ] - }, - "steady_event_ms": { - "median": 66.92388916015625, - "p90": 67.13683776855468, - "samples": [ - 67.04617309570312, - 66.81209564208984, - 66.98070526123047, - 66.86041259765625, - 66.72003173828125, - 67.01366424560547, - 66.87353515625, - 66.70198059082031, - 66.9900131225586, - 66.79350280761719, - 66.60931396484375, - 67.15654754638672, - 67.00153350830078, - 66.6843490600586, - 67.14093017578125, - 66.77212524414062, - 66.81948852539062, - 67.14969635009766, - 66.71331024169922, - 66.93743896484375, - 67.07209777832031, - 66.75718688964844, - 66.91033935546875, - 67.0907211303711, - 66.8384017944336, - 67.02732849121094, - 67.01427459716797, - 66.8090591430664, - 67.13638305664062, - 66.93801879882812 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 180828.61531199887, - 68.23502294719219, - 66.08367897570133, - 66.57559890300035, - 66.71374896541238, - 65.842863637954, - 66.19602208957076, - 65.9395968541503, - 65.80487173050642 - ], - "event_ms_including_first": [ - 180828.0, - 68.19926452636719, - 66.05010986328125, - 66.54345703125, - 66.68013000488281, - 65.8121566772461, - 66.16537475585938, - 65.90876770019531, - 65.77356719970703 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/dj/cdjnztrtmgoelm4hiuot7ap2blpjqzombzdzqd4mi57jgti5ydmm.py" - ], - "routes": [ - { - "sha256": "c238802cdf7c9f5fb658a32738a5d1e8f3088559235129f9a4d5392f20778c78", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "elapsed_s": 190.16987586021423 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_BASE_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" - } - } - }, - { - "run": "Pro_n96_BASE_p2", - "result": { - "status": "completed", - "mode": "BASE", - "n_atoms": 96, - "started": 1792870340.1622548, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "first_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "steady_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "full_window_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "steady_wall_ms": { - "median": 67.01431004330516, - "p90": 67.31113758869469, - "min": 66.80838065221906, - "max": 67.39511014893651, - "samples": [ - 67.35904095694423, - 66.84043211862445, - 66.92866887897253, - 67.27537326514721, - 66.95743184536695, - 67.06407386809587, - 67.16816080734134, - 66.98231864720583, - 67.16398289427161, - 67.13506812229753, - 66.92204577848315, - 67.35691661015153, - 67.23001832142472, - 66.87548803165555, - 67.39511014893651, - 66.93094177171588, - 66.93521002307534, - 67.30605103075504, - 66.83585280552506, - 66.91436236724257, - 67.16019613668323, - 66.8587856926024, - 67.01783696189523, - 67.15368386358023, - 66.88862200826406, - 67.10488209500909, - 67.01078312471509, - 66.80838065221906, - 67.21334671601653, - 66.99808035045862 - ] - }, - "steady_event_ms": { - "median": 66.97126388549805, - "p90": 67.268212890625, - "samples": [ - 67.30729675292969, - 66.79714965820312, - 66.88246154785156, - 67.23286437988281, - 66.91449737548828, - 67.02153778076172, - 67.12614440917969, - 66.93958282470703, - 67.12236785888672, - 67.09222412109375, - 66.87852478027344, - 67.31478118896484, - 67.18828582763672, - 66.83360290527344, - 67.35305786132812, - 66.88861083984375, - 66.8924789428711, - 67.26387023925781, - 66.79369354248047, - 66.87030029296875, - 67.11756896972656, - 66.81654357910156, - 66.9747543334961, - 67.11065673828125, - 66.84652709960938, - 67.06278228759766, - 66.9677734375, - 66.76608276367188, - 67.17113494873047, - 66.95597076416016 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 182492.360310629, - 67.84132309257984, - 66.12822599709034, - 66.52928376570344, - 66.25986518338323, - 66.06994708999991, - 66.00199826061726, - 65.97366509959102, - 65.9448797814548 - ], - "event_ms_including_first": [ - 182491.71875, - 67.80614471435547, - 66.09638214111328, - 66.49724578857422, - 66.22819519042969, - 66.03945922851562, - 65.97164916992188, - 65.94265747070312, - 65.9131851196289 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor/dj/cdjnztrtmgoelm4hiuot7ap2blpjqzombzdzqd4mi57jgti5ydmm.py" - ], - "routes": [ - { - "sha256": "c238802cdf7c9f5fb658a32738a5d1e8f3088559235129f9a4d5392f20778c78", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "elapsed_s": 191.84539198875427 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_BASE_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE", - "gpu": "0", - "mode": "BASE", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_BASE/triton" - } - } - }, - { - "run": "Pro_n96_ECS_p0", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 96, - "started": 1792869328.7287183, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "first_peak": { - "allocated": 5139665408, - "reserved": 5251268608 - }, - "steady_peak": { - "allocated": 5039002112, - "reserved": 5251268608 - }, - "full_window_peak": { - "allocated": 5139665408, - "reserved": 5251268608 - }, - "steady_wall_ms": { - "median": 67.0216060243547, - "p90": 67.31665539555252, - "min": 66.84218207374215, - "max": 67.36074108630419, - "samples": [ - 67.04443413764238, - 66.88155559822917, - 67.2841570340097, - 66.93984707817435, - 66.87465310096741, - 67.33817886561155, - 66.85928395017982, - 66.96289032697678, - 67.28431675583124, - 66.84218207374215, - 67.03447457402945, - 67.11677135899663, - 66.97461288422346, - 67.14822025969625, - 67.14022532105446, - 66.90157484263182, - 67.21434509381652, - 66.99353829026222, - 66.87621586024761, - 67.35753500834107, - 67.03237118199468, - 66.8921172618866, - 67.36074108630419, - 66.9412687420845, - 66.96525495499372, - 67.31426389887929, - 67.01084086671472, - 67.08697509020567, - 67.19759292900562, - 66.9855629093945 - ] - }, - "steady_event_ms": { - "median": 66.97763061523438, - "p90": 67.27334365844726, - "samples": [ - 66.98722839355469, - 66.8381118774414, - 67.24121856689453, - 66.89667510986328, - 66.83184051513672, - 67.2957763671875, - 66.81683349609375, - 66.91996765136719, - 67.2402572631836, - 66.79837036132812, - 66.99222564697266, - 67.07270050048828, - 66.93065643310547, - 67.1055679321289, - 67.09667205810547, - 66.8584976196289, - 67.17145538330078, - 66.95120239257812, - 66.83334350585938, - 67.3135986328125, - 66.98886108398438, - 66.85072326660156, - 67.31817626953125, - 66.89647674560547, - 66.9227523803711, - 67.2708511352539, - 66.96803283691406, - 67.04447937011719, - 67.15510559082031, - 66.94380950927734 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 292018.3426467702, - 68.90785414725542, - 66.36788602918386, - 66.84580910950899, - 66.47879583761096, - 66.48411601781845, - 66.36158423498273, - 66.22671987861395, - 66.35075295343995 - ], - "event_ms_including_first": [ - 292017.4375, - 68.87596893310547, - 66.33660888671875, - 66.81407928466797, - 66.44767761230469, - 66.45145416259766, - 66.33036804199219, - 66.19602966308594, - 66.31257629394531 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/a7/ca7hx62lfkd5fk4zaw7yeonirduf42pqxlyj7rcwnn34b5zn3jqb.py" - ], - "routes": [ - { - "sha256": "23a20a629f51e3bdf3ef2e8b8ea229c0208d7f9ff07b2a044274aef87842edd7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 5139665408, - "reserved": 5251268608 - }, - "elapsed_s": 301.32571268081665 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_ECS_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" - } - } - }, - { - "run": "Pro_n96_ECS_p1", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 96, - "started": 1792869635.8521204, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "first_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "steady_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "full_window_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "steady_wall_ms": { - "median": 67.11468147113919, - "p90": 67.31268442235887, - "min": 66.87322119250894, - "max": 67.37907603383064, - "samples": [ - 67.04297196120024, - 67.1861506998539, - 66.9601340778172, - 66.8991100974381, - 67.15326895937324, - 66.94382429122925, - 67.14076502248645, - 67.11777299642563, - 66.87322119250894, - 67.2179120592773, - 67.08178389817476, - 66.8921759352088, - 67.35825724899769, - 67.05887196585536, - 67.04058730974793, - 67.37907603383064, - 67.06242775544524, - 67.14575504884124, - 67.30762077495456, - 67.07955989986658, - 67.29214219376445, - 67.24090501666069, - 67.13323201984167, - 67.27273482829332, - 67.11158994585276, - 66.90174527466297, - 67.37580988556147, - 66.90309708938003, - 66.98023341596127, - 67.29437597095966 - ] - }, - "steady_event_ms": { - "median": 67.06660842895508, - "p90": 67.27064743041993, - "samples": [ - 66.98841857910156, - 67.14173126220703, - 66.91680145263672, - 66.85689544677734, - 67.11084747314453, - 66.901123046875, - 67.09756469726562, - 67.072509765625, - 66.82240295410156, - 67.1747817993164, - 67.036865234375, - 66.84928131103516, - 67.31433868408203, - 67.01599884033203, - 66.99696350097656, - 67.33580780029297, - 67.01974487304688, - 67.10169219970703, - 67.26579284667969, - 67.03472137451172, - 67.24921417236328, - 67.19805145263672, - 67.08975982666016, - 67.22908782958984, - 67.06070709228516, - 66.85791778564453, - 67.3326416015625, - 66.85929870605469, - 66.9366683959961, - 67.25062561035156 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 183761.8959029205, - 67.84828193485737, - 66.65026023983955, - 65.93646109104156, - 66.42981339246035, - 65.97097683697939, - 65.93281403183937, - 66.21829373762012, - 65.6415238045156 - ], - "event_ms_including_first": [ - 183761.265625, - 67.81183624267578, - 66.61763000488281, - 65.90380859375, - 66.39810943603516, - 65.9393310546875, - 65.901123046875, - 66.1863021850586, - 65.60991668701172 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/a7/ca7hx62lfkd5fk4zaw7yeonirduf42pqxlyj7rcwnn34b5zn3jqb.py" - ], - "routes": [ - { - "sha256": "23a20a629f51e3bdf3ef2e8b8ea229c0208d7f9ff07b2a044274aef87842edd7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "elapsed_s": 193.15142440795898 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_ECS_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" - } - } - }, - { - "run": "Pro_n96_ECS_p2", - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 96, - "started": 1792870537.64094, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "first_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "steady_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "full_window_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "steady_wall_ms": { - "median": 66.98174891062081, - "p90": 67.2758670989424, - "min": 66.77238270640373, - "max": 67.43228994309902, - "samples": [ - 66.94752397015691, - 66.77578995004296, - 67.32959486544132, - 66.90660677850246, - 66.86823396012187, - 67.19583412632346, - 66.79475493729115, - 66.85337563976645, - 67.14838277548552, - 66.85752421617508, - 67.04799365252256, - 67.13537918403745, - 66.85121217742562, - 67.09966203197837, - 66.98632799088955, - 66.817298065871, - 67.30141304433346, - 66.97716983035207, - 66.77238270640373, - 67.27302866056561, - 67.00771814212203, - 66.91488297656178, - 67.43228994309902, - 66.88201986253262, - 67.02843680977821, - 67.25848186761141, - 66.86967704445124, - 67.02101277187467, - 67.11075315251946, - 66.91189715638757 - ] - }, - "steady_event_ms": { - "median": 66.93849563598633, - "p90": 67.23265533447265, - "samples": [ - 66.88652801513672, - 66.7306900024414, - 67.28495788574219, - 66.86268615722656, - 66.81660461425781, - 67.15094757080078, - 66.75001525878906, - 66.80841827392578, - 67.10460662841797, - 66.81462097167969, - 66.99456024169922, - 67.0917739868164, - 66.8071060180664, - 67.05648040771484, - 66.94316864013672, - 66.76636505126953, - 67.25782775878906, - 66.93382263183594, - 66.72953796386719, - 67.2298583984375, - 66.96358489990234, - 66.87193298339844, - 67.38960266113281, - 66.83846282958984, - 66.98358154296875, - 67.21469116210938, - 66.82704162597656, - 66.97885131835938, - 67.06658935546875, - 66.86761474609375 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 184380.23095112294, - 68.26476287096739, - 66.21601292863488, - 66.39702431857586, - 66.55461201444268, - 66.40376709401608, - 65.654291305691, - 66.04437809437513, - 65.7839858904481 - ], - "event_ms_including_first": [ - 184379.578125, - 68.22889709472656, - 66.1842269897461, - 66.36393737792969, - 66.52339172363281, - 66.37254333496094, - 65.62326049804688, - 66.01360321044922, - 65.75244903564453 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor/a7/ca7hx62lfkd5fk4zaw7yeonirduf42pqxlyj7rcwnn34b5zn3jqb.py" - ], - "routes": [ - { - "sha256": "23a20a629f51e3bdf3ef2e8b8ea229c0208d7f9ff07b2a044274aef87842edd7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "elapsed_s": 193.7130732536316 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_ECS_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS", - "gpu": "0", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_ECS/triton" - } - } - }, - { - "run": "Pro_n96_TORCH_p0", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 96, - "started": 1792868831.5370078, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "first_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - }, - "steady_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - }, - "full_window_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - }, - "steady_wall_ms": { - "median": 126.12425838597119, - "p90": 126.22972396202385, - "min": 125.93523692339659, - "max": 127.33352789655328, - "samples": [ - 127.33352789655328, - 126.02909374982119, - 126.01870484650135, - 125.93523692339659, - 126.07020186260343, - 126.01751182228327, - 126.08600221574306, - 125.96554262563586, - 126.1599506251514, - 125.96464203670621, - 126.08599103987217, - 126.22099695727229, - 126.14881992340088, - 126.17510883137584, - 126.16785615682602, - 126.10947573557496, - 126.08098099008203, - 126.06555176898837, - 126.16321677342057, - 126.08383689075708, - 126.13904103636742, - 126.18489796295762, - 126.10062910243869, - 126.0622157715261, - 126.19968596845865, - 126.31856091320515, - 126.21974386274815, - 126.27851543948054, - 126.22430268675089, - 126.17224408313632 - ] - }, - "steady_event_ms": { - "median": 126.08028793334961, - "p90": 126.18499526977538, - "samples": [ - 127.25997161865234, - 125.98393249511719, - 125.97433471679688, - 125.8921890258789, - 126.0271987915039, - 125.97440338134766, - 126.04268646240234, - 125.92176055908203, - 126.1157455444336, - 125.9221420288086, - 126.0428466796875, - 126.17497253417969, - 126.104736328125, - 126.13142395019531, - 126.12451171875, - 126.06524658203125, - 126.02790069580078, - 126.0218276977539, - 126.1197738647461, - 126.04080200195312, - 126.09532928466797, - 126.14214324951172, - 126.05760192871094, - 126.01878356933594, - 126.15574645996094, - 126.27458953857422, - 126.1767349243164, - 126.23372650146484, - 126.17958068847656, - 126.12850952148438 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 168638.27945897356, - 126.11362291499972, - 125.14735804870725, - 125.85180904716253, - 125.92562800273299, - 125.77640684321523, - 125.67296111956239, - 125.66367397084832, - 125.44110277667642 - ], - "event_ms_including_first": [ - 168637.703125, - 126.0818862915039, - 125.1154556274414, - 125.82006072998047, - 125.89485168457031, - 125.7452163696289, - 125.64067077636719, - 125.63203430175781, - 125.40940856933594 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/ls/clsqzgxpa7uxtqveodta7jnvp73vakead2wqtkfxqx6nqdulfmql.py" - ], - "routes": [ - { - "sha256": "44c10ecad917239b1dfefbafa55b7001b2ff70b1cc1aef4263c520d4280ed57f", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - }, - "elapsed_s": 182.03163504600525 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_TORCH_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" - } - } - }, - { - "run": "Pro_n96_TORCH_p1", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 96, - "started": 1792870030.5519133, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "first_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - }, - "steady_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - }, - "full_window_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - }, - "steady_wall_ms": { - "median": 125.95205777324736, - "p90": 126.08474032022059, - "min": 125.7853233255446, - "max": 126.19026796892285, - "samples": [ - 125.94222882762551, - 125.82059996202588, - 125.86232926696539, - 125.91405585408211, - 125.9614359587431, - 125.88831689208746, - 125.7853233255446, - 125.91033894568682, - 125.90756407007575, - 125.91240322217345, - 125.95973210409284, - 125.9463569149375, - 125.98589202389121, - 125.97653362900019, - 125.91842422261834, - 125.8744508959353, - 126.11088808625937, - 125.9872349910438, - 125.88769709691405, - 126.0822038166225, - 126.08303502202034, - 125.92679960653186, - 126.07453903183341, - 126.19026796892285, - 125.99878618493676, - 126.01390387862921, - 126.10008800402284, - 125.95775863155723, - 126.01868389174342, - 125.91062998399138 - ] - }, - "steady_event_ms": { - "median": 125.90811157226562, - "p90": 126.0417236328125, - "samples": [ - 125.8855972290039, - 125.77497863769531, - 125.81827545166016, - 125.87020874023438, - 125.9176025390625, - 125.84374237060547, - 125.74127960205078, - 125.8664321899414, - 125.8623046875, - 125.86934661865234, - 125.91654205322266, - 125.9023666381836, - 125.9422378540039, - 125.93312072753906, - 125.87459564208984, - 125.8315200805664, - 126.06835174560547, - 125.94278717041016, - 125.84425354003906, - 126.03862762451172, - 126.04013061523438, - 125.88188934326172, - 126.0285415649414, - 126.1473617553711, - 125.95471954345703, - 125.97017669677734, - 126.05606079101562, - 125.91385650634766, - 125.9749755859375, - 125.86764526367188 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 133242.50044487417, - 125.43623289093375, - 124.98298799619079, - 124.87648567184806, - 125.56840293109417, - 125.55616023018956, - 125.52998028695583, - 125.54452801123261, - 125.45398715883493 - ], - "event_ms_including_first": [ - 133242.03125, - 125.39292907714844, - 124.94915008544922, - 124.84307098388672, - 125.53596496582031, - 125.52400207519531, - 125.49779510498047, - 125.5126724243164, - 125.42153930664062 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/ls/clsqzgxpa7uxtqveodta7jnvp73vakead2wqtkfxqx6nqdulfmql.py" - ], - "routes": [ - { - "sha256": "44c10ecad917239b1dfefbafa55b7001b2ff70b1cc1aef4263c520d4280ed57f", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - }, - "elapsed_s": 146.7197926044464 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_TORCH_p1", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "1", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" - } - } - }, - { - "run": "Pro_n96_TORCH_p2", - "result": { - "status": "completed", - "mode": "TORCH", - "n_atoms": 96, - "started": 1792870185.7829502, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "legacy_compatibility": "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged", - "parameter_count": 22678990, - "first_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - }, - "steady_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - }, - "full_window_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - }, - "steady_wall_ms": { - "median": 125.90320548042655, - "p90": 126.1494092643261, - "min": 125.78464113175869, - "max": 126.4430652372539, - "samples": [ - 125.8596838451922, - 126.10630039125681, - 125.84153981879354, - 125.81542879343033, - 125.82497810944915, - 125.88134361431003, - 125.80645270645618, - 125.89597189798951, - 125.92693092301488, - 125.83133019506931, - 125.82906521856785, - 125.89777493849397, - 125.86722709238529, - 125.78464113175869, - 125.82456693053246, - 125.92035811394453, - 126.20186991989613, - 126.1226199567318, - 126.03617692366242, - 125.90714264661074, - 125.88046304881573, - 126.2553408741951, - 125.99412770941854, - 125.89926831424236, - 125.92155067250133, - 125.97376899793744, - 125.93774124979973, - 126.14358030259609, - 126.4430652372539, - 126.00078992545605 - ] - }, - "steady_event_ms": { - "median": 125.8595199584961, - "p90": 126.10106964111328, - "samples": [ - 125.80339050292969, - 126.06192016601562, - 125.79894256591797, - 125.7726058959961, - 125.7820816040039, - 125.83932495117188, - 125.76566314697266, - 125.85318756103516, - 125.88495635986328, - 125.78768157958984, - 125.78816223144531, - 125.85465240478516, - 125.8253402709961, - 125.74114990234375, - 125.78307342529297, - 125.87798309326172, - 126.15939331054688, - 126.08035278320312, - 125.99327850341797, - 125.86438751220703, - 125.83843231201172, - 126.21247863769531, - 125.9521255493164, - 125.84825897216797, - 125.87932586669922, - 125.92384338378906, - 125.89539337158203, - 126.09458923339844, - 126.39952087402344, - 125.95929718017578 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 132589.87243799493, - 125.22077606990933, - 124.63919771835208, - 124.7644149698317, - 125.42540300637484, - 125.46983687207103, - 125.51649520173669, - 125.53387694060802, - 125.27692317962646 - ], - "event_ms_including_first": [ - 132589.390625, - 125.18560028076172, - 124.60675048828125, - 124.7297592163086, - 125.39385223388672, - 125.43782043457031, - 125.48582458496094, - 125.50342559814453, - 125.2452163696289 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor/ls/clsqzgxpa7uxtqveodta7jnvp73vakead2wqtkfxqx6nqdulfmql.py" - ], - "routes": [ - { - "sha256": "44c10ecad917239b1dfefbafa55b7001b2ff70b1cc1aef4263c520d4280ed57f", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "complete_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - }, - "elapsed_s": 145.89792156219482 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/base", - "model": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_accuracy_20261019/models/pro_mptrj/pro_download.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/results/Pro_n96_TORCH_p2", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH", - "gpu": "0", - "mode": "TORCH", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "30", - "warmup": "8" - }, - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "9c8b01082cf01fdcd41fe58e0884364e2166d7acbd4c41f75dda625829a64dbf" - }, - "flags": { - "PYTHONHASHSEED": "0", - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "0", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "0", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Pro_TORCH/triton" - } - } - } - ] -} diff --git a/doc/development/ecs-validation-20261025/summary.json b/doc/development/ecs-validation-20261025/summary.json deleted file mode 100644 index 6689b38866..0000000000 --- a/doc/development/ecs-validation-20261025/summary.json +++ /dev/null @@ -1,11584 +0,0 @@ -{ - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_floor": 1e-08 - }, - "range_definition": "min/max of max_abs over same-frame comparisons; NOT a confidence interval", - "statuses": [ - { - "run": "Mini_n4096_BASE_p0", - "model": "Mini", - "n": 4096, - "mode": "BASE", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "6ed547ece6f59134ef706206c56fd7594f455b73d9fd0d524d07fcecf71c83a7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 7452141568, - "reserved": 8095006720 - }, - "complete_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - } - }, - { - "run": "Mini_n4096_BASE_p1", - "model": "Mini", - "n": 4096, - "mode": "BASE", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "6ed547ece6f59134ef706206c56fd7594f455b73d9fd0d524d07fcecf71c83a7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 7452141568, - "reserved": 8095006720 - }, - "complete_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - } - }, - { - "run": "Mini_n4096_BASE_p2", - "model": "Mini", - "n": 4096, - "mode": "BASE", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "6ed547ece6f59134ef706206c56fd7594f455b73d9fd0d524d07fcecf71c83a7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 7452141568, - "reserved": 8095006720 - }, - "complete_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - } - }, - { - "run": "Mini_n4096_ECS_p0", - "model": "Mini", - "n": 4096, - "mode": "ECS", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "ba83281ec08f12427203faf70f2514e44c06c842c6326c3510b69dd7375504c3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 7452141568, - "reserved": 8095006720 - }, - "complete_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - } - }, - { - "run": "Mini_n4096_ECS_p1", - "model": "Mini", - "n": 4096, - "mode": "ECS", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "ba83281ec08f12427203faf70f2514e44c06c842c6326c3510b69dd7375504c3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 7452141568, - "reserved": 8095006720 - }, - "complete_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - } - }, - { - "run": "Mini_n4096_ECS_p2", - "model": "Mini", - "n": 4096, - "mode": "ECS", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "ba83281ec08f12427203faf70f2514e44c06c842c6326c3510b69dd7375504c3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 7452141568, - "reserved": 8095006720 - }, - "complete_peak": { - "allocated": 7453190144, - "reserved": 8095006720 - } - }, - { - "run": "Mini_n4096_TORCH_p0", - "model": "Mini", - "n": 4096, - "mode": "TORCH", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "d9cbf3a17f5f5b687bee6d5793efbaf9c1726545fed7d540125793f31fe24a8f", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "complete_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - } - }, - { - "run": "Mini_n4096_TORCH_p1", - "model": "Mini", - "n": 4096, - "mode": "TORCH", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "d9cbf3a17f5f5b687bee6d5793efbaf9c1726545fed7d540125793f31fe24a8f", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "complete_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - } - }, - { - "run": "Mini_n4096_TORCH_p2", - "model": "Mini", - "n": 4096, - "mode": "TORCH", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "d9cbf3a17f5f5b687bee6d5793efbaf9c1726545fed7d540125793f31fe24a8f", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - }, - "complete_peak": { - "allocated": 12115697152, - "reserved": 13461618688 - } - }, - { - "run": "Mini_n512_BASE_p0", - "model": "Mini", - "n": 512, - "mode": "BASE", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "65b87bf8215249eac2e03cbb20cb741c8a61edf1f8f0997b9a65e5c6ebaab228", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 944773120, - "reserved": 1052770304 - }, - "complete_peak": { - "allocated": 945821696, - "reserved": 1052770304 - } - }, - { - "run": "Mini_n512_BASE_p1", - "model": "Mini", - "n": 512, - "mode": "BASE", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "65b87bf8215249eac2e03cbb20cb741c8a61edf1f8f0997b9a65e5c6ebaab228", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 944773120, - "reserved": 1052770304 - }, - "complete_peak": { - "allocated": 945821696, - "reserved": 1052770304 - } - }, - { - "run": "Mini_n512_BASE_p2", - "model": "Mini", - "n": 512, - "mode": "BASE", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "65b87bf8215249eac2e03cbb20cb741c8a61edf1f8f0997b9a65e5c6ebaab228", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 944773120, - "reserved": 1052770304 - }, - "complete_peak": { - "allocated": 945821696, - "reserved": 1052770304 - } - }, - { - "run": "Mini_n512_ECS_p0", - "model": "Mini", - "n": 512, - "mode": "ECS", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "ad7d03de10bff6b7698af0e611860f8f311a974be4adb3cc315196bcc2372ef1", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 944773120, - "reserved": 1052770304 - }, - "complete_peak": { - "allocated": 945821696, - "reserved": 1052770304 - } - }, - { - "run": "Mini_n512_ECS_p1", - "model": "Mini", - "n": 512, - "mode": "ECS", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "ad7d03de10bff6b7698af0e611860f8f311a974be4adb3cc315196bcc2372ef1", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 944773120, - "reserved": 1052770304 - }, - "complete_peak": { - "allocated": 945821696, - "reserved": 1052770304 - } - }, - { - "run": "Mini_n512_ECS_p2", - "model": "Mini", - "n": 512, - "mode": "ECS", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "ad7d03de10bff6b7698af0e611860f8f311a974be4adb3cc315196bcc2372ef1", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 944773120, - "reserved": 1052770304 - }, - "complete_peak": { - "allocated": 945821696, - "reserved": 1052770304 - } - }, - { - "run": "Mini_n512_TORCH_p0", - "model": "Mini", - "n": 512, - "mode": "TORCH", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "819c53568da57b620534fc63446dfce6693c9eb0a90cea4e25979860d1a8cb51", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "complete_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - } - }, - { - "run": "Mini_n512_TORCH_p1", - "model": "Mini", - "n": 512, - "mode": "TORCH", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "819c53568da57b620534fc63446dfce6693c9eb0a90cea4e25979860d1a8cb51", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "complete_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - } - }, - { - "run": "Mini_n512_TORCH_p2", - "model": "Mini", - "n": 512, - "mode": "TORCH", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "819c53568da57b620534fc63446dfce6693c9eb0a90cea4e25979860d1a8cb51", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - }, - "complete_peak": { - "allocated": 1528661504, - "reserved": 1723858944 - } - }, - { - "run": "Mini_n96_BASE_p0", - "model": "Mini", - "n": 96, - "mode": "BASE", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "26c1c078b36a0cfd8615a408c5f057d0e14f11a5191d4416efc8cf6d357e96a4", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 286303232, - "reserved": 335544320 - }, - "complete_peak": { - "allocated": 286303232, - "reserved": 335544320 - } - }, - { - "run": "Mini_n96_BASE_p1", - "model": "Mini", - "n": 96, - "mode": "BASE", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "26c1c078b36a0cfd8615a408c5f057d0e14f11a5191d4416efc8cf6d357e96a4", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 189451264, - "reserved": 230686720 - }, - "complete_peak": { - "allocated": 190499840, - "reserved": 230686720 - } - }, - { - "run": "Mini_n96_BASE_p2", - "model": "Mini", - "n": 96, - "mode": "BASE", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "26c1c078b36a0cfd8615a408c5f057d0e14f11a5191d4416efc8cf6d357e96a4", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 189451264, - "reserved": 230686720 - }, - "complete_peak": { - "allocated": 190499840, - "reserved": 230686720 - } - }, - { - "run": "Mini_n96_ECS_p0", - "model": "Mini", - "n": 96, - "mode": "ECS", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "27be9e332efbed712736875b79ff26763add57a318f7542effdfa27c92cd6148", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 286303232, - "reserved": 335544320 - }, - "complete_peak": { - "allocated": 286303232, - "reserved": 335544320 - } - }, - { - "run": "Mini_n96_ECS_p1", - "model": "Mini", - "n": 96, - "mode": "ECS", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "27be9e332efbed712736875b79ff26763add57a318f7542effdfa27c92cd6148", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 189451264, - "reserved": 230686720 - }, - "complete_peak": { - "allocated": 190499840, - "reserved": 230686720 - } - }, - { - "run": "Mini_n96_ECS_p2", - "model": "Mini", - "n": 96, - "mode": "ECS", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "27be9e332efbed712736875b79ff26763add57a318f7542effdfa27c92cd6148", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 189451264, - "reserved": 230686720 - }, - "complete_peak": { - "allocated": 190499840, - "reserved": 230686720 - } - }, - { - "run": "Mini_n96_TORCH_p0", - "model": "Mini", - "n": 96, - "mode": "TORCH", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "4b43a1b1ab027b3a94c3379d411c299005cbbb14e4174a6c3185a78004ed888d", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 400473088, - "reserved": 438304768 - }, - "complete_peak": { - "allocated": 400473088, - "reserved": 438304768 - } - }, - { - "run": "Mini_n96_TORCH_p1", - "model": "Mini", - "n": 96, - "mode": "TORCH", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "4b43a1b1ab027b3a94c3379d411c299005cbbb14e4174a6c3185a78004ed888d", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 299809792, - "reserved": 354418688 - }, - "complete_peak": { - "allocated": 299809792, - "reserved": 354418688 - } - }, - { - "run": "Mini_n96_TORCH_p2", - "model": "Mini", - "n": 96, - "mode": "TORCH", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "13edeea63448c0f8a0b38e08fd8ba196fb1e2fad5f12486b1cd23320829da268", - "routes": [ - { - "sha256": "4b43a1b1ab027b3a94c3379d411c299005cbbb14e4174a6c3185a78004ed888d", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 654988, - "first_peak": { - "allocated": 299809792, - "reserved": 354418688 - }, - "complete_peak": { - "allocated": 299809792, - "reserved": 354418688 - } - }, - { - "run": "Nano_n4096_BASE_p0", - "model": "Nano", - "n": 4096, - "mode": "BASE", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "bbfadf5ea5775e0a16623cb8c6854fad704fc72a15d24e3c3e999da74eaee59e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "complete_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - } - }, - { - "run": "Nano_n4096_BASE_p1", - "model": "Nano", - "n": 4096, - "mode": "BASE", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "bbfadf5ea5775e0a16623cb8c6854fad704fc72a15d24e3c3e999da74eaee59e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "complete_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - } - }, - { - "run": "Nano_n4096_BASE_p2", - "model": "Nano", - "n": 4096, - "mode": "BASE", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "bbfadf5ea5775e0a16623cb8c6854fad704fc72a15d24e3c3e999da74eaee59e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "complete_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - } - }, - { - "run": "Nano_n4096_ECS_p0", - "model": "Nano", - "n": 4096, - "mode": "ECS", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "fe71d505febf0c32eb4c837d76ffa98baf33e57d9d0ae4628705a385edebf3ef", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "complete_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - } - }, - { - "run": "Nano_n4096_ECS_p1", - "model": "Nano", - "n": 4096, - "mode": "ECS", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "fe71d505febf0c32eb4c837d76ffa98baf33e57d9d0ae4628705a385edebf3ef", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "complete_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - } - }, - { - "run": "Nano_n4096_ECS_p2", - "model": "Nano", - "n": 4096, - "mode": "ECS", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "fe71d505febf0c32eb4c837d76ffa98baf33e57d9d0ae4628705a385edebf3ef", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - }, - "complete_peak": { - "allocated": 3910504960, - "reserved": 4169138176 - } - }, - { - "run": "Nano_n4096_TORCH_p0", - "model": "Nano", - "n": 4096, - "mode": "TORCH", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "671320d7fc3f17ba6859418708b63017691791082ef155bff72d047363fd3d2b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "complete_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - } - }, - { - "run": "Nano_n4096_TORCH_p1", - "model": "Nano", - "n": 4096, - "mode": "TORCH", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "671320d7fc3f17ba6859418708b63017691791082ef155bff72d047363fd3d2b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "complete_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - } - }, - { - "run": "Nano_n4096_TORCH_p2", - "model": "Nano", - "n": 4096, - "mode": "TORCH", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "671320d7fc3f17ba6859418708b63017691791082ef155bff72d047363fd3d2b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - }, - "complete_peak": { - "allocated": 6678115328, - "reserved": 6937378816 - } - }, - { - "run": "Nano_n512_BASE_p0", - "model": "Nano", - "n": 512, - "mode": "BASE", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "c11e155658bce0552509e209cbbe6d3cdd3ff19e64909cbc53b5d18edd099a89", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "complete_peak": { - "allocated": 500027904, - "reserved": 566231040 - } - }, - { - "run": "Nano_n512_BASE_p1", - "model": "Nano", - "n": 512, - "mode": "BASE", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "c11e155658bce0552509e209cbbe6d3cdd3ff19e64909cbc53b5d18edd099a89", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "complete_peak": { - "allocated": 500027904, - "reserved": 566231040 - } - }, - { - "run": "Nano_n512_BASE_p2", - "model": "Nano", - "n": 512, - "mode": "BASE", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "c11e155658bce0552509e209cbbe6d3cdd3ff19e64909cbc53b5d18edd099a89", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "complete_peak": { - "allocated": 500027904, - "reserved": 566231040 - } - }, - { - "run": "Nano_n512_ECS_p0", - "model": "Nano", - "n": 512, - "mode": "ECS", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "6542c402bf0c74df1f71266111b5ad040463d8e513f6e2fabb83dbe368c8571c", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "complete_peak": { - "allocated": 500027904, - "reserved": 566231040 - } - }, - { - "run": "Nano_n512_ECS_p1", - "model": "Nano", - "n": 512, - "mode": "ECS", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "6542c402bf0c74df1f71266111b5ad040463d8e513f6e2fabb83dbe368c8571c", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "complete_peak": { - "allocated": 500027904, - "reserved": 566231040 - } - }, - { - "run": "Nano_n512_ECS_p2", - "model": "Nano", - "n": 512, - "mode": "ECS", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "6542c402bf0c74df1f71266111b5ad040463d8e513f6e2fabb83dbe368c8571c", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 500027904, - "reserved": 566231040 - }, - "complete_peak": { - "allocated": 500027904, - "reserved": 566231040 - } - }, - { - "run": "Nano_n512_TORCH_p0", - "model": "Nano", - "n": 512, - "mode": "TORCH", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "752d0803e3c03a8e34aa80861e1dea19b373e140d04e0e08bdbf5ab50de13d29", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "complete_peak": { - "allocated": 845872128, - "reserved": 901775360 - } - }, - { - "run": "Nano_n512_TORCH_p1", - "model": "Nano", - "n": 512, - "mode": "TORCH", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "752d0803e3c03a8e34aa80861e1dea19b373e140d04e0e08bdbf5ab50de13d29", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "complete_peak": { - "allocated": 845872128, - "reserved": 901775360 - } - }, - { - "run": "Nano_n512_TORCH_p2", - "model": "Nano", - "n": 512, - "mode": "TORCH", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "752d0803e3c03a8e34aa80861e1dea19b373e140d04e0e08bdbf5ab50de13d29", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 845872128, - "reserved": 901775360 - }, - "complete_peak": { - "allocated": 845872128, - "reserved": 901775360 - } - }, - { - "run": "Nano_n96_BASE_p0", - "model": "Nano", - "n": 96, - "mode": "BASE", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "cba1a62b4389df004c8aa90085d868da326250d562233dca490331b71c3efd88", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 204831232, - "reserved": 232783872 - }, - "complete_peak": { - "allocated": 204831232, - "reserved": 232783872 - } - }, - { - "run": "Nano_n96_BASE_p1", - "model": "Nano", - "n": 96, - "mode": "BASE", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "cba1a62b4389df004c8aa90085d868da326250d562233dca490331b71c3efd88", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "complete_peak": { - "allocated": 104167936, - "reserved": 127926272 - } - }, - { - "run": "Nano_n96_BASE_p2", - "model": "Nano", - "n": 96, - "mode": "BASE", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "cba1a62b4389df004c8aa90085d868da326250d562233dca490331b71c3efd88", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "complete_peak": { - "allocated": 104167936, - "reserved": 127926272 - } - }, - { - "run": "Nano_n96_ECS_p0", - "model": "Nano", - "n": 96, - "mode": "ECS", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "2bd826f473a672ac42b626c10de39c75d10102ecd71410c6dd4cdebb9320c92a", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 204831232, - "reserved": 232783872 - }, - "complete_peak": { - "allocated": 204831232, - "reserved": 232783872 - } - }, - { - "run": "Nano_n96_ECS_p1", - "model": "Nano", - "n": 96, - "mode": "ECS", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "2bd826f473a672ac42b626c10de39c75d10102ecd71410c6dd4cdebb9320c92a", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "complete_peak": { - "allocated": 104167936, - "reserved": 127926272 - } - }, - { - "run": "Nano_n96_ECS_p2", - "model": "Nano", - "n": 96, - "mode": "ECS", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "2bd826f473a672ac42b626c10de39c75d10102ecd71410c6dd4cdebb9320c92a", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 15, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 104167936, - "reserved": 127926272 - }, - "complete_peak": { - "allocated": 104167936, - "reserved": 127926272 - } - }, - { - "run": "Nano_n96_TORCH_p0", - "model": "Nano", - "n": 96, - "mode": "TORCH", - "gpu": "1", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "b535aa30720bdd4a7b4d7f7f266eeaa7d6205b2217f5ad2c4c7f660b2bd656fc", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 267504640, - "reserved": 295698432 - }, - "complete_peak": { - "allocated": 267504640, - "reserved": 295698432 - } - }, - { - "run": "Nano_n96_TORCH_p1", - "model": "Nano", - "n": 96, - "mode": "TORCH", - "gpu": "1", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "b535aa30720bdd4a7b4d7f7f266eeaa7d6205b2217f5ad2c4c7f660b2bd656fc", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 168914432, - "reserved": 190840832 - }, - "complete_peak": { - "allocated": 168914432, - "reserved": 190840832 - } - }, - { - "run": "Nano_n96_TORCH_p2", - "model": "Nano", - "n": 96, - "mode": "TORCH", - "gpu": "1", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "ded047546c2b44a50e2c850680d77279e2bf3e107c10f1c2fe39a5c344e693f6", - "routes": [ - { - "sha256": "b535aa30720bdd4a7b4d7f7f266eeaa7d6205b2217f5ad2c4c7f660b2bd656fc", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 480268, - "first_peak": { - "allocated": 168914432, - "reserved": 190840832 - }, - "complete_peak": { - "allocated": 168914432, - "reserved": 190840832 - } - }, - { - "run": "NeoCu_n4096_BASE_p0", - "model": "NeoCu", - "n": 4096, - "mode": "BASE", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "0e26451d495a702bb2e2961a6c53a3a22faae697a63f047bb6d44732628a35c4", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - }, - "complete_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - } - }, - { - "run": "NeoCu_n4096_BASE_p1", - "model": "NeoCu", - "n": 4096, - "mode": "BASE", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "0e26451d495a702bb2e2961a6c53a3a22faae697a63f047bb6d44732628a35c4", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - }, - "complete_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - } - }, - { - "run": "NeoCu_n4096_BASE_p2", - "model": "NeoCu", - "n": 4096, - "mode": "BASE", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "0e26451d495a702bb2e2961a6c53a3a22faae697a63f047bb6d44732628a35c4", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - }, - "complete_peak": { - "allocated": 9842754560, - "reserved": 10424942592 - } - }, - { - "run": "NeoCu_n4096_ECS_p0", - "model": "NeoCu", - "n": 4096, - "mode": "ECS", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "4301f667fc125b923f1c0ef2ab927074bc6e243295f83548a285bd10f738a627", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - }, - "complete_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - } - }, - { - "run": "NeoCu_n4096_ECS_p1", - "model": "NeoCu", - "n": 4096, - "mode": "ECS", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "4301f667fc125b923f1c0ef2ab927074bc6e243295f83548a285bd10f738a627", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - }, - "complete_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - } - }, - { - "run": "NeoCu_n4096_ECS_p2", - "model": "NeoCu", - "n": 4096, - "mode": "ECS", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "4301f667fc125b923f1c0ef2ab927074bc6e243295f83548a285bd10f738a627", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - }, - "complete_peak": { - "allocated": 9873422336, - "reserved": 10424942592 - } - }, - { - "run": "NeoCu_n4096_TORCH_p0", - "model": "NeoCu", - "n": 4096, - "mode": "TORCH", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "8a0380038aea6832f7f71fe5f3579c781cae06d887a391fcf883290ae5964e79", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - }, - "complete_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - } - }, - { - "run": "NeoCu_n4096_TORCH_p1", - "model": "NeoCu", - "n": 4096, - "mode": "TORCH", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "8a0380038aea6832f7f71fe5f3579c781cae06d887a391fcf883290ae5964e79", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - }, - "complete_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - } - }, - { - "run": "NeoCu_n4096_TORCH_p2", - "model": "NeoCu", - "n": 4096, - "mode": "TORCH", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "8a0380038aea6832f7f71fe5f3579c781cae06d887a391fcf883290ae5964e79", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - }, - "complete_peak": { - "allocated": 17866908160, - "reserved": 20115881984 - } - }, - { - "run": "NeoCu_n512_BASE_p0", - "model": "NeoCu", - "n": 512, - "mode": "BASE", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "ad560398cb4675c19ec3c164990e43c33e15b273b8be04f5b766a58cf688ed1b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - }, - "complete_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - } - }, - { - "run": "NeoCu_n512_BASE_p1", - "model": "NeoCu", - "n": 512, - "mode": "BASE", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "ad560398cb4675c19ec3c164990e43c33e15b273b8be04f5b766a58cf688ed1b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - }, - "complete_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - } - }, - { - "run": "NeoCu_n512_BASE_p2", - "model": "NeoCu", - "n": 512, - "mode": "BASE", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "ad560398cb4675c19ec3c164990e43c33e15b273b8be04f5b766a58cf688ed1b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - }, - "complete_peak": { - "allocated": 1249555456, - "reserved": 1312817152 - } - }, - { - "run": "NeoCu_n512_ECS_p0", - "model": "NeoCu", - "n": 512, - "mode": "ECS", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "f837a965b99b1209b4b994c0c27f83a2b75ed59ceb52c5aa605c444e35ee8cfc", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - }, - "complete_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - } - }, - { - "run": "NeoCu_n512_ECS_p1", - "model": "NeoCu", - "n": 512, - "mode": "ECS", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "f837a965b99b1209b4b994c0c27f83a2b75ed59ceb52c5aa605c444e35ee8cfc", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - }, - "complete_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - } - }, - { - "run": "NeoCu_n512_ECS_p2", - "model": "NeoCu", - "n": 512, - "mode": "ECS", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "f837a965b99b1209b4b994c0c27f83a2b75ed59ceb52c5aa605c444e35ee8cfc", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - }, - "complete_peak": { - "allocated": 1254748160, - "reserved": 1312817152 - } - }, - { - "run": "NeoCu_n512_TORCH_p0", - "model": "NeoCu", - "n": 512, - "mode": "TORCH", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "4af81d972bc58c4ae73a0ca23b4cc28878f6fd1e9da40d46de82b6e58a95ee51", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - }, - "complete_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - } - }, - { - "run": "NeoCu_n512_TORCH_p1", - "model": "NeoCu", - "n": 512, - "mode": "TORCH", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "4af81d972bc58c4ae73a0ca23b4cc28878f6fd1e9da40d46de82b6e58a95ee51", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - }, - "complete_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - } - }, - { - "run": "NeoCu_n512_TORCH_p2", - "model": "NeoCu", - "n": 512, - "mode": "TORCH", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "4af81d972bc58c4ae73a0ca23b4cc28878f6fd1e9da40d46de82b6e58a95ee51", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - }, - "complete_peak": { - "allocated": 2253040128, - "reserved": 2552233984 - } - }, - { - "run": "NeoCu_n96_BASE_p0", - "model": "NeoCu", - "n": 96, - "mode": "BASE", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "a4f86caeb87b798c89669a0d408b80a7b4c3ef0f9d51db90a8e7482f7c0dc81e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 353757184, - "reserved": 381681664 - }, - "complete_peak": { - "allocated": 353757184, - "reserved": 381681664 - } - }, - { - "run": "NeoCu_n96_BASE_p1", - "model": "NeoCu", - "n": 96, - "mode": "BASE", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "a4f86caeb87b798c89669a0d408b80a7b4c3ef0f9d51db90a8e7482f7c0dc81e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 252135424, - "reserved": 276824064 - }, - "complete_peak": { - "allocated": 253004288, - "reserved": 276824064 - } - }, - { - "run": "NeoCu_n96_BASE_p2", - "model": "NeoCu", - "n": 96, - "mode": "BASE", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "a4f86caeb87b798c89669a0d408b80a7b4c3ef0f9d51db90a8e7482f7c0dc81e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 252135424, - "reserved": 276824064 - }, - "complete_peak": { - "allocated": 253004288, - "reserved": 276824064 - } - }, - { - "run": "NeoCu_n96_ECS_p0", - "model": "NeoCu", - "n": 96, - "mode": "ECS", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "07137055143eed311a30e993d3f2e2a6b5a8231ea70eb201e6327dd4d1c577ca", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 355032576, - "reserved": 381681664 - }, - "complete_peak": { - "allocated": 355032576, - "reserved": 381681664 - } - }, - { - "run": "NeoCu_n96_ECS_p1", - "model": "NeoCu", - "n": 96, - "mode": "ECS", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "07137055143eed311a30e993d3f2e2a6b5a8231ea70eb201e6327dd4d1c577ca", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 254369280, - "reserved": 276824064 - }, - "complete_peak": { - "allocated": 254369280, - "reserved": 276824064 - } - }, - { - "run": "NeoCu_n96_ECS_p2", - "model": "NeoCu", - "n": 96, - "mode": "ECS", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "07137055143eed311a30e993d3f2e2a6b5a8231ea70eb201e6327dd4d1c577ca", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 254369280, - "reserved": 276824064 - }, - "complete_peak": { - "allocated": 254369280, - "reserved": 276824064 - } - }, - { - "run": "NeoCu_n96_TORCH_p0", - "model": "NeoCu", - "n": 96, - "mode": "TORCH", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "93ab40b3e0e376483a7774a65ce47bd9453708174e3b1c36984b719b02af962e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 541384704, - "reserved": 612368384 - }, - "complete_peak": { - "allocated": 541384704, - "reserved": 612368384 - } - }, - { - "run": "NeoCu_n96_TORCH_p1", - "model": "NeoCu", - "n": 96, - "mode": "TORCH", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "93ab40b3e0e376483a7774a65ce47bd9453708174e3b1c36984b719b02af962e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 440721408, - "reserved": 507510784 - }, - "complete_peak": { - "allocated": 440721408, - "reserved": 507510784 - } - }, - { - "run": "NeoCu_n96_TORCH_p2", - "model": "NeoCu", - "n": 96, - "mode": "TORCH", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "93ab40b3e0e376483a7774a65ce47bd9453708174e3b1c36984b719b02af962e", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 440721408, - "reserved": 507510784 - }, - "complete_peak": { - "allocated": 440721408, - "reserved": 507510784 - } - }, - { - "run": "Neo_n4096_BASE_p0", - "model": "Neo", - "n": 4096, - "mode": "BASE", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "b1e59a2969372a19fc391246c26d59c7425ec24133f0006f48af837acd05af1b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - }, - "complete_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - } - }, - { - "run": "Neo_n4096_BASE_p1", - "model": "Neo", - "n": 4096, - "mode": "BASE", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "b1e59a2969372a19fc391246c26d59c7425ec24133f0006f48af837acd05af1b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - }, - "complete_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - } - }, - { - "run": "Neo_n4096_BASE_p2", - "model": "Neo", - "n": 4096, - "mode": "BASE", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "b1e59a2969372a19fc391246c26d59c7425ec24133f0006f48af837acd05af1b", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - }, - "complete_peak": { - "allocated": 22313645056, - "reserved": 23953670144 - } - }, - { - "run": "Neo_n4096_ECS_p0", - "model": "Neo", - "n": 4096, - "mode": "ECS", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "141f28b0d52d57cb774d03932d92a61acb12636892cb98c78cc00bb0e8ed2c97", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "complete_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - } - }, - { - "run": "Neo_n4096_ECS_p1", - "model": "Neo", - "n": 4096, - "mode": "ECS", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "141f28b0d52d57cb774d03932d92a61acb12636892cb98c78cc00bb0e8ed2c97", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "complete_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - } - }, - { - "run": "Neo_n4096_ECS_p2", - "model": "Neo", - "n": 4096, - "mode": "ECS", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "141f28b0d52d57cb774d03932d92a61acb12636892cb98c78cc00bb0e8ed2c97", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - }, - "complete_peak": { - "allocated": 22806378496, - "reserved": 23953670144 - } - }, - { - "run": "Neo_n4096_TORCH_p0", - "model": "Neo", - "n": 4096, - "mode": "TORCH", - "gpu": "0", - "process": "p0", - "status": "oom", - "raw_status": "oom", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 1124910, - "first_peak": null, - "complete_peak": { - "allocated": 32302947328, - "reserved": 32440844288 - } - }, - { - "run": "Neo_n4096_TORCH_p1", - "model": "Neo", - "n": 4096, - "mode": "TORCH", - "gpu": "0", - "process": "p1", - "status": "oom", - "raw_status": "oom", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 1124910, - "first_peak": null, - "complete_peak": { - "allocated": 32302947328, - "reserved": 32440844288 - } - }, - { - "run": "Neo_n4096_TORCH_p2", - "model": "Neo", - "n": 4096, - "mode": "TORCH", - "gpu": "0", - "process": "p2", - "status": "oom", - "raw_status": "oom", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 1124910, - "first_peak": null, - "complete_peak": { - "allocated": 32302947328, - "reserved": 32440844288 - } - }, - { - "run": "Neo_n512_BASE_p0", - "model": "Neo", - "n": 512, - "mode": "BASE", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "558e1a55ec953d53c9330d7b3d7a2343737d1dde28f8be25a60848d4af3f0a46", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - }, - "complete_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - } - }, - { - "run": "Neo_n512_BASE_p1", - "model": "Neo", - "n": 512, - "mode": "BASE", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "558e1a55ec953d53c9330d7b3d7a2343737d1dde28f8be25a60848d4af3f0a46", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - }, - "complete_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - } - }, - { - "run": "Neo_n512_BASE_p2", - "model": "Neo", - "n": 512, - "mode": "BASE", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "558e1a55ec953d53c9330d7b3d7a2343737d1dde28f8be25a60848d4af3f0a46", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - }, - "complete_peak": { - "allocated": 2809000960, - "reserved": 3032481792 - } - }, - { - "run": "Neo_n512_ECS_p0", - "model": "Neo", - "n": 512, - "mode": "ECS", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "19c8da1d296e6ef073a8c0800d9b41638ef7f3a5b42cce1002a98687e067bb11", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "complete_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - } - }, - { - "run": "Neo_n512_ECS_p1", - "model": "Neo", - "n": 512, - "mode": "ECS", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "19c8da1d296e6ef073a8c0800d9b41638ef7f3a5b42cce1002a98687e067bb11", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "complete_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - } - }, - { - "run": "Neo_n512_ECS_p2", - "model": "Neo", - "n": 512, - "mode": "ECS", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "19c8da1d296e6ef073a8c0800d9b41638ef7f3a5b42cce1002a98687e067bb11", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - }, - "complete_peak": { - "allocated": 2871367680, - "reserved": 3032481792 - } - }, - { - "run": "Neo_n512_TORCH_p0", - "model": "Neo", - "n": 512, - "mode": "TORCH", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "87608c81891309b6957cf18a940bf19b63f6fdd161f5cf06568ead5eeae6b151", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "complete_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - } - }, - { - "run": "Neo_n512_TORCH_p1", - "model": "Neo", - "n": 512, - "mode": "TORCH", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "87608c81891309b6957cf18a940bf19b63f6fdd161f5cf06568ead5eeae6b151", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "complete_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - } - }, - { - "run": "Neo_n512_TORCH_p2", - "model": "Neo", - "n": 512, - "mode": "TORCH", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "87608c81891309b6957cf18a940bf19b63f6fdd161f5cf06568ead5eeae6b151", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - }, - "complete_peak": { - "allocated": 5331018240, - "reserved": 6075449344 - } - }, - { - "run": "Neo_n96_BASE_p0", - "model": "Neo", - "n": 96, - "mode": "BASE", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "88a7f76f0c36e917c6c366a7ed05087145a36b37ea5c7765401714f632fae2d3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 646372352, - "reserved": 694157312 - }, - "complete_peak": { - "allocated": 646372352, - "reserved": 694157312 - } - }, - { - "run": "Neo_n96_BASE_p1", - "model": "Neo", - "n": 96, - "mode": "BASE", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "88a7f76f0c36e917c6c366a7ed05087145a36b37ea5c7765401714f632fae2d3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 545709056, - "reserved": 589299712 - }, - "complete_peak": { - "allocated": 545709056, - "reserved": 589299712 - } - }, - { - "run": "Neo_n96_BASE_p2", - "model": "Neo", - "n": 96, - "mode": "BASE", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "88a7f76f0c36e917c6c366a7ed05087145a36b37ea5c7765401714f632fae2d3", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 16, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 545709056, - "reserved": 589299712 - }, - "complete_peak": { - "allocated": 545709056, - "reserved": 589299712 - } - }, - { - "run": "Neo_n96_ECS_p0", - "model": "Neo", - "n": 96, - "mode": "ECS", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "65e175bca1f23233ff9f33a17000de61cb7f6359e00f23d5d6a5a18cde6d2ca7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 658144768, - "reserved": 694157312 - }, - "complete_peak": { - "allocated": 658144768, - "reserved": 694157312 - } - }, - { - "run": "Neo_n96_ECS_p1", - "model": "Neo", - "n": 96, - "mode": "ECS", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "65e175bca1f23233ff9f33a17000de61cb7f6359e00f23d5d6a5a18cde6d2ca7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 557481472, - "reserved": 589299712 - }, - "complete_peak": { - "allocated": 557481472, - "reserved": 589299712 - } - }, - { - "run": "Neo_n96_ECS_p2", - "model": "Neo", - "n": 96, - "mode": "ECS", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "65e175bca1f23233ff9f33a17000de61cb7f6359e00f23d5d6a5a18cde6d2ca7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 557481472, - "reserved": 589299712 - }, - "complete_peak": { - "allocated": 557481472, - "reserved": 589299712 - } - }, - { - "run": "Neo_n96_TORCH_p0", - "model": "Neo", - "n": 96, - "mode": "TORCH", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "ba841b0194a6a580056989d65781eaef17c64480ecff0e1022b08073bc21da08", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 1118501888, - "reserved": 1260388352 - }, - "complete_peak": { - "allocated": 1118501888, - "reserved": 1260388352 - } - }, - { - "run": "Neo_n96_TORCH_p1", - "model": "Neo", - "n": 96, - "mode": "TORCH", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "ba841b0194a6a580056989d65781eaef17c64480ecff0e1022b08073bc21da08", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 1017838592, - "reserved": 1176502272 - }, - "complete_peak": { - "allocated": 1017838592, - "reserved": 1176502272 - } - }, - { - "run": "Neo_n96_TORCH_p2", - "model": "Neo", - "n": 96, - "mode": "TORCH", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "routes": [ - { - "sha256": "ba841b0194a6a580056989d65781eaef17c64480ecff0e1022b08073bc21da08", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 1124910, - "first_peak": { - "allocated": 1017838592, - "reserved": 1176502272 - }, - "complete_peak": { - "allocated": 1017838592, - "reserved": 1176502272 - } - }, - { - "run": "Pro_n4096_BASE_p0", - "model": "Pro", - "n": 4096, - "mode": "BASE", - "gpu": "0", - "process": "p0", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 31929301504, - "reserved": 31989956608 - } - }, - { - "run": "Pro_n4096_BASE_p1", - "model": "Pro", - "n": 4096, - "mode": "BASE", - "gpu": "0", - "process": "p1", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 31929301504, - "reserved": 31989956608 - } - }, - { - "run": "Pro_n4096_BASE_p2", - "model": "Pro", - "n": 4096, - "mode": "BASE", - "gpu": "0", - "process": "p2", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 31929301504, - "reserved": 31989956608 - } - }, - { - "run": "Pro_n4096_ECS_p0", - "model": "Pro", - "n": 4096, - "mode": "ECS", - "gpu": "0", - "process": "p0", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 31929301504, - "reserved": 31989956608 - } - }, - { - "run": "Pro_n4096_ECS_p1", - "model": "Pro", - "n": 4096, - "mode": "ECS", - "gpu": "0", - "process": "p1", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 31929301504, - "reserved": 31989956608 - } - }, - { - "run": "Pro_n4096_ECS_p2", - "model": "Pro", - "n": 4096, - "mode": "ECS", - "gpu": "0", - "process": "p2", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 31929301504, - "reserved": 31989956608 - } - }, - { - "run": "Pro_n4096_TORCH_p0", - "model": "Pro", - "n": 4096, - "mode": "TORCH", - "gpu": "0", - "process": "p0", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 32189347328, - "reserved": 32598130688 - } - }, - { - "run": "Pro_n4096_TORCH_p1", - "model": "Pro", - "n": 4096, - "mode": "TORCH", - "gpu": "0", - "process": "p1", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 32189347328, - "reserved": 32598130688 - } - }, - { - "run": "Pro_n4096_TORCH_p2", - "model": "Pro", - "n": 4096, - "mode": "TORCH", - "gpu": "0", - "process": "p2", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 32189347328, - "reserved": 32598130688 - } - }, - { - "run": "Pro_n512_BASE_p0", - "model": "Pro", - "n": 512, - "mode": "BASE", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "731fde8285e01447b81f62b29a0ff978da2ea857a317a68d380e40ec5b5e266c", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "complete_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - } - }, - { - "run": "Pro_n512_BASE_p1", - "model": "Pro", - "n": 512, - "mode": "BASE", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "731fde8285e01447b81f62b29a0ff978da2ea857a317a68d380e40ec5b5e266c", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "complete_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - } - }, - { - "run": "Pro_n512_BASE_p2", - "model": "Pro", - "n": 512, - "mode": "BASE", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "731fde8285e01447b81f62b29a0ff978da2ea857a317a68d380e40ec5b5e266c", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "complete_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - } - }, - { - "run": "Pro_n512_ECS_p0", - "model": "Pro", - "n": 512, - "mode": "ECS", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "89c0788df7356f657c542a03021870e433d7a073ee758b2e248ae5f4fa5a0900", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "complete_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - } - }, - { - "run": "Pro_n512_ECS_p1", - "model": "Pro", - "n": 512, - "mode": "ECS", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "89c0788df7356f657c542a03021870e433d7a073ee758b2e248ae5f4fa5a0900", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "complete_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - } - }, - { - "run": "Pro_n512_ECS_p2", - "model": "Pro", - "n": 512, - "mode": "ECS", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "89c0788df7356f657c542a03021870e433d7a073ee758b2e248ae5f4fa5a0900", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - }, - "complete_peak": { - "allocated": 25395440640, - "reserved": 26432503808 - } - }, - { - "run": "Pro_n512_TORCH_p0", - "model": "Pro", - "n": 512, - "mode": "TORCH", - "gpu": "0", - "process": "p0", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 32676858368, - "reserved": 32847691776 - } - }, - { - "run": "Pro_n512_TORCH_p1", - "model": "Pro", - "n": 512, - "mode": "TORCH", - "gpu": "0", - "process": "p1", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 32676858368, - "reserved": 32847691776 - } - }, - { - "run": "Pro_n512_TORCH_p2", - "model": "Pro", - "n": 512, - "mode": "TORCH", - "gpu": "0", - "process": "p2", - "status": "oom", - "raw_status": "oom", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": null, - "runtime_cohort_calls": [], - "finite": null, - "parameter_count": 22678990, - "first_peak": null, - "complete_peak": { - "allocated": 32676858368, - "reserved": 32847691776 - } - }, - { - "run": "Pro_n96_BASE_p0", - "model": "Pro", - "n": 96, - "mode": "BASE", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "c238802cdf7c9f5fb658a32738a5d1e8f3088559235129f9a4d5392f20778c78", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 5139665408, - "reserved": 5251268608 - }, - "complete_peak": { - "allocated": 5139665408, - "reserved": 5251268608 - } - }, - { - "run": "Pro_n96_BASE_p1", - "model": "Pro", - "n": 96, - "mode": "BASE", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "c238802cdf7c9f5fb658a32738a5d1e8f3088559235129f9a4d5392f20778c78", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "complete_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - } - }, - { - "run": "Pro_n96_BASE_p2", - "model": "Pro", - "n": 96, - "mode": "BASE", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "c238802cdf7c9f5fb658a32738a5d1e8f3088559235129f9a4d5392f20778c78", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "complete_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - } - }, - { - "run": "Pro_n96_ECS_p0", - "model": "Pro", - "n": 96, - "mode": "ECS", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "23a20a629f51e3bdf3ef2e8b8ea229c0208d7f9ff07b2a044274aef87842edd7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 5139665408, - "reserved": 5251268608 - }, - "complete_peak": { - "allocated": 5139665408, - "reserved": 5251268608 - } - }, - { - "run": "Pro_n96_ECS_p1", - "model": "Pro", - "n": 96, - "mode": "ECS", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "23a20a629f51e3bdf3ef2e8b8ea229c0208d7f9ff07b2a044274aef87842edd7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "complete_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - } - }, - { - "run": "Pro_n96_ECS_p2", - "model": "Pro", - "n": 96, - "mode": "ECS", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "23a20a629f51e3bdf3ef2e8b8ea229c0208d7f9ff07b2a044274aef87842edd7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 22, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - }, - "complete_peak": { - "allocated": 5039002112, - "reserved": 5146411008 - } - }, - { - "run": "Pro_n96_TORCH_p0", - "model": "Pro", - "n": 96, - "mode": "TORCH", - "gpu": "0", - "process": "p0", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "44c10ecad917239b1dfefbafa55b7001b2ff70b1cc1aef4263c520d4280ed57f", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - }, - "complete_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - } - }, - { - "run": "Pro_n96_TORCH_p1", - "model": "Pro", - "n": 96, - "mode": "TORCH", - "gpu": "0", - "process": "p1", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "44c10ecad917239b1dfefbafa55b7001b2ff70b1cc1aef4263c520d4280ed57f", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - }, - "complete_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - } - }, - { - "run": "Pro_n96_TORCH_p2", - "model": "Pro", - "n": 96, - "mode": "TORCH", - "gpu": "0", - "process": "p2", - "status": "completed", - "raw_status": "completed", - "model_sha256": "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221", - "routes": [ - { - "sha256": "44c10ecad917239b1dfefbafa55b7001b2ff70b1cc1aef4263c520d4280ed57f", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 0, - "stack_kernel_definitions": 0, - "single_cohort_marker": false - } - ], - "runtime_cohort_calls": [], - "finite": true, - "parameter_count": 22678990, - "first_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - }, - "complete_peak": { - "allocated": 11443602432, - "reserved": 12025069568 - } - } - ], - "comparisons": [ - { - "model": "Mini", - "n": 96, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7881393432617188e-07, - 1.233816146850586e-05 - ], - "worst_mean_abs": 1.233816146850586e-05, - "worst_max_relative": 1.416921758455966e-08, - "worst_tolerance_ratio": 0.00014167590570081457 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.5851592789247775e-06, - 8.617596497284552e-06 - ], - "worst_mean_abs": 1.6452947202235954e-06, - "worst_max_relative": 0.0018497478678043862, - "worst_tolerance_ratio": 0.49743122659397865 - }, - "virial": { - "comparisons": 27, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.4018322326614374e-05, - 6.537851752597135e-05 - ], - "worst_mean_abs": 2.3585586184957405e-05, - "worst_max_relative": 0.0004595886666005158, - "worst_tolerance_ratio": 1.1462622157226319 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.374943722287465e-08, - 1.200451157090665e-07 - ], - "worst_mean_abs": 4.824250679593079e-08, - "worst_max_relative": 0.0004460271985102069, - "worst_tolerance_ratio": 0.009969723046957445 - } - } - }, - { - "model": "Mini", - "n": 96, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 1.245737075805664e-05 - ], - "worst_mean_abs": 1.245737075805664e-05, - "worst_max_relative": 1.4306118237550574e-08, - "worst_tolerance_ratio": 0.00014304475503125724 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.586683075569198e-06, - 8.061159741945545e-06 - ], - "worst_mean_abs": 1.7352496681320485e-06, - "worst_max_relative": 0.0014360002054703432, - "worst_tolerance_ratio": 0.6027574446859094 - }, - "virial": { - "comparisons": 81, - "failures": 14, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.968132370805847e-06, - 6.371275678773713e-05 - ], - "worst_mean_abs": 2.2463811943121107e-05, - "worst_max_relative": 0.0006158359232471348, - "worst_tolerance_ratio": 1.5990397622921673 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.4630728999848186e-08, - 1.1698652019331846e-07 - ], - "worst_mean_abs": 5.042924779615282e-08, - "worst_max_relative": 0.0006088241358712102, - "worst_tolerance_ratio": 0.009715697856603459 - } - } - }, - { - "model": "Mini", - "n": 96, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 9.894371032714844e-06 - ], - "worst_mean_abs": 9.894371032714844e-06, - "worst_max_relative": 1.1362754070689298e-08, - "worst_tolerance_ratio": 0.000113614493151467 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.567110858388901e-06, - 6.735393310197679e-06 - ], - "worst_mean_abs": 1.5630126849325299e-06, - "worst_max_relative": 0.0010701804245316763, - "worst_tolerance_ratio": 0.5406788825291937 - }, - "virial": { - "comparisons": 27, - "failures": 3, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.2506841042148054e-05, - 4.618986472415543e-05 - ], - "worst_mean_abs": 2.1923724247246363e-05, - "worst_max_relative": 0.0006836330678242167, - "worst_tolerance_ratio": 1.8636489588305836 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.2944699759270876e-08, - 8.481176792113354e-08 - ], - "worst_mean_abs": 4.4265682171617735e-08, - "worst_max_relative": 0.0006623899265650781, - "worst_tolerance_ratio": 0.007794465993601513 - } - } - }, - { - "model": "Mini", - "n": 96, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 1.049041748046875e-05 - ], - "worst_mean_abs": 1.049041748046875e-05, - "worst_max_relative": 1.2042544196125322e-08, - "worst_tolerance_ratio": 0.00012041161922970797 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.451085892087647e-06, - 7.551010226203303e-06 - ], - "worst_mean_abs": 1.6166397395797925e-06, - "worst_max_relative": 0.0017502364329796283, - "worst_tolerance_ratio": 0.708387206179095 - }, - "virial": { - "comparisons": 81, - "failures": 13, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0167628803903206e-05, - 4.643585272035011e-05 - ], - "worst_mean_abs": 2.338441503512022e-05, - "worst_max_relative": 0.0006004846661019456, - "worst_tolerance_ratio": 1.7011461516165967 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.8093194734114526e-08, - 8.526344009995857e-08 - ], - "worst_mean_abs": 4.901534538149935e-08, - "worst_max_relative": 0.0005827848956944561, - "worst_tolerance_ratio": 0.007140777494673699 - } - } - }, - { - "model": "Mini", - "n": 96, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5762786865234375e-07, - 1.7404556274414062e-05 - ], - "worst_mean_abs": 1.7404556274414062e-05, - "worst_max_relative": 1.998749535719579e-08, - "worst_tolerance_ratio": 0.0001998520024498028 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.5427882761073235e-06, - 7.322213479543649e-06 - ], - "worst_mean_abs": 1.5793111843283148e-06, - "worst_max_relative": 0.0013357623707875709, - "worst_tolerance_ratio": 0.4052419714863201 - }, - "virial": { - "comparisons": 27, - "failures": 3, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.100803435355907e-06, - 7.174196631964946e-05 - ], - "worst_mean_abs": 2.0665183024891496e-05, - "worst_max_relative": 0.0008537729903697384, - "worst_tolerance_ratio": 2.1288940173569753 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.2852935748016879e-08, - 1.3172939634931158e-07 - ], - "worst_mean_abs": 5.0659184086449125e-08, - "worst_max_relative": 0.0008498986778017871, - "worst_tolerance_ratio": 0.010932546197629085 - } - } - }, - { - "model": "Mini", - "n": 96, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 1.6987323760986328e-05 - ], - "worst_mean_abs": 1.6987323760986328e-05, - "worst_max_relative": 1.9508342681312706e-08, - "worst_tolerance_ratio": 0.00019506102589000125 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.675254167807452e-06, - 8.279643083142219e-06 - ], - "worst_mean_abs": 1.6204415573252495e-06, - "worst_max_relative": 0.0014260943841486857, - "worst_tolerance_ratio": 0.443350530178709 - }, - "virial": { - "comparisons": 81, - "failures": 10, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.8420303654968e-06, - 5.6949620262258804e-05 - ], - "worst_mean_abs": 2.00412314270457e-05, - "worst_max_relative": 0.0008570884254616711, - "worst_tolerance_ratio": 2.1371557834702766 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.5722284017778015e-08, - 1.045683507769346e-07 - ], - "worst_mean_abs": 4.4975552207923826e-08, - "worst_max_relative": 0.0008510951683932976, - "worst_tolerance_ratio": 0.008678386260442037 - } - } - }, - { - "model": "Mini", - "n": 96, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 1.8358230590820312e-05 - ], - "worst_mean_abs": 1.8358230590820312e-05, - "worst_max_relative": 2.107445189908678e-08, - "worst_tolerance_ratio": 0.00021072032921168313 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.615790030333301e-06, - 1.0795217256998058e-05 - ], - "worst_mean_abs": 2.250797889365048e-06, - "worst_max_relative": 0.003045970895385988, - "worst_tolerance_ratio": 0.7264355534849087 - }, - "virial": { - "comparisons": 243, - "failures": 32, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.9716882228237864e-05, - 8.236935342331719e-05 - ], - "worst_mean_abs": 2.6843246528783658e-05, - "worst_max_relative": 0.0007029481626625702, - "worst_tolerance_ratio": 1.7538309865704984 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.3876430664565166e-08, - 1.5124293019710966e-07 - ], - "worst_mean_abs": 5.218876120705357e-08, - "worst_max_relative": 0.0006944085567479419, - "worst_tolerance_ratio": 0.01256069535165285 - } - } - }, - { - "model": "Mini", - "n": 96, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 1.6510486602783203e-05 - ], - "worst_mean_abs": 1.6510486602783203e-05, - "worst_max_relative": 1.896074043924167e-08, - "worst_tolerance_ratio": 0.00018958563226630743 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.894227733893587e-06, - 1.1352652001583863e-05 - ], - "worst_mean_abs": 2.3180581435227855e-06, - "worst_max_relative": 0.002666781033865539, - "worst_tolerance_ratio": 0.85162882262228 - }, - "virial": { - "comparisons": 243, - "failures": 24, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.4192167690607604e-05, - 9.369597988140299e-05 - ], - "worst_mean_abs": 3.0091570231674217e-05, - "worst_max_relative": 0.0007785652260052627, - "worst_tolerance_ratio": 1.9424929048285287 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.5005290953290793e-08, - 1.7204037613613443e-07 - ], - "worst_mean_abs": 6.386489173450958e-08, - "worst_max_relative": 0.0007729360175636546, - "worst_tolerance_ratio": 0.014278048657737168 - } - } - }, - { - "model": "Mini", - "n": 96, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 1.6629695892333984e-05 - ], - "worst_mean_abs": 1.6629695892333984e-05, - "worst_max_relative": 1.9097641094847065e-08, - "worst_tolerance_ratio": 0.00019095448162288888 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.2144412297773215e-06, - 8.067161711089454e-06 - ], - "worst_mean_abs": 1.6579947654629128e-06, - "worst_max_relative": 0.0018015635521395246, - "worst_tolerance_ratio": 0.5776819336100671 - }, - "virial": { - "comparisons": 243, - "failures": 32, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.232100679933518e-06, - 8.385046110248595e-05 - ], - "worst_mean_abs": 2.6632738738010778e-05, - "worst_max_relative": 0.0007813533137515944, - "worst_tolerance_ratio": 1.9484204442326523 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.4739618969473653e-08, - 1.5396247400947805e-07 - ], - "worst_mean_abs": 6.231073686869095e-08, - "worst_max_relative": 0.0007724462587592696, - "worst_tolerance_ratio": 0.0127777215707106 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.172325134277344e-07, - 3.606081008911133e-05 - ], - "worst_mean_abs": 3.606081008911133e-05, - "worst_max_relative": 7.76559871800836e-09, - "worst_tolerance_ratio": 7.7654314915243e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.8700505549680315e-06, - 7.873360100774107e-06 - ], - "worst_mean_abs": 1.6342186100237065e-06, - "worst_max_relative": 0.02137392966393576, - "worst_tolerance_ratio": 0.6888372481205759 - }, - "virial": { - "comparisons": 27, - "failures": 7, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.876068720958358e-05, - 0.0001708480426003689 - ], - "worst_mean_abs": 6.022830289942327e-05, - "worst_max_relative": 0.0004283714472048604, - "worst_tolerance_ratio": 2.661523934603506 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.492503874894496e-09, - 5.881941562979609e-08 - ], - "worst_mean_abs": 2.5480795527766373e-08, - "worst_max_relative": 0.0004267510777186284, - "worst_tolerance_ratio": 0.004850192967374782 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7881393432617188e-07, - 3.4928321838378906e-05 - ], - "worst_mean_abs": 3.4928321838378906e-05, - "worst_max_relative": 7.521720354585539e-09, - "worst_tolerance_ratio": 7.521558379844737e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.542810268543974e-06, - 8.600727065655178e-06 - ], - "worst_mean_abs": 1.5879309156353189e-06, - "worst_max_relative": 0.02582093245708209, - "worst_tolerance_ratio": 0.6212477904299871 - }, - "virial": { - "comparisons": 81, - "failures": 13, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.6274888021760034e-05, - 0.00013400378033878724 - ], - "worst_mean_abs": 5.194175095534092e-05, - "worst_max_relative": 0.000350935851141657, - "worst_tolerance_ratio": 2.1806969563123086 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.045895612430632e-09, - 4.613470503539441e-08 - ], - "worst_mean_abs": 2.2754256775267616e-08, - "worst_max_relative": 0.0003500280489606905, - "worst_tolerance_ratio": 0.003819526540830247 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.152557373046875e-07, - 3.594160079956055e-05 - ], - "worst_mean_abs": 3.594160079956055e-05, - "worst_max_relative": 7.739927251420353e-09, - "worst_tolerance_ratio": 7.739760577753953e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.392431828621369e-06, - 8.266405139067956e-06 - ], - "worst_mean_abs": 1.5234315504842595e-06, - "worst_max_relative": 0.01378113490866334, - "worst_tolerance_ratio": 0.5562184721723502 - }, - "virial": { - "comparisons": 27, - "failures": 7, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.301648272151624e-05, - 9.671613784689725e-05 - ], - "worst_mean_abs": 4.4626946020932655e-05, - "worst_max_relative": 0.0003975858801059922, - "worst_tolerance_ratio": 2.4706575410910463 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.924094668626536e-09, - 3.329734788587446e-08 - ], - "worst_mean_abs": 1.8954803940220194e-08, - "worst_max_relative": 0.000396447450903835, - "worst_tolerance_ratio": 0.0027492825255001022 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 2.855062484741211e-05 - ], - "worst_mean_abs": 2.855062484741211e-05, - "worst_max_relative": 6.148300467869902e-09, - "worst_tolerance_ratio": 6.148168068719915e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.615764457012062e-06, - 8.581727296230746e-06 - ], - "worst_mean_abs": 1.5426887755226669e-06, - "worst_max_relative": 0.012610946961254164, - "worst_tolerance_ratio": 0.6615389666659056 - }, - "virial": { - "comparisons": 81, - "failures": 20, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.4161929123623906e-05, - 0.00012441258299134006 - ], - "worst_mean_abs": 5.3609852590434194e-05, - "worst_max_relative": 0.00042112258276164787, - "worst_tolerance_ratio": 2.6165009463892956 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.756973171491166e-09, - 4.2832655949842646e-08 - ], - "worst_mean_abs": 2.2190613890498e-08, - "worst_max_relative": 0.00041655694809581757, - "worst_tolerance_ratio": 0.003536590149079609 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539062e-07, - 2.8133392333984375e-05 - ], - "worst_mean_abs": 2.8133392333984375e-05, - "worst_max_relative": 6.057205854635837e-09, - "worst_tolerance_ratio": 6.057075443939518e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.6594547774846404e-06, - 9.532240238030454e-06 - ], - "worst_mean_abs": 1.5488555566602821e-06, - "worst_max_relative": 0.019001726084334307, - "worst_tolerance_ratio": 0.5996927729332756 - }, - "virial": { - "comparisons": 27, - "failures": 8, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.9531045675424963e-05, - 0.00014004510511256285 - ], - "worst_mean_abs": 4.7681163496972166e-05, - "worst_max_relative": 0.00031614377100758786, - "worst_tolerance_ratio": 1.964430898257003 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.450278240352492e-09, - 4.821460707765679e-08 - ], - "worst_mean_abs": 2.040435114301564e-08, - "worst_max_relative": 0.0003058372947108579, - "worst_tolerance_ratio": 0.003980965089196281 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 2.6464462280273438e-05 - ], - "worst_mean_abs": 2.6464462280273438e-05, - "worst_max_relative": 5.697880083598118e-09, - "worst_tolerance_ratio": 5.697757409129546e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.61875165061565e-06, - 8.691154017581582e-06 - ], - "worst_mean_abs": 1.5451270540159125e-06, - "worst_max_relative": 0.01874592619869073, - "worst_tolerance_ratio": 0.6466975261806251 - }, - "virial": { - "comparisons": 81, - "failures": 20, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.6102740609369448e-05, - 0.000144512149532261 - ], - "worst_mean_abs": 5.969438309762055e-05, - "worst_max_relative": 0.0005043471024016478, - "worst_tolerance_ratio": 3.13409831150998 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.543837541810426e-09, - 4.975251724839702e-08 - ], - "worst_mean_abs": 2.616194846953354e-08, - "worst_max_relative": 0.0004982910828880221, - "worst_tolerance_ratio": 0.004102544292440858 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 3.9517879486083984e-05 - ], - "worst_mean_abs": 3.9517879486083984e-05, - "worst_max_relative": 8.510069338908335e-09, - "worst_tolerance_ratio": 8.509886080794399e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.672731766827923e-06, - 1.2100282240856686e-05 - ], - "worst_mean_abs": 2.1287089382524807e-06, - "worst_max_relative": 0.021183281638699564, - "worst_tolerance_ratio": 0.8163209885036864 - }, - "virial": { - "comparisons": 243, - "failures": 51, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.353274376167064e-05, - 0.00025947973966822246 - ], - "worst_mean_abs": 7.981693944329275e-05, - "worst_max_relative": 0.0004363575272525355, - "worst_tolerance_ratio": 2.711142421851518 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.220137173576276e-08, - 8.933345926886993e-08 - ], - "worst_mean_abs": 3.18906144059919e-08, - "worst_max_relative": 0.00043355540414233496, - "worst_tolerance_ratio": 0.007366348358047898 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 3.039836883544922e-05 - ], - "worst_mean_abs": 3.039836883544922e-05, - "worst_max_relative": 6.546207132940424e-09, - "worst_tolerance_ratio": 6.546066165162662e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.603921997612062e-06, - 1.288811181310301e-05 - ], - "worst_mean_abs": 2.1227187158779724e-06, - "worst_max_relative": 0.02493504217862279, - "worst_tolerance_ratio": 0.8157213670077434 - }, - "virial": { - "comparisons": 243, - "failures": 52, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.722543806134354e-05, - 0.0002485018977509412 - ], - "worst_mean_abs": 7.29968931955464e-05, - "worst_max_relative": 0.0004895891540463454, - "worst_tolerance_ratio": 3.042372914348612 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.3472689321689675e-08, - 8.555401739482327e-08 - ], - "worst_mean_abs": 3.0985485426691406e-08, - "worst_max_relative": 0.0004861232090584264, - "worst_tolerance_ratio": 0.0070694500725845336 - } - } - }, - { - "model": "Mini", - "n": 512, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 3.3855438232421875e-05 - ], - "worst_mean_abs": 3.3855438232421875e-05, - "worst_max_relative": 7.290677742631444e-09, - "worst_tolerance_ratio": 7.290520743224289e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.0998196319262945e-06, - 8.80123605906391e-06 - ], - "worst_mean_abs": 1.5515039111673949e-06, - "worst_max_relative": 0.017698981510238004, - "worst_tolerance_ratio": 0.7962971967981481 - }, - "virial": { - "comparisons": 243, - "failures": 68, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.8830477777953547e-05, - 0.00016364893035358818 - ], - "worst_mean_abs": 6.401013160191778e-05, - "worst_max_relative": 0.00049520656086906, - "worst_tolerance_ratio": 3.077286784183512 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.482940524688008e-09, - 5.634091151951459e-08 - ], - "worst_mean_abs": 2.85071094566858e-08, - "worst_max_relative": 0.0004929212804005682, - "worst_tolerance_ratio": 0.0046458190490193275 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.364418029785156e-07, - 7.575750350952148e-05 - ], - "worst_mean_abs": 7.575750350952148e-05, - "worst_max_relative": 2.039078960428672e-09, - "worst_tolerance_ratio": 2.0390734720854414e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.887312545389435e-06, - 1.0042507351926133e-05 - ], - "worst_mean_abs": 1.5514018959796187e-06, - "worst_max_relative": 0.4841481361211562, - "worst_tolerance_ratio": 0.6298192198641505 - }, - "virial": { - "comparisons": 27, - "failures": 7, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.010272805198838e-05, - 0.000349923350086101 - ], - "worst_mean_abs": 0.0001105358174081022, - "worst_max_relative": 0.003086550158219361, - "worst_tolerance_ratio": 10.262340417832934 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.877561112475281e-09, - 1.5058913355875392e-08 - ], - "worst_mean_abs": 5.50391907803487e-09, - "worst_max_relative": 0.003080023074205434, - "worst_tolerance_ratio": 0.0012440707686948483 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7881393432617188e-07, - 7.706880569458008e-05 - ], - "worst_mean_abs": 7.706880569458008e-05, - "worst_max_relative": 2.074373801182864e-09, - "worst_tolerance_ratio": 2.0743682178407497e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.973172319790777e-06, - 8.996672217875812e-06 - ], - "worst_mean_abs": 1.5712966323113763e-06, - "worst_max_relative": 0.34210812674886265, - "worst_tolerance_ratio": 0.7781945595991231 - }, - "virial": { - "comparisons": 81, - "failures": 22, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.729604178712378e-05, - 0.000313717154654114 - ], - "worst_mean_abs": 0.00012283257971014273, - "worst_max_relative": 0.0026867341795021784, - "worst_tolerance_ratio": 8.932233976082555 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.584011183845436e-09, - 1.3500783668102256e-08 - ], - "worst_mean_abs": 6.693462633675451e-09, - "worst_max_relative": 0.002583440977932314, - "worst_tolerance_ratio": 0.0011144708103626643 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.086162567138672e-06, - 9.506940841674805e-05 - ], - "worst_mean_abs": 9.506940841674805e-05, - "worst_max_relative": 2.558875652130973e-09, - "worst_tolerance_ratio": 2.5588687647135715e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.873514546867909e-06, - 9.211481611259842e-06 - ], - "worst_mean_abs": 1.5679747437668933e-06, - "worst_max_relative": 0.2368364860532765, - "worst_tolerance_ratio": 0.6903694378272407 - }, - "virial": { - "comparisons": 27, - "failures": 8, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.354777753538656e-05, - 0.00027771620784733386 - ], - "worst_mean_abs": 0.00010900024692520975, - "worst_max_relative": 0.003116574424636271, - "worst_tolerance_ratio": 10.362786346682652 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5954695297435446e-09, - 1.1951486834915759e-08 - ], - "worst_mean_abs": 5.457016956872711e-09, - "worst_max_relative": 0.0031067302471465266, - "worst_tolerance_ratio": 0.0009869922804633697 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.748603820800781e-07, - 0.00011563301086425781 - ], - "worst_mean_abs": 0.00011563301086425781, - "worst_max_relative": 3.1123638953207768e-09, - "worst_tolerance_ratio": 3.112355518142952e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.000537333823331e-06, - 9.328238273376144e-06 - ], - "worst_mean_abs": 1.5681924454607663e-06, - "worst_max_relative": 0.27579474363081763, - "worst_tolerance_ratio": 0.7364628204244738 - }, - "virial": { - "comparisons": 81, - "failures": 24, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.222449833119924e-05, - 0.0003119138424949597 - ], - "worst_mean_abs": 0.000128328178452233, - "worst_max_relative": 0.003634258042320264, - "worst_tolerance_ratio": 12.054870406865035 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.039966450861734e-09, - 1.342317832581097e-08 - ], - "worst_mean_abs": 7.053429878699607e-09, - "worst_max_relative": 0.0035978141876707686, - "worst_tolerance_ratio": 0.0011075117804315825 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539062e-07, - 7.11679458618164e-05 - ], - "worst_mean_abs": 7.11679458618164e-05, - "worst_max_relative": 1.9155476806969163e-09, - "worst_tolerance_ratio": 1.915542524846208e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.186905859768444e-06, - 1.0065896723476797e-05 - ], - "worst_mean_abs": 1.5828787406664755e-06, - "worst_max_relative": 0.23616733256512695, - "worst_tolerance_ratio": 0.618435933531187 - }, - "virial": { - "comparisons": 27, - "failures": 9, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.141298289856877e-05, - 0.0003645931031996952 - ], - "worst_mean_abs": 0.00013327397860961475, - "worst_max_relative": 0.001857279873251983, - "worst_tolerance_ratio": 6.175467165032391 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.060671382012394e-09, - 1.5690224588332802e-08 - ], - "worst_mean_abs": 7.208393908414001e-09, - "worst_max_relative": 0.0017743016754639823, - "worst_tolerance_ratio": 0.0012969214558460741 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.364418029785156e-07, - 8.416175842285156e-05 - ], - "worst_mean_abs": 8.416175842285156e-05, - "worst_max_relative": 2.26528754278895e-09, - "worst_tolerance_ratio": 2.2652814455852603e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.002038842074398e-06, - 9.465513232553846e-06 - ], - "worst_mean_abs": 1.5703112012795837e-06, - "worst_max_relative": 0.299853230807431, - "worst_tolerance_ratio": 0.7042533660201544 - }, - "virial": { - "comparisons": 81, - "failures": 21, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.396499883796423e-05, - 0.00032958107493641364 - ], - "worst_mean_abs": 0.0001266616853843081, - "worst_max_relative": 0.0022134061082848626, - "worst_tolerance_ratio": 7.359589118177455 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.8920289467094786e-09, - 1.4183485757407466e-08 - ], - "worst_mean_abs": 6.298680528863364e-09, - "worst_max_relative": 0.002196764762364818, - "worst_tolerance_ratio": 0.0011717480115710107 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5762786865234375e-07, - 0.00013875961303710938 - ], - "worst_mean_abs": 0.00013875961303710938, - "worst_max_relative": 3.734836672060098e-09, - "worst_tolerance_ratio": 3.734826619446721e-05 - }, - "forces": { - "comparisons": 243, - "failures": 4, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.300704413739425e-06, - 1.306010295731852e-05 - ], - "worst_mean_abs": 2.0951501276634728e-06, - "worst_max_relative": 0.7128561350601571, - "worst_tolerance_ratio": 1.091126210779255 - }, - "virial": { - "comparisons": 243, - "failures": 74, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0007795617102601682, - 0.001487967335265239 - ], - "worst_mean_abs": 0.0004160018023689174, - "worst_max_relative": 0.0037887916118588966, - "worst_tolerance_ratio": 12.599361967648454 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.354835351188079e-08, - 6.403451262987359e-08 - ], - "worst_mean_abs": 2.4356598416590813e-08, - "worst_max_relative": 0.0036913841218303104, - "worst_tolerance_ratio": 0.005285960051621328 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.3113021850585938e-06, - 0.00014650821685791016 - ], - "worst_mean_abs": 0.00014650821685791016, - "worst_max_relative": 3.943395818043805e-09, - "worst_tolerance_ratio": 3.943385204080263e-05 - }, - "forces": { - "comparisons": 243, - "failures": 2, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.301770815040022e-06, - 1.3982101336296182e-05 - ], - "worst_mean_abs": 2.0993322691486365e-06, - "worst_max_relative": 0.8411676494618848, - "worst_tolerance_ratio": 1.0871898850998793 - }, - "virial": { - "comparisons": 243, - "failures": 68, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0008274944672166384, - 0.0015206115480737026 - ], - "worst_mean_abs": 0.00041518984107876317, - "worst_max_relative": 0.0029647463601591892, - "worst_tolerance_ratio": 9.83702996646307 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5611134503038544e-08, - 6.543935278033319e-08 - ], - "worst_mean_abs": 2.429483871690861e-08, - "worst_max_relative": 0.0029280663704920017, - "worst_tolerance_ratio": 0.005401927654235341 - } - } - }, - { - "model": "Mini", - "n": 4096, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.384185791015625e-07, - 0.00010836124420166016 - ], - "worst_mean_abs": 0.00010836124420166016, - "worst_max_relative": 2.9166379183985426e-09, - "worst_tolerance_ratio": 2.9166300680329313e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.847914238328201e-06, - 1.0045704557426482e-05 - ], - "worst_mean_abs": 1.5699391067650054e-06, - "worst_max_relative": 0.3713656163213515, - "worst_tolerance_ratio": 0.8620743852111383 - }, - "virial": { - "comparisons": 243, - "failures": 75, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.9194144164866884e-05, - 0.0003467675384740687 - ], - "worst_mean_abs": 0.0001766399195278644, - "worst_max_relative": 0.0036114867282294226, - "worst_tolerance_ratio": 11.979337729448476 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.6867157358324558e-09, - 1.4923103346803357e-08 - ], - "worst_mean_abs": 8.585784165328801e-09, - "worst_max_relative": 0.003543489286219986, - "worst_tolerance_ratio": 0.0012312667205949654 - } - } - }, - { - "model": "Nano", - "n": 96, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.76837158203125e-07, - 2.658367156982422e-05 - ], - "worst_mean_abs": 2.658367156982422e-05, - "worst_max_relative": 3.047786189191437e-08, - "worst_tolerance_ratio": 0.00030474368042022386 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.035118747111824e-06, - 1.1300751047826907e-05 - ], - "worst_mean_abs": 2.6139046021347867e-06, - "worst_max_relative": 0.011422249178269698, - "worst_tolerance_ratio": 0.9727200844279131 - }, - "virial": { - "comparisons": 27, - "failures": 22, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.3254307720506064e-05, - 7.838692907147227e-05 - ], - "worst_mean_abs": 2.7261629491780335e-05, - "worst_max_relative": 0.02195899651858405, - "worst_tolerance_ratio": 5.542039325884082 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.3180132940982853e-08, - 1.4393058035840588e-07 - ], - "worst_mean_abs": 6.383664826439014e-08, - "worst_max_relative": 0.02195899651858402, - "worst_tolerance_ratio": 0.014280751572544517 - } - } - }, - { - "model": "Nano", - "n": 96, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 2.4199485778808594e-05 - ], - "worst_mean_abs": 2.4199485778808594e-05, - "worst_max_relative": 2.774442136349156e-08, - "worst_tolerance_ratio": 0.0002774124086336567 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.704151409131498e-06, - 1.135753425351993e-05 - ], - "worst_mean_abs": 2.6760556958552098e-06, - "worst_max_relative": 0.01028568521764019, - "worst_tolerance_ratio": 0.9693601095477619 - }, - "virial": { - "comparisons": 81, - "failures": 69, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.4388859201130977e-05, - 7.6763564094251e-05 - ], - "worst_mean_abs": 2.8458924736321193e-05, - "worst_max_relative": 0.03366112061421433, - "worst_tolerance_ratio": 5.4077417079219385 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.480183089459409e-08, - 1.4094983004624834e-07 - ], - "worst_mean_abs": 6.395878323880071e-08, - "worst_max_relative": 0.033661120614214286, - "worst_tolerance_ratio": 0.014005313095490185 - } - } - }, - { - "model": "Nano", - "n": 96, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 1.2993812561035156e-05 - ], - "worst_mean_abs": 1.2993812561035156e-05, - "worst_max_relative": 1.4896383880756515e-08, - "worst_tolerance_ratio": 0.0001489467632329215 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.957176461597214e-06, - 1.219847896960502e-05 - ], - "worst_mean_abs": 2.4339708814625974e-06, - "worst_max_relative": 0.010774536103967001, - "worst_tolerance_ratio": 0.843671926062053 - }, - "virial": { - "comparisons": 27, - "failures": 23, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.4057827580238325e-05, - 7.483397429419725e-05 - ], - "worst_mean_abs": 2.789921628936086e-05, - "worst_max_relative": 0.03473168729148646, - "worst_tolerance_ratio": 5.706295009126272 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.4047555649575093e-08, - 1.3740680338263523e-07 - ], - "worst_mean_abs": 6.445004020579598e-08, - "worst_max_relative": 0.03473168729148635, - "worst_tolerance_ratio": 0.013635552068828046 - } - } - }, - { - "model": "Nano", - "n": 96, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7881393432617188e-07, - 1.8775463104248047e-05 - ], - "worst_mean_abs": 1.8775463104248047e-05, - "worst_max_relative": 2.1517599884505188e-08, - "worst_tolerance_ratio": 0.00021515134144803222 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.72557216230274e-06, - 1.142189852476605e-05 - ], - "worst_mean_abs": 2.750728753859779e-06, - "worst_max_relative": 0.01021174105948051, - "worst_tolerance_ratio": 0.8491066477551934 - }, - "virial": { - "comparisons": 81, - "failures": 61, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.5930711734224445e-05, - 8.810769552725084e-05 - ], - "worst_mean_abs": 3.232664102218822e-05, - "worst_max_relative": 0.04899263388365851, - "worst_tolerance_ratio": 8.324135188919573 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.580765909310223e-08, - 1.6177941783782068e-07 - ], - "worst_mean_abs": 7.60029539685668e-08, - "worst_max_relative": 0.0489926338836584, - "worst_tolerance_ratio": 0.016054144433566505 - } - } - }, - { - "model": "Nano", - "n": 96, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 1.7940998077392578e-05 - ], - "worst_mean_abs": 1.7940998077392578e-05, - "worst_max_relative": 2.0561261642745318e-08, - "worst_tolerance_ratio": 0.00020558905491582056 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.266433821762064e-06, - 1.0802676997379024e-05 - ], - "worst_mean_abs": 2.440387724502595e-06, - "worst_max_relative": 0.011674485643730784, - "worst_tolerance_ratio": 0.6785042000859941 - }, - "virial": { - "comparisons": 27, - "failures": 21, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.870871411246977e-05, - 8.600860745688887e-05 - ], - "worst_mean_abs": 3.0540871994321086e-05, - "worst_max_relative": 0.022803198274496658, - "worst_tolerance_ratio": 7.360782214300648 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.431688033522437e-08, - 1.579251660159325e-07 - ], - "worst_mean_abs": 7.376562880579572e-08, - "worst_max_relative": 0.02280319827449667, - "worst_tolerance_ratio": 0.015773253742414624 - } - } - }, - { - "model": "Nano", - "n": 96, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 2.1219253540039062e-05 - ], - "worst_mean_abs": 2.1219253540039062e-05, - "worst_max_relative": 2.4327621221648266e-08, - "worst_tolerance_ratio": 0.0002432483240861109 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.01996462471044e-06, - 1.150207725686414e-05 - ], - "worst_mean_abs": 2.658767914610662e-06, - "worst_max_relative": 0.011684682463869259, - "worst_tolerance_ratio": 0.7076685479968887 - }, - "virial": { - "comparisons": 81, - "failures": 65, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1769635933300826e-05, - 8.073652045148538e-05 - ], - "worst_mean_abs": 2.7806840662561757e-05, - "worst_max_relative": 0.027443434227143553, - "worst_tolerance_ratio": 6.463070382870599 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.1610880162730708e-08, - 1.4824479517637056e-07 - ], - "worst_mean_abs": 6.46602327152568e-08, - "worst_max_relative": 0.027443434227143616, - "worst_tolerance_ratio": 0.014730170173660385 - } - } - }, - { - "model": "Nano", - "n": 96, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7881393432617188e-07, - 3.49879264831543e-05 - ], - "worst_mean_abs": 3.49879264831543e-05, - "worst_max_relative": 4.011323975460479e-08, - "worst_tolerance_ratio": 0.0004010864134678731 - }, - "forces": { - "comparisons": 243, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.4539358941573255e-06, - 1.2858642685742439e-05 - ], - "worst_mean_abs": 2.7234350156474433e-06, - "worst_max_relative": 0.011161693266728827, - "worst_tolerance_ratio": 1.022173570244836 - }, - "virial": { - "comparisons": 243, - "failures": 185, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.2186939584268863e-05, - 9.567030189816528e-05 - ], - "worst_mean_abs": 3.726008335803844e-05, - "worst_max_relative": 0.05859439511639781, - "worst_tolerance_ratio": 9.413333499883477 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.1546263129354135e-08, - 1.7566553809903933e-07 - ], - "worst_mean_abs": 8.682843555548287e-08, - "worst_max_relative": 0.05859439511639777, - "worst_tolerance_ratio": 0.017566027181783437 - } - } - }, - { - "model": "Nano", - "n": 96, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 3.981590270996094e-05 - ], - "worst_mean_abs": 3.981590270996094e-05, - "worst_max_relative": 4.5648456824660987e-08, - "worst_tolerance_ratio": 0.0004564322388356716 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.870058909758114e-06, - 1.2694546969171938e-05 - ], - "worst_mean_abs": 2.6515156928153447e-06, - "worst_max_relative": 0.015177571948039396, - "worst_tolerance_ratio": 0.9196429496940467 - }, - "virial": { - "comparisons": 243, - "failures": 199, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.2268853982311256e-05, - 9.163116291466267e-05 - ], - "worst_mean_abs": 3.819176432759419e-05, - "worst_max_relative": 0.03094075753110952, - "worst_tolerance_ratio": 8.097636948657748 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.206769400458762e-08, - 1.6824905138460345e-07 - ], - "worst_mean_abs": 9.012084792699213e-08, - "worst_max_relative": 0.030940757531109517, - "worst_tolerance_ratio": 0.016820841230437998 - } - } - }, - { - "model": "Nano", - "n": 96, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 2.3543834686279297e-05 - ], - "worst_mean_abs": 2.3543834686279297e-05, - "worst_max_relative": 2.699272572174433e-08, - "worst_tolerance_ratio": 0.0002698963139268867 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.351483824218462e-06, - 1.1548657699478326e-05 - ], - "worst_mean_abs": 2.5350481977620223e-06, - "worst_max_relative": 0.015042506058157972, - "worst_tolerance_ratio": 0.9283269860541141 - }, - "virial": { - "comparisons": 243, - "failures": 182, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1366755719721677e-05, - 0.00010139215078763808 - ], - "worst_mean_abs": 4.184010767099227e-05, - "worst_max_relative": 0.0537651936067399, - "worst_tolerance_ratio": 9.135021013642975 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.003032453963549e-08, - 1.861717416350205e-07 - ], - "worst_mean_abs": 9.297942786108079e-08, - "worst_max_relative": 0.0537651936067399, - "worst_tolerance_ratio": 0.01859447118541576 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.940696716308594e-07, - 3.463029861450195e-05 - ], - "worst_mean_abs": 3.463029861450195e-05, - "worst_max_relative": 7.445191871202751e-09, - "worst_tolerance_ratio": 7.445031809948502e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.984270483125556e-06, - 1.4881552797163522e-05 - ], - "worst_mean_abs": 2.493522172549526e-06, - "worst_max_relative": 0.013332092790402336, - "worst_tolerance_ratio": 0.7437119574716415 - }, - "virial": { - "comparisons": 27, - "failures": 19, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.949298599399299e-05, - 0.00019778690363947415 - ], - "worst_mean_abs": 7.473262665322642e-05, - "worst_max_relative": 0.0014566467866051723, - "worst_tolerance_ratio": 7.76731221574246 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.682581363658415e-08, - 6.809390329484862e-08 - ], - "worst_mean_abs": 3.2482721039900765e-08, - "worst_max_relative": 0.0014566467866051751, - "worst_tolerance_ratio": 0.0067922101359849975 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5762786865234375e-07, - 6.020069122314453e-05 - ], - "worst_mean_abs": 6.020069122314453e-05, - "worst_max_relative": 1.2942588349833461e-08, - "worst_tolerance_ratio": 0.0001294231010221114 - }, - "forces": { - "comparisons": 81, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.737049497664628e-06, - 1.2465251465032523e-05 - ], - "worst_mean_abs": 2.5101341260885647e-06, - "worst_max_relative": 0.017122881955507673, - "worst_tolerance_ratio": 1.0676308362780587 - }, - "virial": { - "comparisons": 81, - "failures": 61, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.41439804616428e-05, - 0.00020103534083948382 - ], - "worst_mean_abs": 8.638079329686348e-05, - "worst_max_relative": 0.0014645420064852502, - "worst_tolerance_ratio": 7.814717703793684 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1740919721040313e-08, - 6.92122724309718e-08 - ], - "worst_mean_abs": 3.787224942760197e-08, - "worst_max_relative": 0.00146454200648532, - "worst_tolerance_ratio": 0.006889025230626958 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.3709068298339844e-06, - 5.3048133850097656e-05 - ], - "worst_mean_abs": 5.3048133850097656e-05, - "worst_max_relative": 1.1404238118204803e-08, - "worst_tolerance_ratio": 0.00011403992956232587 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.898732775541873e-06, - 1.2778202936658545e-05 - ], - "worst_mean_abs": 2.395589466837662e-06, - "worst_max_relative": 0.009439384970244302, - "worst_tolerance_ratio": 0.8795867832619659 - }, - "virial": { - "comparisons": 27, - "failures": 17, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.218419969959086e-05, - 0.0001863375109056875 - ], - "worst_mean_abs": 5.863723974401195e-05, - "worst_max_relative": 0.0006978063481917193, - "worst_tolerance_ratio": 4.265644501726467 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.4523139611657531e-08, - 6.415211631474781e-08 - ], - "worst_mean_abs": 2.6431956455353078e-08, - "worst_max_relative": 0.0006959653241890579, - "worst_tolerance_ratio": 0.006385364737316847 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.940696716308594e-07, - 6.389617919921875e-05 - ], - "worst_mean_abs": 6.389617919921875e-05, - "worst_max_relative": 1.3736340933311272e-08, - "worst_tolerance_ratio": 0.0001373604563708494 - }, - "forces": { - "comparisons": 81, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.700007275486143e-06, - 1.3465942494406136e-05 - ], - "worst_mean_abs": 2.487101391573216e-06, - "worst_max_relative": 0.01579288394562737, - "worst_tolerance_ratio": 1.1425422500389155 - }, - "virial": { - "comparisons": 81, - "failures": 52, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.6708642745388858e-05, - 0.00016073718994880082 - ], - "worst_mean_abs": 7.30006640153633e-05, - "worst_max_relative": 0.0008746887823041392, - "worst_tolerance_ratio": 4.643919805360796 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.272789289174559e-09, - 5.533846006411901e-08 - ], - "worst_mean_abs": 3.002464785484302e-08, - "worst_max_relative": 0.0008499145672383013, - "worst_tolerance_ratio": 0.005508099682591605 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.9073486328125e-06, - 4.595518112182617e-05 - ], - "worst_mean_abs": 4.595518112182617e-05, - "worst_max_relative": 9.87790441158721e-09, - "worst_tolerance_ratio": 9.877692094072773e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.712379335307219e-06, - 1.3476952716473534e-05 - ], - "worst_mean_abs": 2.3930112773147866e-06, - "worst_max_relative": 0.01121630319110574, - "worst_tolerance_ratio": 0.778663515428898 - }, - "virial": { - "comparisons": 27, - "failures": 17, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.526895420913334e-05, - 0.00017954259055441568 - ], - "worst_mean_abs": 6.695765811792764e-05, - "worst_max_relative": 0.001321277206290401, - "worst_tolerance_ratio": 7.051295117288195 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.2142364904017301e-08, - 6.181276704147944e-08 - ], - "worst_mean_abs": 2.509405181429396e-08, - "worst_max_relative": 0.0013212772062903778, - "worst_tolerance_ratio": 0.006161189973668341 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0728836059570312e-06, - 5.358457565307617e-05 - ], - "worst_mean_abs": 5.358457565307617e-05, - "worst_max_relative": 1.1519562031512072e-08, - "worst_tolerance_ratio": 0.00011519314390367091 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.398575210399883e-06, - 1.288001496391189e-05 - ], - "worst_mean_abs": 2.4427987209496194e-06, - "worst_max_relative": 0.012996586233104797, - "worst_tolerance_ratio": 0.9127844768758169 - }, - "virial": { - "comparisons": 81, - "failures": 50, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.5492607715827944e-05, - 0.0002203099019918442 - ], - "worst_mean_abs": 7.322412530082663e-05, - "worst_max_relative": 0.0013497919401527234, - "worst_tolerance_ratio": 7.198939118446465 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.09529368935939e-09, - 7.584810159360755e-08 - ], - "worst_mean_abs": 3.181804308844299e-08, - "worst_max_relative": 0.0013497919401527657, - "worst_tolerance_ratio": 0.007565672623535511 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.980232238769531e-07, - 0.00011068582534790039 - ], - "worst_mean_abs": 0.00011068582534790039, - "worst_max_relative": 2.3795134800544376e-08, - "worst_tolerance_ratio": 0.0002379462326596769 - }, - "forces": { - "comparisons": 243, - "failures": 2, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.035994224859678e-06, - 1.4765460413457276e-05 - ], - "worst_mean_abs": 2.5749153977056224e-06, - "worst_max_relative": 0.014952009902741167, - "worst_tolerance_ratio": 1.0825985871267148 - }, - "virial": { - "comparisons": 243, - "failures": 174, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.1996451821992835e-05, - 0.0002575129637439888 - ], - "worst_mean_abs": 9.198199574325352e-05, - "worst_max_relative": 0.0012120980753795904, - "worst_tolerance_ratio": 7.193986898297899 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.81358128576913e-09, - 8.86563393616744e-08 - ], - "worst_mean_abs": 4.0573128805095515e-08, - "worst_max_relative": 0.0012120980753795633, - "worst_tolerance_ratio": 0.008857767458020895 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.67572021484375e-06, - 0.00011020898818969727 - ], - "worst_mean_abs": 0.00011020898818969727, - "worst_max_relative": 2.3692624796018606e-08, - "worst_tolerance_ratio": 0.00023692115465144998 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.28370012406765e-06, - 1.3249488850952673e-05 - ], - "worst_mean_abs": 2.522870688969808e-06, - "worst_max_relative": 0.01743795075709667, - "worst_tolerance_ratio": 0.9695329873582244 - }, - "virial": { - "comparisons": 243, - "failures": 149, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.2549420298112466e-05, - 0.0002559713896210791 - ], - "worst_mean_abs": 9.214669510077606e-05, - "worst_max_relative": 0.0017806529447427586, - "worst_tolerance_ratio": 9.494973492668212 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.763294823290821e-09, - 8.812560756237258e-08 - ], - "worst_mean_abs": 3.887124038716453e-08, - "worst_max_relative": 0.0017806529447427734, - "worst_tolerance_ratio": 0.00880474136993018 - } - } - }, - { - "model": "Nano", - "n": 512, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 6.341934204101562e-05 - ], - "worst_mean_abs": 6.341934204101562e-05, - "worst_max_relative": 1.3633830739067316e-08, - "worst_tolerance_ratio": 0.00013633537646552216 - }, - "forces": { - "comparisons": 243, - "failures": 2, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.381313393535095e-06, - 1.5704685597306423e-05 - ], - "worst_mean_abs": 2.4550383153520332e-06, - "worst_max_relative": 0.012793569215660149, - "worst_tolerance_ratio": 1.0728499748003018 - }, - "virial": { - "comparisons": 243, - "failures": 139, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9037940983744903e-05, - 0.0001981243921470588 - ], - "worst_mean_abs": 7.467182907506932e-05, - "worst_max_relative": 0.0011668279736217655, - "worst_tolerance_ratio": 6.223655361153504 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.658966499672891e-09, - 6.821009354497816e-08 - ], - "worst_mean_abs": 3.42468860080713e-08, - "worst_max_relative": 0.0011668279736218238, - "worst_tolerance_ratio": 0.006803803623997096 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.8477439880371094e-06, - 0.00012600421905517578 - ], - "worst_mean_abs": 0.00012600421905517578, - "worst_max_relative": 3.385886794630645e-09, - "worst_tolerance_ratio": 3.385877696364994e-05 - }, - "forces": { - "comparisons": 27, - "failures": 3, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1194063337605087e-05, - 1.436469968041365e-05 - ], - "worst_mean_abs": 2.458732952715752e-06, - "worst_max_relative": 0.03892709076684017, - "worst_tolerance_ratio": 1.070192602964719 - }, - "virial": { - "comparisons": 27, - "failures": 4, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.543715625577761e-05, - 0.0003779306502913471 - ], - "worst_mean_abs": 0.00017990085929323976, - "worst_max_relative": 0.0002887789282391234, - "worst_tolerance_ratio": 2.4957782473375634 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.385731997101969e-09, - 1.6264204479401502e-08 - ], - "worst_mean_abs": 8.680635094222009e-09, - "worst_max_relative": 0.00026737989081494144, - "worst_tolerance_ratio": 0.001622492542696706 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.748603820800781e-07, - 0.00016123056411743164 - ], - "worst_mean_abs": 0.00016123056411743164, - "worst_max_relative": 4.332461598465538e-09, - "worst_tolerance_ratio": 4.332449956644914e-05 - }, - "forces": { - "comparisons": 81, - "failures": 7, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0853942410626871e-05, - 1.4841700647139078e-05 - ], - "worst_mean_abs": 2.4862790308349375e-06, - "worst_max_relative": 0.05708824944460159, - "worst_tolerance_ratio": 1.2309601439574103 - }, - "virial": { - "comparisons": 81, - "failures": 17, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.049950558890572e-05, - 0.00045035499156398373 - ], - "worst_mean_abs": 0.00022401151677886588, - "worst_max_relative": 0.0003109286363922743, - "worst_tolerance_ratio": 2.68721567005801 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.0339385644626363e-09, - 1.9380978138387826e-08 - ], - "worst_mean_abs": 1.0357143513510908e-08, - "worst_max_relative": 0.000303898822706633, - "worst_tolerance_ratio": 0.0019306574895340647 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0907649993896484e-05, - 0.00019240379333496094 - ], - "worst_mean_abs": 0.00019240379333496094, - "worst_max_relative": 5.170382017202529e-09, - "worst_tolerance_ratio": 5.170368123101013e-05 - }, - "forces": { - "comparisons": 27, - "failures": 1, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0792736174547457e-05, - 1.5634779444440028e-05 - ], - "worst_mean_abs": 2.4477460940651766e-06, - "worst_max_relative": 0.09132854786662761, - "worst_tolerance_ratio": 1.0342767261426666 - }, - "virial": { - "comparisons": 27, - "failures": 7, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.116369214850039e-05, - 0.0004466764672796941 - ], - "worst_mean_abs": 0.00022356648815025082, - "worst_max_relative": 0.00025547352396000937, - "worst_tolerance_ratio": 2.207912131909087 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.24012120407182e-09, - 1.9222673245376277e-08 - ], - "worst_mean_abs": 1.0527450065437097e-08, - "worst_max_relative": 0.0002486875788292611, - "worst_tolerance_ratio": 0.0019186729114243678 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.748603820800781e-07, - 0.0001665949821472168 - ], - "worst_mean_abs": 0.0001665949821472168, - "worst_max_relative": 4.476833249088737e-09, - "worst_tolerance_ratio": 4.476821218725143e-05 - }, - "forces": { - "comparisons": 81, - "failures": 4, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0643711750191187e-05, - 1.4799732036330226e-05 - ], - "worst_mean_abs": 2.4567402547756614e-06, - "worst_max_relative": 0.07865206332271063, - "worst_tolerance_ratio": 1.1947372866710348 - }, - "virial": { - "comparisons": 81, - "failures": 20, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.754667423678143e-05, - 0.0005897658155609165 - ], - "worst_mean_abs": 0.00024008286963100249, - "worst_max_relative": 0.00044594800309919163, - "worst_tolerance_ratio": 3.8539810485232375 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.1979105289569746e-09, - 2.5380507804397033e-08 - ], - "worst_mean_abs": 1.1873345159008154e-08, - "worst_max_relative": 0.0004391542337459121, - "worst_tolerance_ratio": 0.0025326079438563152 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.8014183044433594e-06, - 0.0001946091651916504 - ], - "worst_mean_abs": 0.0001946091651916504, - "worst_max_relative": 5.22935886678652e-09, - "worst_tolerance_ratio": 5.2293448149711035e-05 - }, - "forces": { - "comparisons": 27, - "failures": 3, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1175456462453326e-05, - 1.4239365577983776e-05 - ], - "worst_mean_abs": 2.4474194287229903e-06, - "worst_max_relative": 0.06953393608853117, - "worst_tolerance_ratio": 1.1638200031274741 - }, - "virial": { - "comparisons": 27, - "failures": 7, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.154431510882688e-05, - 0.00044061009040063936 - ], - "worst_mean_abs": 0.0002079444483583042, - "worst_max_relative": 0.00026667792929850934, - "worst_tolerance_ratio": 2.3048400437822814 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.9395996559400334e-09, - 1.8961607375390932e-08 - ], - "worst_mean_abs": 9.96632878796766e-09, - "worst_max_relative": 0.0002605595737708613, - "worst_tolerance_ratio": 0.001890471987509669 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1324882507324219e-06, - 0.00021332502365112305 - ], - "worst_mean_abs": 0.00021332502365112305, - "worst_max_relative": 5.732274234246999e-09, - "worst_tolerance_ratio": 5.732258831047206e-05 - }, - "forces": { - "comparisons": 81, - "failures": 6, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0752314853590406e-05, - 1.6048379860578166e-05 - ], - "worst_mean_abs": 2.448549739974039e-06, - "worst_max_relative": 0.12396052024542256, - "worst_tolerance_ratio": 1.2391513336603077 - }, - "virial": { - "comparisons": 81, - "failures": 30, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.212346994693974e-05, - 0.0005331623947109065 - ], - "worst_mean_abs": 0.00023868102035439086, - "worst_max_relative": 0.0004808419401470173, - "worst_tolerance_ratio": 4.155542380566938 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.673476780451836e-09, - 2.2944585737136856e-08 - ], - "worst_mean_abs": 1.2664086922733401e-08, - "worst_max_relative": 0.0004699970398725036, - "worst_tolerance_ratio": 0.002291857987906579 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.00015562772750854492, - 0.0004886984825134277 - ], - "worst_mean_abs": 0.0004886984825134277, - "worst_max_relative": 1.3132577943719885e-08, - "worst_tolerance_ratio": 0.00013132542653219472 - }, - "forces": { - "comparisons": 243, - "failures": 20, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0685349245420639e-05, - 1.6134124273037287e-05 - ], - "worst_mean_abs": 2.493033185283622e-06, - "worst_max_relative": 0.08439674425088922, - "worst_tolerance_ratio": 1.1697106315880632 - }, - "virial": { - "comparisons": 243, - "failures": 78, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.668388895685439e-05, - 0.0007157398284274308 - ], - "worst_mean_abs": 0.00029509961588406836, - "worst_max_relative": 0.00047794021979316885, - "worst_tolerance_ratio": 4.1304469108090816 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.3877826586902063e-09, - 3.0801785763119724e-08 - ], - "worst_mean_abs": 1.5466780632044995e-08, - "worst_max_relative": 0.00047225253323910537, - "worst_tolerance_ratio": 0.0030735722048295775 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.00017529726028442383, - 0.0005112290382385254 - ], - "worst_mean_abs": 0.0005112290382385254, - "worst_max_relative": 1.3737277371769992e-08, - "worst_tolerance_ratio": 0.00013737240458318604 - }, - "forces": { - "comparisons": 243, - "failures": 21, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.065964285373866e-05, - 1.554137586623483e-05 - ], - "worst_mean_abs": 2.4914368894602174e-06, - "worst_max_relative": 0.10524973492638194, - "worst_tolerance_ratio": 1.4022351898932843 - }, - "virial": { - "comparisons": 243, - "failures": 94, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.483044256595406e-05, - 0.0007942911280416354 - ], - "worst_mean_abs": 0.0002777342063700308, - "worst_max_relative": 0.0005132398482309293, - "worst_tolerance_ratio": 4.435512764644427 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.2203199667448987e-09, - 3.4182232408735275e-08 - ], - "worst_mean_abs": 1.554789537914143e-08, - "worst_max_relative": 0.0004981045287823025, - "worst_tolerance_ratio": 0.003405100740411258 - } - } - }, - { - "model": "Nano", - "n": 4096, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.384185791015625e-07, - 0.00020062923431396484 - ], - "worst_mean_abs": 0.00020062923431396484, - "worst_max_relative": 5.3911246379038345e-09, - "worst_tolerance_ratio": 5.3911101514074564e-05 - }, - "forces": { - "comparisons": 243, - "failures": 15, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.02046518826171e-05, - 1.521846776597613e-05 - ], - "worst_mean_abs": 2.470945554016275e-06, - "worst_max_relative": 0.11231483738954834, - "worst_tolerance_ratio": 1.1517999771437677 - }, - "virial": { - "comparisons": 243, - "failures": 65, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.7536436375606996e-05, - 0.0006358398978356661 - ], - "worst_mean_abs": 0.00030065613964300495, - "worst_max_relative": 0.00048124650276307635, - "worst_tolerance_ratio": 4.159038471811343 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.5011167210513335e-09, - 2.73633009299128e-08 - ], - "worst_mean_abs": 1.536817813195842e-08, - "worst_max_relative": 0.0004650053740359138, - "worst_tolerance_ratio": 0.002730462047462349 - } - } - }, - { - "model": "Neo", - "n": 96, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 1.2218952178955078e-05 - ], - "worst_mean_abs": 1.2218952178955078e-05, - "worst_max_relative": 1.404822983633357e-08, - "worst_tolerance_ratio": 0.0001404661488546509 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.5292873573334873e-06, - 4.929654927821048e-06 - ], - "worst_mean_abs": 9.513644862311272e-07, - "worst_max_relative": 0.004638674921668495, - "worst_tolerance_ratio": 0.3537013249195717 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.0508438630126875e-06, - 2.010897400595013e-05 - ], - "worst_mean_abs": 7.842652981537857e-06, - "worst_max_relative": 0.00011350374801169497, - "worst_tolerance_ratio": 0.5964842201451778 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.974929796926821e-09, - 3.692320050749376e-08 - ], - "worst_mean_abs": 1.7766511474894345e-08, - "worst_max_relative": 8.111371622246874e-05, - "worst_tolerance_ratio": 0.003170311293541825 - } - } - }, - { - "model": "Neo", - "n": 96, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7881393432617188e-07, - 1.0907649993896484e-05 - ], - "worst_mean_abs": 1.0907649993896484e-05, - "worst_max_relative": 1.2540614945974921e-08, - "worst_tolerance_ratio": 0.00012539173306902614 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.5294066485770372e-06, - 4.593928606411168e-06 - ], - "worst_mean_abs": 1.0003936627330419e-06, - "worst_max_relative": 0.004339503857911654, - "worst_tolerance_ratio": 0.3511425680646685 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.7271542833460245e-06, - 2.2220180248666566e-05 - ], - "worst_mean_abs": 1.1087401216636206e-05, - "worst_max_relative": 8.600630514398132e-05, - "worst_tolerance_ratio": 0.4534556751249839 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.077670853381957e-09, - 4.0799703174970725e-08 - ], - "worst_mean_abs": 2.4422016910583103e-08, - "worst_max_relative": 6.374465611914683e-05, - "worst_tolerance_ratio": 0.00350315799506806 - } - } - }, - { - "model": "Neo", - "n": 96, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.76837158203125e-07, - 7.212162017822266e-06 - ], - "worst_mean_abs": 7.212162017822266e-06, - "worst_max_relative": 8.291143630737614e-09, - "worst_tolerance_ratio": 8.290190585579985e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.4827938513993786e-06, - 3.981072563163934e-06 - ], - "worst_mean_abs": 9.777332068374506e-07, - "worst_max_relative": 0.004440288137604662, - "worst_tolerance_ratio": 0.278601217027908 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.6638211956541156e-06, - 2.4433374484544856e-05 - ], - "worst_mean_abs": 9.550385732917973e-06, - "worst_max_relative": 4.886746289491028e-05, - "worst_tolerance_ratio": 0.353177576753191 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.932097300664948e-09, - 4.4863471646006126e-08 - ], - "worst_mean_abs": 2.2065013996264837e-08, - "worst_max_relative": 4.384046645584377e-05, - "worst_tolerance_ratio": 0.003854058436196056 - } - } - }, - { - "model": "Neo", - "n": 96, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 1.0728836059570312e-05 - ], - "worst_mean_abs": 1.0728836059570312e-05, - "worst_max_relative": 1.2333932776086958e-08, - "worst_tolerance_ratio": 0.000123325150229364 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.4367255804236265e-06, - 4.474008306942778e-06 - ], - "worst_mean_abs": 9.537310812961065e-07, - "worst_max_relative": 0.005140328988882451, - "worst_tolerance_ratio": 0.31414043594445706 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.8068621012743442e-06, - 1.9911717682674634e-05 - ], - "worst_mean_abs": 9.476242175997394e-06, - "worst_max_relative": 9.122276360290244e-05, - "worst_tolerance_ratio": 0.4794083101585252 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.350303640573207e-09, - 3.656100724946931e-08 - ], - "worst_mean_abs": 1.8846030457350677e-08, - "worst_max_relative": 8.536461382731986e-05, - "worst_tolerance_ratio": 0.00313559599726432 - } - } - }, - { - "model": "Neo", - "n": 96, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 6.556510925292969e-06 - ], - "worst_mean_abs": 6.556510925292969e-06, - "worst_max_relative": 7.537403330109736e-09, - "worst_tolerance_ratio": 7.536536925414215e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.617044103203625e-06, - 4.197491699997613e-06 - ], - "worst_mean_abs": 9.77104109840347e-07, - "worst_max_relative": 0.004000457046371659, - "worst_tolerance_ratio": 0.26161025256301196 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9861532677699643e-06, - 2.1814021350152757e-05 - ], - "worst_mean_abs": 1.0821510995579548e-05, - "worst_max_relative": 9.056795597399559e-05, - "worst_tolerance_ratio": 0.47595535793391547 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.4830413438733405e-09, - 4.005393233405541e-08 - ], - "worst_mean_abs": 2.3015770961762566e-08, - "worst_max_relative": 8.482321180472642e-05, - "worst_tolerance_ratio": 0.0034408881038877166 - } - } - }, - { - "model": "Neo", - "n": 96, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 6.854534149169922e-06 - ], - "worst_mean_abs": 6.854534149169922e-06, - "worst_max_relative": 7.880714338394668e-09, - "worst_tolerance_ratio": 7.879808390337307e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.5448787361881386e-06, - 4.369367175627303e-06 - ], - "worst_mean_abs": 9.843346283348566e-07, - "worst_max_relative": 0.004802798257328448, - "worst_tolerance_ratio": 0.30042031099406397 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.8811353331169585e-06, - 2.689542427702918e-05 - ], - "worst_mean_abs": 9.74242767070526e-06, - "worst_max_relative": 9.847603378865328e-05, - "worst_tolerance_ratio": 0.5175141186055748 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.126367464888039e-09, - 4.938417757713309e-08 - ], - "worst_mean_abs": 2.4223898629488975e-08, - "worst_max_relative": 8.771776643027683e-05, - "worst_tolerance_ratio": 0.004224298251034028 - } - } - }, - { - "model": "Neo", - "n": 96, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 1.1146068572998047e-05 - ], - "worst_mean_abs": 1.1146068572998047e-05, - "worst_max_relative": 1.2813585553191252e-08, - "worst_tolerance_ratio": 0.00012812112665233692 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.6026129066613066e-06, - 7.195928248826533e-06 - ], - "worst_mean_abs": 1.4477289031709455e-06, - "worst_max_relative": 0.004991325563967691, - "worst_tolerance_ratio": 0.4027901830028564 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.558481747210294e-05, - 4.8242357078009945e-05 - ], - "worst_mean_abs": 1.2158569519076728e-05, - "worst_max_relative": 0.0001107223807077552, - "worst_tolerance_ratio": 0.581898930064548 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.8616146213050753e-08, - 8.858046277038234e-08 - ], - "worst_mean_abs": 2.6374452283337967e-08, - "worst_max_relative": 8.55277261950654e-05, - "worst_tolerance_ratio": 0.007609632671867497 - } - } - }, - { - "model": "Neo", - "n": 96, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 1.1265277862548828e-05 - ], - "worst_mean_abs": 1.1265277862548828e-05, - "worst_max_relative": 1.295178262959534e-08, - "worst_tolerance_ratio": 0.0001295029372367269 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.613759403719996e-06, - 7.184881916089125e-06 - ], - "worst_mean_abs": 1.4201382676375492e-06, - "worst_max_relative": 0.005425549393040054, - "worst_tolerance_ratio": 0.45396971138057834 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.3306026858117548e-05, - 5.232000050803265e-05 - ], - "worst_mean_abs": 1.2914638218675112e-05, - "worst_max_relative": 0.00011253864060446478, - "worst_tolerance_ratio": 0.5914123934500918 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.154417724775648e-08, - 9.606764963046577e-08 - ], - "worst_mean_abs": 3.12265389611832e-08, - "worst_max_relative": 9.652639817913324e-05, - "worst_tolerance_ratio": 0.0082528302796578 - } - } - }, - { - "model": "Neo", - "n": 96, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 1.0371208190917969e-05 - ], - "worst_mean_abs": 1.0371208190917969e-05, - "worst_max_relative": 1.1922801683550726e-08, - "worst_tolerance_ratio": 0.00011921431188838518 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.3042719448085336e-06, - 5.034495302425057e-06 - ], - "worst_mean_abs": 9.622074431785606e-07, - "worst_max_relative": 0.005548211410731083, - "worst_tolerance_ratio": 0.28875031754372155 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.398843617079649e-06, - 2.851101791456756e-05 - ], - "worst_mean_abs": 1.1119525284730085e-05, - "worst_max_relative": 0.0001097695367758418, - "worst_tolerance_ratio": 0.576860973356196 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.1074655978670087e-09, - 5.2350658506089554e-08 - ], - "worst_mean_abs": 2.598937128716781e-08, - "worst_max_relative": 9.69664565027601e-05, - "worst_tolerance_ratio": 0.0044972572878062165 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 1.7762184143066406e-05 - ], - "worst_mean_abs": 1.7762184143066406e-05, - "worst_max_relative": 3.829188468644499e-09, - "worst_tolerance_ratio": 3.82910592041666e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.427400763200694e-06, - 4.335941255817488e-06 - ], - "worst_mean_abs": 9.144892737437244e-07, - "worst_max_relative": 0.018906077111008578, - "worst_tolerance_ratio": 0.318925089142661 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.2780282560242995e-05, - 5.25371857449386e-05 - ], - "worst_mean_abs": 2.2919353829019427e-05, - "worst_max_relative": 5.7882349597817864e-05, - "worst_tolerance_ratio": 0.46742973447334546 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.298465968582965e-09, - 1.808745665049516e-08 - ], - "worst_mean_abs": 8.858438984221196e-09, - "worst_max_relative": 5.1156819634236265e-05, - "worst_tolerance_ratio": 0.0015417467118525852 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.172325134277344e-07, - 1.7344951629638672e-05 - ], - "worst_mean_abs": 1.7344951629638672e-05, - "worst_max_relative": 3.739241074190296e-09, - "worst_tolerance_ratio": 3.739160465015406e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.283364435446856e-06, - 4.900746524150179e-06 - ], - "worst_mean_abs": 9.334273422814792e-07, - "worst_max_relative": 0.017695128956907856, - "worst_tolerance_ratio": 0.3491892943398163 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.085839140824163e-05, - 6.951064172966426e-05 - ], - "worst_mean_abs": 3.013974799712413e-05, - "worst_max_relative": 0.0001055834911299927, - "worst_tolerance_ratio": 0.7339908797563544 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5445477247764146e-09, - 2.3931063321963597e-08 - ], - "worst_mean_abs": 1.3185932999421873e-08, - "worst_max_relative": 8.742986547148492e-05, - "worst_tolerance_ratio": 0.0020413753946800953 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 2.2470951080322266e-05 - ], - "worst_mean_abs": 2.2470951080322266e-05, - "worst_max_relative": 4.84455234896984e-09, - "worst_tolerance_ratio": 4.844447906654952e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.2616043270650152e-06, - 4.2864338993808815e-06 - ], - "worst_mean_abs": 8.94615656465279e-07, - "worst_max_relative": 0.017716756706837183, - "worst_tolerance_ratio": 0.27511285455721096 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.83955252359192e-06, - 6.507779394837598e-05 - ], - "worst_mean_abs": 2.8161610837579903e-05, - "worst_max_relative": 8.679887592713785e-05, - "worst_tolerance_ratio": 0.6033989060368864 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.6989943301136687e-09, - 2.240492634475455e-08 - ], - "worst_mean_abs": 1.206478670899193e-08, - "worst_max_relative": 7.970815172973479e-05, - "worst_tolerance_ratio": 0.0019189589690238615 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 1.8894672393798828e-05 - ], - "worst_mean_abs": 1.8894672393798828e-05, - "worst_max_relative": 4.073536063149886e-09, - "worst_tolerance_ratio": 4.0734482429539425e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9958431078114245e-06, - 5.1440937340885284e-06 - ], - "worst_mean_abs": 9.098327789316442e-07, - "worst_max_relative": 0.018535814732356635, - "worst_tolerance_ratio": 0.3126179764081435 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.897232724791593e-06, - 6.434127831767e-05 - ], - "worst_mean_abs": 2.7364363403337144e-05, - "worst_max_relative": 7.255305327160125e-05, - "worst_tolerance_ratio": 0.504366358505257 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.5892697573699774e-09, - 2.2151359382188707e-08 - ], - "worst_mean_abs": 1.253871189090708e-08, - "worst_max_relative": 6.572729999351975e-05, - "worst_tolerance_ratio": 0.0018927295164782754 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.5367431640625e-07, - 1.8835067749023438e-05 - ], - "worst_mean_abs": 1.8835067749023438e-05, - "worst_max_relative": 4.060685795414326e-09, - "worst_tolerance_ratio": 4.0605982522535385e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.293424150285773e-06, - 5.011788701381192e-06 - ], - "worst_mean_abs": 8.992570804752136e-07, - "worst_max_relative": 0.015306950250063706, - "worst_tolerance_ratio": 0.3634722969117152 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.156022969136757e-06, - 5.707762103668301e-05 - ], - "worst_mean_abs": 1.8265438981016995e-05, - "worst_max_relative": 0.00012189299473723883, - "worst_tolerance_ratio": 0.8473274248267979 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.152227628228088e-09, - 1.965063376602183e-08 - ], - "worst_mean_abs": 7.778489054503841e-09, - "worst_max_relative": 0.0001183785695034749, - "worst_tolerance_ratio": 0.001674989401510884 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 2.0563602447509766e-05 - ], - "worst_mean_abs": 2.0563602447509766e-05, - "worst_max_relative": 4.4331208674764416e-09, - "worst_tolerance_ratio": 4.43302529989769e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.1372686404296246e-06, - 4.858382652628279e-06 - ], - "worst_mean_abs": 9.320082240711654e-07, - "worst_max_relative": 0.0167894475829446, - "worst_tolerance_ratio": 0.3378793114669307 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.6684490345192415e-06, - 5.049415267421864e-05 - ], - "worst_mean_abs": 2.5206955907895888e-05, - "worst_max_relative": 0.00011991410497712602, - "worst_tolerance_ratio": 0.8394078854081234 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.0460255383924868e-09, - 1.7384082999505335e-08 - ], - "worst_mean_abs": 9.031922037427639e-09, - "worst_max_relative": 0.00011500687150777846, - "worst_tolerance_ratio": 0.0014815460833546067 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 2.0205974578857422e-05 - ], - "worst_mean_abs": 2.0205974578857422e-05, - "worst_max_relative": 4.356242051604898e-09, - "worst_tolerance_ratio": 4.356148136631275e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.529152009880022e-06, - 7.149812793372234e-06 - ], - "worst_mean_abs": 1.3536651946457659e-06, - "worst_max_relative": 0.022872856132809344, - "worst_tolerance_ratio": 0.4813565047307696 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.708220871904814e-05, - 0.00016725678142393008 - ], - "worst_mean_abs": 4.205178830355797e-05, - "worst_max_relative": 0.00011873427802482379, - "worst_tolerance_ratio": 0.8254119678366996 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.6537795828895927e-08, - 5.758301935276933e-08 - ], - "worst_mean_abs": 1.889780836511542e-08, - "worst_max_relative": 0.0001091309144688209, - "worst_tolerance_ratio": 0.00491758534179724 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.980232238769531e-07, - 2.7179718017578125e-05 - ], - "worst_mean_abs": 2.7179718017578125e-05, - "worst_max_relative": 5.8594293121332474e-09, - "worst_tolerance_ratio": 5.8593029967251716e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.555126722038949e-06, - 7.020447078787129e-06 - ], - "worst_mean_abs": 1.3389772814401963e-06, - "worst_max_relative": 0.02400818458735864, - "worst_tolerance_ratio": 0.5356584360109251 - }, - "virial": { - "comparisons": 243, - "failures": 2, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.569360052173124e-05, - 0.00015715494699009014 - ], - "worst_mean_abs": 4.4880694042700085e-05, - "worst_max_relative": 0.0001554837969614128, - "worst_tolerance_ratio": 1.0808857303179955 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.605972700478465e-08, - 5.410516857110026e-08 - ], - "worst_mean_abs": 1.9109752850621155e-08, - "worst_max_relative": 0.00014721535521835527, - "worst_tolerance_ratio": 0.004632534286840701 - } - } - }, - { - "model": "Neo", - "n": 512, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 2.6702880859375e-05 - ], - "worst_mean_abs": 2.6702880859375e-05, - "worst_max_relative": 5.756921624240023e-09, - "worst_tolerance_ratio": 5.756797512417556e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.0754503761443175e-06, - 5.255080772315068e-06 - ], - "worst_mean_abs": 9.188198455767244e-07, - "worst_max_relative": 0.027445525724539704, - "worst_tolerance_ratio": 0.4261850547390301 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.7599335786241426e-06, - 7.743412051297582e-05 - ], - "worst_mean_abs": 2.853425311467718e-05, - "worst_max_relative": 0.00012354956861375534, - "worst_tolerance_ratio": 0.8588783408376042 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1864424477592284e-09, - 2.665895171283239e-08 - ], - "worst_mean_abs": 1.2097592506892194e-08, - "worst_max_relative": 0.0001177937131510333, - "worst_tolerance_ratio": 0.0022723680189137402 - } - } - }, - { - "model": "Neo", - "n": 4096, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7881393432617188e-07, - 5.08427619934082e-05 - ], - "worst_mean_abs": 5.08427619934082e-05, - "worst_max_relative": 1.3700321891459192e-09, - "worst_tolerance_ratio": 1.3700284974048178e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.915427782885672e-06, - 5.114278932794036e-06 - ], - "worst_mean_abs": 9.186026505361055e-07, - "worst_max_relative": 0.037242456654630066, - "worst_tolerance_ratio": 0.36107785617188165 - }, - "virial": { - "comparisons": 27, - "failures": 2, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.3309498260459804e-05, - 0.00010367074635553308 - ], - "worst_mean_abs": 5.083718067538317e-05, - "worst_max_relative": 0.0002291365517767142, - "worst_tolerance_ratio": 1.3471720183889224 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0031217245742852e-09, - 4.283833721779873e-09 - ], - "worst_mean_abs": 2.279572139351011e-09, - "worst_max_relative": 0.00018932378638784696, - "worst_tolerance_ratio": 0.0004087125961507865 - } - } - }, - { - "model": "Neo", - "n": 4096, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.364418029785156e-07, - 5.9604644775390625e-05 - ], - "worst_mean_abs": 5.9604644775390625e-05, - "worst_max_relative": 1.6061330316797209e-09, - "worst_tolerance_ratio": 1.6061287037345177e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.0948989976641315e-06, - 5.564418060544085e-06 - ], - "worst_mean_abs": 9.26793319666477e-07, - "worst_max_relative": 0.049875477215640195, - "worst_tolerance_ratio": 0.41762313578711746 - }, - "virial": { - "comparisons": 81, - "failures": 6, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.7252726829463114e-05, - 0.0001373957031773898 - ], - "worst_mean_abs": 5.8231764420583566e-05, - "worst_max_relative": 0.00030425217658329874, - "worst_tolerance_ratio": 1.7885781846679256 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0660602954603356e-09, - 5.912809162428312e-09 - ], - "worst_mean_abs": 2.9793355688615886e-09, - "worst_max_relative": 0.0002776876519645893, - "worst_tolerance_ratio": 0.0005049693455950091 - } - } - }, - { - "model": "Neo", - "n": 4096, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.086162567138672e-06, - 5.7697296142578125e-05 - ], - "worst_mean_abs": 5.7697296142578125e-05, - "worst_max_relative": 1.5548172659016425e-09, - "worst_tolerance_ratio": 1.554813076016886e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.086715442941369e-06, - 5.089025183480089e-06 - ], - "worst_mean_abs": 9.298713924207309e-07, - "worst_max_relative": 0.04440750951237683, - "worst_tolerance_ratio": 0.4234762051302419 - }, - "virial": { - "comparisons": 27, - "failures": 5, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.9670212629516755e-05, - 0.00020986385868582147 - ], - "worst_mean_abs": 6.567990549472608e-05, - "worst_max_relative": 0.00045811365137326274, - "worst_tolerance_ratio": 2.6929110870910753 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7072032884590804e-09, - 9.031468357900696e-09 - ], - "worst_mean_abs": 3.847879343438127e-09, - "worst_max_relative": 0.0004174495165776738, - "worst_tolerance_ratio": 0.0007720459370222041 - } - } - }, - { - "model": "Neo", - "n": 4096, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7881393432617188e-07, - 5.78761100769043e-05 - ], - "worst_mean_abs": 5.78761100769043e-05, - "worst_max_relative": 1.559635916885455e-09, - "worst_tolerance_ratio": 1.5596317140155054e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.009501395785264e-06, - 5.938536422167573e-06 - ], - "worst_mean_abs": 9.275980505388126e-07, - "worst_max_relative": 0.05585281718316354, - "worst_tolerance_ratio": 0.44091870727929816 - }, - "virial": { - "comparisons": 81, - "failures": 18, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.29303353385113e-05, - 0.0002537444477184181 - ], - "worst_mean_abs": 9.976814462481837e-05, - "worst_max_relative": 0.0005891330742042511, - "worst_tolerance_ratio": 3.4630773008858435 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.575273715942522e-10, - 1.0919864741609775e-08 - ], - "worst_mean_abs": 5.683249691617134e-09, - "worst_max_relative": 0.0005782759514414551, - "worst_tolerance_ratio": 0.0009334736788613724 - } - } - }, - { - "model": "Neo", - "n": 4096, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": false, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7881393432617188e-07, - 6.693601608276367e-05 - ], - "worst_mean_abs": 6.693601608276367e-05, - "worst_max_relative": 1.8036873974732883e-09, - "worst_tolerance_ratio": 1.80368253719081e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.073811581406517e-06, - 6.2081149110326805e-06 - ], - "worst_mean_abs": 9.266616302005236e-07, - "worst_max_relative": 0.06860870172794904, - "worst_tolerance_ratio": 0.46170119715108426 - }, - "virial": { - "comparisons": 243, - "failures": 33, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7924468062702203e-05, - 0.0001882653359075448 - ], - "worst_mean_abs": 8.125173311295746e-05, - "worst_max_relative": 0.0004754305218507936, - "worst_tolerance_ratio": 2.7952603392726663 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.963430570008922e-10, - 8.101978279245747e-09 - ], - "worst_mean_abs": 4.415866778949078e-09, - "worst_max_relative": 0.0004608722621165524, - "worst_tolerance_ratio": 0.0006931252394082947 - } - } - }, - { - "model": "NeoCu", - "n": 96, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 3.337860107421875e-06 - ], - "worst_mean_abs": 3.337860107421875e-06, - "worst_max_relative": 9.387703144991008e-09, - "worst_tolerance_ratio": 9.385063603839662e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.603340882341044e-07, - 5.453217322148873e-07 - ], - "worst_mean_abs": 1.2231355189255986e-07, - "worst_max_relative": 0.014413295870270078, - "worst_tolerance_ratio": 0.04185776740797862 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7235392428815999e-06, - 1.3611812271108192e-05 - ], - "worst_mean_abs": 4.100782198551238e-06, - "worst_max_relative": 0.0011890083586013282, - "worst_tolerance_ratio": 0.1449666622847656 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.518917719031676e-09, - 1.1995794666624926e-08 - ], - "worst_mean_abs": 5.121453844865385e-09, - "worst_max_relative": 0.0011639913807204331, - "worst_tolerance_ratio": 0.001124576249662266 - } - } - }, - { - "model": "NeoCu", - "n": 96, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 3.635883331298828e-06 - ], - "worst_mean_abs": 3.635883331298828e-06, - "worst_max_relative": 1.0223301491938032e-08, - "worst_tolerance_ratio": 0.00010220427733223225 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.2799418292484006e-07, - 6.305868902600764e-07 - ], - "worst_mean_abs": 1.2763819215935954e-07, - "worst_max_relative": 0.021009965921732328, - "worst_tolerance_ratio": 0.04455900588406337 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.2891653931035307e-06, - 1.2289718489988388e-05 - ], - "worst_mean_abs": 4.191015149112514e-06, - "worst_max_relative": 0.0014460248280207862, - "worst_tolerance_ratio": 0.1805156305652802 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.134031962722582e-09, - 1.0830662117156109e-08 - ], - "worst_mean_abs": 5.270114842173079e-09, - "worst_max_relative": 0.0014073390993566092, - "worst_tolerance_ratio": 0.001016364146873507 - } - } - }, - { - "model": "NeoCu", - "n": 96, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 4.291534423828125e-06 - ], - "worst_mean_abs": 4.291534423828125e-06, - "worst_max_relative": 1.2069853791371217e-08, - "worst_tolerance_ratio": 0.00012066460123859992 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.6738872566388636e-07, - 6.496374638231828e-07 - ], - "worst_mean_abs": 1.347294933191362e-07, - "worst_max_relative": 0.02395454902527084, - "worst_tolerance_ratio": 0.04730685370183541 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0583740648328899e-06, - 1.3146793585327998e-05 - ], - "worst_mean_abs": 4.811204114116439e-06, - "worst_max_relative": 0.0015135687867966117, - "worst_tolerance_ratio": 0.2354699323626993 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.327220879332132e-10, - 1.1585983793020727e-08 - ], - "worst_mean_abs": 5.903944202335064e-09, - "worst_max_relative": 0.0014869001338011958, - "worst_tolerance_ratio": 0.001089458603645757 - } - } - }, - { - "model": "NeoCu", - "n": 96, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 4.589557647705078e-06 - ], - "worst_mean_abs": 4.589557647705078e-06, - "worst_max_relative": 1.2908038093257978e-08, - "worst_tolerance_ratio": 0.00012904408754385726 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.296416863918239e-07, - 5.808357812497889e-07 - ], - "worst_mean_abs": 1.2698716139386923e-07, - "worst_max_relative": 0.023987935195441422, - "worst_tolerance_ratio": 0.05514590105519243 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0860511006072215e-06, - 1.6633662934140148e-05 - ], - "worst_mean_abs": 5.2062486210834805e-06, - "worst_max_relative": 0.0016370861733179276, - "worst_tolerance_ratio": 0.24658545260361903 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.27673764971732e-10, - 1.4658886056395648e-08 - ], - "worst_mean_abs": 6.625731204720302e-09, - "worst_max_relative": 0.0016134046798247329, - "worst_tolerance_ratio": 0.0013784111351993187 - } - } - }, - { - "model": "NeoCu", - "n": 96, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 4.291534423828125e-06 - ], - "worst_mean_abs": 4.291534423828125e-06, - "worst_max_relative": 1.206985384397838e-08, - "worst_tolerance_ratio": 0.00012066460176437575 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.4671262172381034e-07, - 5.431147798162783e-07 - ], - "worst_mean_abs": 1.2687604104948588e-07, - "worst_max_relative": 0.01709900025261547, - "worst_tolerance_ratio": 0.04337880828949909 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.491120692698189e-06, - 1.2040890265296866e-05 - ], - "worst_mean_abs": 4.0279049594459255e-06, - "worst_max_relative": 0.0017494123990378688, - "worst_tolerance_ratio": 0.21336905339024131 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.3140922967835866e-09, - 1.0611375203875562e-08 - ], - "worst_mean_abs": 5.123438694725654e-09, - "worst_max_relative": 0.0017482007863549084, - "worst_tolerance_ratio": 0.0009978137468379467 - } - } - }, - { - "model": "NeoCu", - "n": 96, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 4.410743713378906e-06 - ], - "worst_mean_abs": 4.410743713378906e-06, - "worst_max_relative": 1.2402037673849288e-08, - "worst_tolerance_ratio": 0.00012398551474865973 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5811243659367165e-07, - 6.475954030804587e-07 - ], - "worst_mean_abs": 1.2856714062077154e-07, - "worst_max_relative": 0.015716261612875735, - "worst_tolerance_ratio": 0.04525081094634458 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.126193800668148e-07, - 1.7394910315715606e-05 - ], - "worst_mean_abs": 5.815984247047354e-06, - "worst_max_relative": 0.0021084357094776573, - "worst_tolerance_ratio": 0.2575759853369004 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.042716484121804e-10, - 1.5329756848474207e-08 - ], - "worst_mean_abs": 7.130575031860604e-09, - "worst_max_relative": 0.002071330097824888, - "worst_tolerance_ratio": 0.001441494730564129 - } - } - }, - { - "model": "NeoCu", - "n": 96, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 6.854534149169922e-06 - ], - "worst_mean_abs": 6.854534149169922e-06, - "worst_max_relative": 1.9278238833516216e-08, - "worst_tolerance_ratio": 0.0001927281839227432 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.359976137318199e-07, - 6.390974816028461e-07 - ], - "worst_mean_abs": 1.3796984636017152e-07, - "worst_max_relative": 0.024653551579825565, - "worst_tolerance_ratio": 0.051324303386818274 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.2168759291906213e-06, - 2.7073034554625508e-05 - ], - "worst_mean_abs": 9.457971914917126e-06, - "worst_max_relative": 0.0015556707672518405, - "worst_tolerance_ratio": 0.20371499729246323 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.8349629241364305e-09, - 2.3858877645256682e-08 - ], - "worst_mean_abs": 1.2009053561857884e-08, - "worst_max_relative": 0.0015275820433286417, - "worst_tolerance_ratio": 0.002238949711566482 - } - } - }, - { - "model": "NeoCu", - "n": 96, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 5.781650543212891e-06 - ], - "worst_mean_abs": 5.781650543212891e-06, - "worst_max_relative": 1.6256725323245722e-08, - "worst_tolerance_ratio": 0.00016252155575781195 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.373516843652169e-07, - 6.296695502783223e-07 - ], - "worst_mean_abs": 1.4281828743606972e-07, - "worst_max_relative": 0.02332282156099186, - "worst_tolerance_ratio": 0.05453718641189718 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.8049525175054555e-06, - 2.837004379507846e-05 - ], - "worst_mean_abs": 1.0180676162035378e-05, - "worst_max_relative": 0.0020108449881975177, - "worst_tolerance_ratio": 0.2451668940779786 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.353222055059446e-09, - 2.5001903733098962e-08 - ], - "worst_mean_abs": 1.2767175971490336e-08, - "worst_max_relative": 0.0019795647905895514, - "worst_tolerance_ratio": 0.002351220132366733 - } - } - }, - { - "model": "NeoCu", - "n": 96, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 5.841255187988281e-06 - ], - "worst_mean_abs": 5.841255187988281e-06, - "worst_max_relative": 1.6428411906633407e-08, - "worst_tolerance_ratio": 0.00016423792748187949 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.035816975582861e-07, - 6.730010237987472e-07 - ], - "worst_mean_abs": 1.4354842903935294e-07, - "worst_max_relative": 0.02265629703191189, - "worst_tolerance_ratio": 0.05525811171316592 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.077212428261646e-07, - 1.9680935952948175e-05 - ], - "worst_mean_abs": 6.710245181822425e-06, - "worst_max_relative": 0.0020749235075072044, - "worst_tolerance_ratio": 0.26893210810620133 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.474437096876893e-10, - 1.7344381617566407e-08 - ], - "worst_mean_abs": 8.442273890455449e-09, - "worst_max_relative": 0.0020680346161809867, - "worst_tolerance_ratio": 0.001630935117326457 - } - } - }, - { - "model": "NeoCu", - "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 1.1146068572998047e-05 - ], - "worst_mean_abs": 1.1146068572998047e-05, - "worst_max_relative": 5.877785093370146e-09, - "worst_tolerance_ratio": 5.877475149683767e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.107106263973037e-07, - 5.963112763573974e-07 - ], - "worst_mean_abs": 1.1743892148636799e-07, - "worst_max_relative": 0.0053673515808619135, - "worst_tolerance_ratio": 0.05208105568148335 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5518841343673557e-06, - 3.15106425432532e-05 - ], - "worst_mean_abs": 1.0221947037059956e-05, - "worst_max_relative": 0.00010352699539626582, - "worst_tolerance_ratio": 0.28950558312751407 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.869121967941315e-10, - 5.206808480900937e-09 - ], - "worst_mean_abs": 2.384344797843625e-09, - "worst_max_relative": 0.0001017665241122064, - "worst_tolerance_ratio": 0.0004883054115106531 - } - } - }, - { - "model": "NeoCu", - "n": 512, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.5762786865234375e-07, - 1.138448715209961e-05 - ], - "worst_mean_abs": 1.138448715209961e-05, - "worst_max_relative": 6.003620527364496e-09, - "worst_tolerance_ratio": 6.0033039425390225e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.1376127146719455e-07, - 6.573115953756314e-07 - ], - "worst_mean_abs": 1.1678100456382933e-07, - "worst_max_relative": 0.005276007835822787, - "worst_tolerance_ratio": 0.048913021545003856 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.8131674897347025e-06, - 4.521339540985991e-05 - ], - "worst_mean_abs": 1.5693800227182624e-05, - "worst_max_relative": 8.388719918786369e-05, - "worst_tolerance_ratio": 0.2794011691181738 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.1744111731753866e-10, - 7.471046975515705e-09 - ], - "worst_mean_abs": 3.778424898674656e-09, - "worst_max_relative": 7.658611318126762e-05, - "worst_tolerance_ratio": 0.0007006078487645964 - } - } - }, - { - "model": "NeoCu", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 8.344650268554688e-06 - ], - "worst_mean_abs": 8.344650268554688e-06, - "worst_max_relative": 4.4002004176045945e-09, - "worst_tolerance_ratio": 4.399968403773162e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.175873637990435e-07, - 5.775226235016362e-07 - ], - "worst_mean_abs": 1.211461345555638e-07, - "worst_max_relative": 0.0035782661678465623, - "worst_tolerance_ratio": 0.05232249797086353 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.064900046785169e-06, - 3.113628248740952e-05 - ], - "worst_mean_abs": 1.0315900184776967e-05, - "worst_max_relative": 0.00010042974268047074, - "worst_tolerance_ratio": 0.32752071762355717 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.576605078055585e-10, - 5.144949345899097e-09 - ], - "worst_mean_abs": 2.421841932135582e-09, - "worst_max_relative": 9.702933443299709e-05, - "worst_tolerance_ratio": 0.0004823225740989872 - } - } - }, - { - "model": "NeoCu", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 1.0073184967041016e-05 - ], - "worst_mean_abs": 1.0073184967041016e-05, - "worst_max_relative": 5.311670480735989e-09, - "worst_tolerance_ratio": 5.311390406899081e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.1842805043046383e-07, - 6.110117141133742e-07 - ], - "worst_mean_abs": 1.1789367902494661e-07, - "worst_max_relative": 0.004817227625421422, - "worst_tolerance_ratio": 0.05191983448375784 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.9069586013054085e-06, - 3.1370506661687614e-05 - ], - "worst_mean_abs": 1.0523868457259747e-05, - "worst_max_relative": 0.00011526278236160715, - "worst_tolerance_ratio": 0.3758987902961369 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.1243287644533435e-10, - 5.183652472540157e-09 - ], - "worst_mean_abs": 2.4648348368603244e-09, - "worst_max_relative": 0.000114406599295979, - "worst_tolerance_ratio": 0.00048620113234803603 - } - } - }, - { - "model": "NeoCu", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.556510925292969e-07, - 6.556510925292969e-06 - ], - "worst_mean_abs": 6.556510925292969e-06, - "worst_max_relative": 3.457582509191494e-09, - "worst_tolerance_ratio": 3.457400182851528e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.320181652417432e-07, - 7.186203347941955e-07 - ], - "worst_mean_abs": 1.1659641726541625e-07, - "worst_max_relative": 0.0031715522043012003, - "worst_tolerance_ratio": 0.05292413235863578 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.1822387736847304e-06, - 4.6521699900381464e-05 - ], - "worst_mean_abs": 1.5115027282477933e-05, - "worst_max_relative": 8.79457568355308e-05, - "worst_tolerance_ratio": 0.28680438757981064 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.6059243611885616e-10, - 7.687230791156296e-09 - ], - "worst_mean_abs": 3.643539780216366e-09, - "worst_max_relative": 8.692134893962965e-05, - "worst_tolerance_ratio": 0.0007206533735429723 - } - } - }, - { - "model": "NeoCu", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 1.0848045349121094e-05 - ], - "worst_mean_abs": 1.0848045349121094e-05, - "worst_max_relative": 5.7206250080347055e-09, - "worst_tolerance_ratio": 5.720323351618585e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.2076461781448415e-07, - 6.428193619623102e-07 - ], - "worst_mean_abs": 1.192275684779722e-07, - "worst_max_relative": 0.003298577107261946, - "worst_tolerance_ratio": 0.048074827657832116 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.016424886619461e-06, - 4.70206891876046e-05 - ], - "worst_mean_abs": 1.6544769902729043e-05, - "worst_max_relative": 0.00014773537034582152, - "worst_tolerance_ratio": 0.4818061368850836 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.3319340255605345e-10, - 7.769683620442724e-09 - ], - "worst_mean_abs": 3.891767299325177e-09, - "worst_max_relative": 0.00014716854758851908, - "worst_tolerance_ratio": 0.0007287614303245415 - } - } - }, - { - "model": "NeoCu", - "n": 512, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 1.919269561767578e-05 - ], - "worst_mean_abs": 1.919269561767578e-05, - "worst_max_relative": 1.0120461018382242e-08, - "worst_tolerance_ratio": 0.00010119927386563841 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.1750117674155263e-07, - 7.356539653002869e-07 - ], - "worst_mean_abs": 1.2385244442982143e-07, - "worst_max_relative": 0.005294125044255709, - "worst_tolerance_ratio": 0.05495196487330043 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.215744266389265e-05, - 0.00011300295488325673 - ], - "worst_mean_abs": 3.624492555988037e-05, - "worst_max_relative": 0.00013083896368166738, - "worst_tolerance_ratio": 0.3658814817475812 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.966082322958089e-09, - 1.8672572071019855e-08 - ], - "worst_mean_abs": 8.915879917786458e-09, - "worst_max_relative": 0.00012211572201857384, - "worst_tolerance_ratio": 0.0017514036264211267 - } - } - }, - { - "model": "NeoCu", - "n": 512, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 1.8596649169921875e-05 - ], - "worst_mean_abs": 1.8596649169921875e-05, - "worst_max_relative": 9.806785824232543e-09, - "worst_tolerance_ratio": 9.806268698937622e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 4.282412255918189e-07, - 7.157671120250342e-07 - ], - "worst_mean_abs": 1.2546263058012418e-07, - "worst_max_relative": 0.0047400067164323455, - "worst_tolerance_ratio": 0.05862016534074166 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.794910463739143e-05, - 0.0001294595756107242 - ], - "worst_mean_abs": 4.162435368555706e-05, - "worst_max_relative": 0.00011977139161913252, - "worst_tolerance_ratio": 0.3641474434733433 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.270697895834065e-09, - 2.1391858808644804e-08 - ], - "worst_mean_abs": 1.019852898909514e-08, - "worst_max_relative": 0.00011518540837933836, - "worst_tolerance_ratio": 0.00200646054281385 - } - } - }, - { - "model": "NeoCu", - "n": 512, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 1.0728836059570312e-05 - ], - "worst_mean_abs": 1.0728836059570312e-05, - "worst_max_relative": 5.657400512026497e-09, - "worst_tolerance_ratio": 5.657102208531566e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.9287351683015004e-07, - 6.560103198438583e-07 - ], - "worst_mean_abs": 1.1942432717237903e-07, - "worst_max_relative": 0.004286677320818938, - "worst_tolerance_ratio": 0.05951665334151016 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.8948397236817627e-06, - 4.980984847691161e-05 - ], - "worst_mean_abs": 1.5695328310453654e-05, - "worst_max_relative": 0.00013944962456630087, - "worst_tolerance_ratio": 0.45474128253398055 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.8011796038924976e-10, - 8.230563408768987e-09 - ], - "worst_mean_abs": 3.7044910034442645e-09, - "worst_max_relative": 0.00013802417200476117, - "worst_tolerance_ratio": 0.0007715890777891485 - } - } - }, - { - "model": "NeoCu", - "n": 4096, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.344650268554688e-07, - 1.6868114471435547e-05 - ], - "worst_mean_abs": 1.6868114471435547e-05, - "worst_max_relative": 1.1118675869841216e-09, - "worst_tolerance_ratio": 1.1118602581188573e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.198577550658001e-07, - 6.523089182142172e-07 - ], - "worst_mean_abs": 1.1705365499733181e-07, - "worst_max_relative": 0.013808565632325229, - "worst_tolerance_ratio": 0.05643189665981057 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.247451492276014e-06, - 8.839134801519322e-05 - ], - "worst_mean_abs": 3.318352369609102e-05, - "worst_max_relative": 4.19216195157892e-05, - "worst_tolerance_ratio": 0.31631215552236935 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.4969582084328747e-10, - 1.8257197541976522e-09 - ], - "worst_mean_abs": 9.466844892228734e-10, - "worst_max_relative": 4.1485054570357104e-05, - "worst_tolerance_ratio": 0.00017126096410469033 - } - } - }, - { - "model": "NeoCu", - "n": 4096, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 2.5987625122070312e-05 - ], - "worst_mean_abs": 2.5987625122070312e-05, - "worst_max_relative": 1.7129832807918087e-09, - "worst_tolerance_ratio": 1.7129719896778072e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.038476720287122e-07, - 7.151922281067868e-07 - ], - "worst_mean_abs": 1.1667019861757176e-07, - "worst_max_relative": 0.02380104229337698, - "worst_tolerance_ratio": 0.06037224690079802 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.797715508990223e-06, - 0.0001036179495486067 - ], - "worst_mean_abs": 3.5391919110160254e-05, - "worst_max_relative": 4.2301515805200086e-05, - "worst_tolerance_ratio": 0.31020132206749096 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.817164613227007e-10, - 2.1402245999752045e-09 - ], - "worst_mean_abs": 1.043199148082719e-09, - "worst_max_relative": 4.1547514439846706e-05, - "worst_tolerance_ratio": 0.0002008022193994886 - } - } - }, - { - "model": "NeoCu", - "n": 4096, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.152557373046875e-07, - 4.1484832763671875e-05 - ], - "worst_mean_abs": 4.1484832763671875e-05, - "worst_max_relative": 2.734478417798953e-09, - "worst_tolerance_ratio": 2.73446039356592e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.220726961852051e-07, - 7.069169214446447e-07 - ], - "worst_mean_abs": 1.2005505194822093e-07, - "worst_max_relative": 0.02165367259240405, - "worst_tolerance_ratio": 0.06531002201709425 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.660116725758613e-06, - 7.616201372684372e-05 - ], - "worst_mean_abs": 2.8776430142035065e-05, - "worst_max_relative": 3.408173033358508e-05, - "worst_tolerance_ratio": 0.2690908709817978 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.913003057304692e-11, - 1.5731233442631276e-09 - ], - "worst_mean_abs": 8.32516877590782e-10, - "worst_max_relative": 3.381105358243203e-05, - "worst_tolerance_ratio": 0.00014759508363390849 - } - } - }, - { - "model": "NeoCu", - "n": 4096, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 3.790855407714844e-05 - ], - "worst_mean_abs": 3.790855407714844e-05, - "worst_max_relative": 2.4987475259565756e-09, - "worst_tolerance_ratio": 2.4987310555366528e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.172098012096171e-07, - 6.890018813265897e-07 - ], - "worst_mean_abs": 1.2078314314404485e-07, - "worst_max_relative": 0.018827515090961595, - "worst_tolerance_ratio": 0.06404717411065457 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.123486281874648e-06, - 0.0001054278984611301 - ], - "worst_mean_abs": 3.637237150618441e-05, - "worst_max_relative": 4.3181451647683356e-05, - "worst_tolerance_ratio": 0.3652206974265682 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.6779028340352387e-10, - 2.1776090210548493e-09 - ], - "worst_mean_abs": 1.0834409821289943e-09, - "worst_max_relative": 4.219810877210716e-05, - "worst_tolerance_ratio": 0.00020433801630082788 - } - } - }, - { - "model": "NeoCu", - "n": 4096, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7881393432617188e-07, - 2.777576446533203e-05 - ], - "worst_mean_abs": 2.777576446533203e-05, - "worst_max_relative": 1.830849097225209e-09, - "worst_tolerance_ratio": 1.8308370291997682e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.439060988265965e-07, - 7.169015532326739e-07 - ], - "worst_mean_abs": 1.1979907411062934e-07, - "worst_max_relative": 0.013424888927897246, - "worst_tolerance_ratio": 0.05466121955349142 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.802883544627548e-06, - 0.00011109384792007404 - ], - "worst_mean_abs": 3.742334158507443e-05, - "worst_max_relative": 3.7556283136507754e-05, - "worst_tolerance_ratio": 0.2754072851192664 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.6116824715084466e-10, - 2.294638981430175e-09 - ], - "worst_mean_abs": 1.1077548442261382e-09, - "worst_max_relative": 3.729940263499179e-05, - "worst_tolerance_ratio": 0.00021531963466205295 - } - } - }, - { - "model": "NeoCu", - "n": 4096, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 3.820657730102539e-05 - ], - "worst_mean_abs": 3.820657730102539e-05, - "worst_max_relative": 2.5183997175232404e-09, - "worst_tolerance_ratio": 2.5183831175140795e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.166080461194156e-07, - 7.104743460217833e-07 - ], - "worst_mean_abs": 1.1993995347639125e-07, - "worst_max_relative": 0.02856692083015727, - "worst_tolerance_ratio": 0.05873448508518052 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.01530763080882e-06, - 9.401118154528376e-05 - ], - "worst_mean_abs": 3.307769413097973e-05, - "worst_max_relative": 5.391886680224436e-05, - "worst_tolerance_ratio": 0.4257181603659511 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.4490089857155386e-10, - 1.941797190922745e-09 - ], - "worst_mean_abs": 9.409762904172285e-10, - "worst_max_relative": 5.351578257569321e-05, - "worst_tolerance_ratio": 0.00018216964379864326 - } - } - }, - { - "model": "NeoCu", - "n": 4096, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.045797348022461e-05, - 8.726119995117188e-05 - ], - "worst_mean_abs": 8.726119995117188e-05, - "worst_max_relative": 5.751833946384839e-09, - "worst_tolerance_ratio": 5.7517960333425065e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.351370377937315e-07, - 8.013822601071752e-07 - ], - "worst_mean_abs": 1.2558300617594988e-07, - "worst_max_relative": 0.026800052994382272, - "worst_tolerance_ratio": 0.06428338709745177 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0004938771285765142, - 0.0006931610110996189 - ], - "worst_mean_abs": 0.00021615802526950587, - "worst_max_relative": 5.841637041719976e-05, - "worst_tolerance_ratio": 0.4283730694650843 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.020101231784254e-08, - 1.4317212931706791e-08 - ], - "worst_mean_abs": 6.662081803317149e-09, - "worst_max_relative": 5.809230390442046e-05, - "worst_tolerance_ratio": 0.001343469490700036 - } - } - }, - { - "model": "NeoCu", - "n": 4096, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.0742416381835938e-05, - 8.493661880493164e-05 - ], - "worst_mean_abs": 8.493661880493164e-05, - "worst_max_relative": 5.5986265484594665e-09, - "worst_tolerance_ratio": 5.598589645162558e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.445577322404915e-07, - 7.932072958460878e-07 - ], - "worst_mean_abs": 1.243990943191721e-07, - "worst_max_relative": 0.032838924457721574, - "worst_tolerance_ratio": 0.06707397161948507 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.00047436479803764087, - 0.0006949763438228729 - ], - "worst_mean_abs": 0.0002154684579936703, - "worst_max_relative": 5.760664486808131e-05, - "worst_tolerance_ratio": 0.4357422394499284 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.797985911323692e-09, - 1.4354708557234863e-08 - ], - "worst_mean_abs": 6.629676319376039e-09, - "worst_max_relative": 5.747880422535247e-05, - "worst_tolerance_ratio": 0.0013468193269253438 - } - } - }, - { - "model": "NeoCu", - "n": 4096, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 3.8683414459228516e-05 - ], - "worst_mean_abs": 3.8683414459228516e-05, - "worst_max_relative": 2.549822547631495e-09, - "worst_tolerance_ratio": 2.5498057405521294e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.22904616495623e-07, - 7.972317570548171e-07 - ], - "worst_mean_abs": 1.20731176544774e-07, - "worst_max_relative": 0.02814435479276665, - "worst_tolerance_ratio": 0.06166224969614522 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.5784290537985726e-06, - 0.00012494022900000346 - ], - "worst_mean_abs": 4.3599635653491907e-05, - "worst_max_relative": 5.082442104692825e-05, - "worst_tolerance_ratio": 0.37270635375147104 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.599714027711849e-11, - 2.5806354275736965e-09 - ], - "worst_mean_abs": 1.2807048413671962e-09, - "worst_max_relative": 4.9463066167940075e-05, - "worst_tolerance_ratio": 0.00024215638297209543 - } - } - }, - { - "model": "Pro", - "n": 96, - "left": "TORCH", - "right": "TORCH", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9802322387695312e-08, - 3.546476364135742e-06 - ], - "worst_mean_abs": 3.546476364135742e-06, - "worst_max_relative": 4.0773161881595545e-09, - "worst_tolerance_ratio": 4.076847480785719e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.446324019610984e-07, - 1.1968863304900879e-06 - ], - "worst_mean_abs": 2.828583157560294e-07, - "worst_max_relative": 0.0008076674223815144, - "worst_tolerance_ratio": 0.09573474830647664 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.9652201981301687e-06, - 9.613378878725598e-06 - ], - "worst_mean_abs": 3.039388496436615e-06, - "worst_max_relative": 2.8885061459797767e-05, - "worst_tolerance_ratio": 0.15838218897262007 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.4233996380809697e-09, - 1.7651657201883664e-08 - ], - "worst_mean_abs": 6.742318941788681e-09, - "worst_max_relative": 1.6840486827053606e-05, - "worst_tolerance_ratio": 0.0014427881741386124 - } - } - }, - { - "model": "Pro", - "n": 96, - "left": "TORCH", - "right": "TORCH", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.960464477539063e-08, - 4.082918167114258e-06 - ], - "worst_mean_abs": 4.082918167114258e-06, - "worst_max_relative": 4.693620903477673e-09, - "worst_tolerance_ratio": 4.6930813985438893e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.445209675438491e-07, - 1.6668919435858243e-06 - ], - "worst_mean_abs": 2.7226443716838526e-07, - "worst_max_relative": 0.001531294589251288, - "worst_tolerance_ratio": 0.08948499315350628 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.2976609307102649e-06, - 8.369317985312819e-06 - ], - "worst_mean_abs": 3.729972808193723e-06, - "worst_max_relative": 3.609207618466774e-05, - "worst_tolerance_ratio": 0.19083894511057461 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.8317368871700879e-09, - 1.536736812107753e-08 - ], - "worst_mean_abs": 7.565954165442436e-09, - "worst_max_relative": 1.8943308087643797e-05, - "worst_tolerance_ratio": 0.0012560779039142034 - } - } - }, - { - "model": "Pro", - "n": 96, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9802322387695312e-08, - 2.086162567138672e-06 - ], - "worst_mean_abs": 2.086162567138672e-06, - "worst_max_relative": 2.398200457358485e-09, - "worst_tolerance_ratio": 2.397924797904249e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.66126990012117e-07, - 1.0029742973927114e-06 - ], - "worst_mean_abs": 2.3483554125982823e-07, - "worst_max_relative": 0.0012154302300614783, - "worst_tolerance_ratio": 0.060435857640296124 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.8503745895515067e-06, - 6.390288737279093e-06 - ], - "worst_mean_abs": 2.967744340227125e-06, - "worst_max_relative": 1.9564826971426e-05, - "worst_tolerance_ratio": 0.10344960203143543 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.572338037915749e-09, - 1.1733562951116161e-08 - ], - "worst_mean_abs": 6.644951855308643e-09, - "worst_max_relative": 1.3558549020129833e-05, - "worst_tolerance_ratio": 0.0009608505225798299 - } - } - }, - { - "model": "Pro", - "n": 96, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9802322387695312e-08, - 3.3676624298095703e-06 - ], - "worst_mean_abs": 3.3676624298095703e-06, - "worst_max_relative": 3.870147266776198e-09, - "worst_tolerance_ratio": 3.8697025571567825e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.059987374129605e-07, - 1.153181733215547e-06 - ], - "worst_mean_abs": 2.5687847847146975e-07, - "worst_max_relative": 0.0012242461245130598, - "worst_tolerance_ratio": 0.06258417126346197 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.5052840236506881e-06, - 8.76291312223998e-06 - ], - "worst_mean_abs": 3.4999733787103673e-06, - "worst_max_relative": 3.243988329792073e-05, - "worst_tolerance_ratio": 0.1715278843946285 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.630739483894251e-09, - 1.609006994307549e-08 - ], - "worst_mean_abs": 8.482913073515572e-09, - "worst_max_relative": 2.6146108291598013e-05, - "worst_tolerance_ratio": 0.0013099130165041045 - } - } - }, - { - "model": "Pro", - "n": 96, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9802322387695312e-08, - 2.652406692504883e-06 - ], - "worst_mean_abs": 2.652406692504883e-06, - "worst_max_relative": 3.0481690755734652e-09, - "worst_tolerance_ratio": 3.0478188175570803e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 7.280704084067224e-07, - 1.0555508263010438e-06 - ], - "worst_mean_abs": 2.4286616122514025e-07, - "worst_max_relative": 0.0010674193016619797, - "worst_tolerance_ratio": 0.06700012883133709 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.9028378250851574e-06, - 7.248352119404444e-06 - ], - "worst_mean_abs": 2.7877505150184255e-06, - "worst_max_relative": 3.230351561859952e-05, - "worst_tolerance_ratio": 0.17713153899382833 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.6756166623492497e-09, - 1.3309100630604087e-08 - ], - "worst_mean_abs": 6.104326373932775e-09, - "worst_max_relative": 2.66427987110384e-05, - "worst_tolerance_ratio": 0.0010856511244585853 - } - } - }, - { - "model": "Pro", - "n": 96, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 3.337860107421875e-06 - ], - "worst_mean_abs": 3.337860107421875e-06, - "worst_max_relative": 3.835898159497768e-09, - "worst_tolerance_ratio": 3.835457385365484e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.509955774447462e-07, - 1.1443131286981156e-06 - ], - "worst_mean_abs": 2.522947204247308e-07, - "worst_max_relative": 0.0012451676593418248, - "worst_tolerance_ratio": 0.07559006584013699 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.3961350999736055e-06, - 7.585402180154688e-06 - ], - "worst_mean_abs": 2.7201062848505565e-06, - "worst_max_relative": 4.5882155923540835e-05, - "worst_tolerance_ratio": 0.2515827864730362 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.931213442635249e-09, - 1.3927976910688145e-08 - ], - "worst_mean_abs": 6.454044768186475e-09, - "worst_max_relative": 3.9032306450856046e-05, - "worst_tolerance_ratio": 0.0011361341546814554 - } - } - }, - { - "model": "Pro", - "n": 96, - "left": "BASE", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 5.036592483520508e-06 - ], - "worst_mean_abs": 5.036592483520508e-06, - "worst_max_relative": 5.789941087333166e-09, - "worst_tolerance_ratio": 5.7892755666546726e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0297283470350749e-06, - 1.9189764604021775e-06 - ], - "worst_mean_abs": 3.849434346902023e-07, - "worst_max_relative": 0.0020522084723807667, - "worst_tolerance_ratio": 0.11480837591926668 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.302903146959693e-06, - 1.6129070706583093e-05 - ], - "worst_mean_abs": 4.7456555366038386e-06, - "worst_max_relative": 3.7589052501968825e-05, - "worst_tolerance_ratio": 0.1987509136554628 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.0227048662797555e-08, - 2.9615479710948245e-08 - ], - "worst_mean_abs": 1.132195174845205e-08, - "worst_max_relative": 2.5387322263327602e-05, - "worst_tolerance_ratio": 0.002411033211623114 - } - } - }, - { - "model": "Pro", - "n": 96, - "left": "ECS", - "right": "TORCH", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 5.8710575103759766e-06 - ], - "worst_mean_abs": 5.8710575103759766e-06, - "worst_max_relative": 6.74922126748304e-09, - "worst_tolerance_ratio": 6.748445483023494e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.038883129744761e-06, - 1.6906226552038106e-06 - ], - "worst_mean_abs": 3.7810847750509456e-07, - "worst_max_relative": 0.0024178460145521242, - "worst_tolerance_ratio": 0.09502941448441958 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.838768445842746e-06, - 1.643254521255244e-05 - ], - "worst_mean_abs": 5.029408959806365e-06, - "worst_max_relative": 5.076757155361017e-05, - "worst_tolerance_ratio": 0.27837006946653303 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 9.968055551118349e-09, - 3.017270605240596e-08 - ], - "worst_mean_abs": 1.1461790969722888e-08, - "worst_max_relative": 3.991119145824207e-05, - "worst_tolerance_ratio": 0.002456397704407242 - } - } - }, - { - "model": "Pro", - "n": 96, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 3.725290298461914e-06 - ], - "worst_mean_abs": 3.725290298461914e-06, - "worst_max_relative": 4.281136357053316e-09, - "worst_tolerance_ratio": 4.280644421633609e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.266039713764826e-07, - 1.3096176978422136e-06 - ], - "worst_mean_abs": 2.546778492756246e-07, - "worst_max_relative": 0.0015910827158217506, - "worst_tolerance_ratio": 0.08263306350666724 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.2102046772488606e-06, - 9.066387628209327e-06 - ], - "worst_mean_abs": 4.04452190765841e-06, - "worst_max_relative": 4.3051390970528364e-05, - "worst_tolerance_ratio": 0.22763340594975173 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.7095684000378863e-09, - 1.664729628453321e-08 - ], - "worst_mean_abs": 9.485760441344492e-09, - "worst_max_relative": 3.631888515506632e-05, - "worst_tolerance_ratio": 0.0013552773426962217 - } - } - }, - { - "model": "Pro", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1920928955078125e-07, - 7.241964340209961e-06 - ], - "worst_mean_abs": 7.241964340209961e-06, - "worst_max_relative": 1.5611764395991105e-09, - "worst_tolerance_ratio": 1.561142785479578e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.882451130176605e-07, - 1.2120823340566744e-06 - ], - "worst_mean_abs": 2.390480194548088e-07, - "worst_max_relative": 0.004595401111095846, - "worst_tolerance_ratio": 0.09424525340416555 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.6369870457519937e-06, - 1.6519790293045844e-05 - ], - "worst_mean_abs": 6.108577980519965e-06, - "worst_max_relative": 3.07548015293992e-05, - "worst_tolerance_ratio": 0.22660170583993347 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.287005786852554e-10, - 5.687419046135345e-09 - ], - "worst_mean_abs": 2.3579293374139496e-09, - "worst_max_relative": 2.6363564624639196e-05, - "worst_tolerance_ratio": 0.0004619027298119421 - } - } - }, - { - "model": "Pro", - "n": 512, - "left": "BASE", - "right": "BASE", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9802322387695312e-08, - 1.0192394256591797e-05 - ], - "worst_mean_abs": 1.0192394256591797e-05, - "worst_max_relative": 2.197211290189448e-09, - "worst_tolerance_ratio": 2.1971639251321206e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.337509491695982e-07, - 1.3602752506614024e-06 - ], - "worst_mean_abs": 2.390355857250541e-07, - "worst_max_relative": 0.004160502855394936, - "worst_tolerance_ratio": 0.09594329339955664 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.104009920207318e-06, - 2.0179532199904315e-05 - ], - "worst_mean_abs": 8.877854485457428e-06, - "worst_max_relative": 3.3994057854153705e-05, - "worst_tolerance_ratio": 0.26038174321197705 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.451583833821164e-10, - 6.947391807676784e-09 - ], - "worst_mean_abs": 3.4516097801031115e-09, - "worst_max_relative": 2.7304649249363166e-05, - "worst_tolerance_ratio": 0.0005642311943269924 - } - } - }, - { - "model": "Pro", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "within_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9802322387695312e-08, - 7.420778274536133e-06 - ], - "worst_mean_abs": 7.420778274536133e-06, - "worst_max_relative": 1.5997240073142174e-09, - "worst_tolerance_ratio": 1.5996895222287143e-05 - }, - "forces": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.405296645364047e-07, - 1.3563505030234069e-06 - ], - "worst_mean_abs": 2.3874192131423155e-07, - "worst_max_relative": 0.0026725797270913698, - "worst_tolerance_ratio": 0.08657278213750176 - }, - "virial": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 3.4518775322567308e-06, - 1.4212850686590173e-05 - ], - "worst_mean_abs": 6.591721291249186e-06, - "worst_max_relative": 3.278875854884791e-05, - "worst_tolerance_ratio": 0.23745797771259752 - }, - "stress": { - "comparisons": 27, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 1.1884093986669342e-09, - 4.893187882659689e-09 - ], - "worst_mean_abs": 2.703824306405726e-09, - "worst_max_relative": 3.2054967277277726e-05, - "worst_tolerance_ratio": 0.0003976688527754634 - } - } - }, - { - "model": "Pro", - "n": 512, - "left": "ECS", - "right": "ECS", - "scope": "across_process", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.9802322387695312e-08, - 8.344650268554688e-06 - ], - "worst_mean_abs": 8.344650268554688e-06, - "worst_max_relative": 1.798980709660136e-09, - "worst_tolerance_ratio": 1.798941927186088e-05 - }, - "forces": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.581984616284899e-07, - 1.4972472648366875e-06 - ], - "worst_mean_abs": 2.3659243502185956e-07, - "worst_max_relative": 0.0036506476987535736, - "worst_tolerance_ratio": 0.0929593411439242 - }, - "virial": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.4750957416941333e-06, - 1.640545696091067e-05 - ], - "worst_mean_abs": 8.144271571795967e-06, - "worst_max_relative": 3.3126932201614343e-05, - "worst_tolerance_ratio": 0.2399092416152986 - }, - "stress": { - "comparisons": 81, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 6.943850592178863e-10, - 5.6480564634975305e-09 - ], - "worst_mean_abs": 3.196065651875263e-09, - "worst_max_relative": 3.056347017376033e-05, - "worst_tolerance_ratio": 0.00045812560982852593 - } - } - }, - { - "model": "Pro", - "n": 512, - "left": "ECS", - "right": "BASE", - "scope": "cross_implementation", - "left_completed_processes": 3, - "right_completed_processes": 3, - "all_passed": true, - "metrics": { - "energy": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 0.0, - 1.1205673217773438e-05 - ], - "worst_mean_abs": 1.1205673217773438e-05, - "worst_max_relative": 2.4156474950175533e-09, - "worst_tolerance_ratio": 2.4155954211535858e-05 - }, - "forces": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 8.271673799242762e-07, - 1.4767237850321635e-06 - ], - "worst_mean_abs": 2.4276983175297557e-07, - "worst_max_relative": 0.0045431500280877805, - "worst_tolerance_ratio": 0.1079226036073298 - }, - "virial": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 2.3602785814702543e-06, - 1.7525709196775097e-05 - ], - "worst_mean_abs": 8.606947469341147e-06, - "worst_max_relative": 3.982333492627176e-05, - "worst_tolerance_ratio": 0.2884030229865688 - }, - "stress": { - "comparisons": 243, - "failures": 0, - "all_finite": true, - "all_bitwise": false, - "max_abs_range": [ - 5.223337179449672e-10, - 6.033735931026962e-09 - ], - "worst_mean_abs": 3.5233485454693554e-09, - "worst_max_relative": 3.170516012832255e-05, - "worst_tolerance_ratio": 0.0004900287665893675 - } - } - } - ] -} \ No newline at end of file diff --git a/doc/development/ecs-validation-20261025/validation.json b/doc/development/ecs-validation-20261025/validation.json deleted file mode 100644 index 0bca3f30aa..0000000000 --- a/doc/development/ecs-validation-20261025/validation.json +++ /dev/null @@ -1,165 +0,0 @@ -{ - "focused_cuda_tests": { - "passed": 60, - "warnings": 14, - "seconds": 50.86, - "scope": "previous current-master-port run; not a new full-suite publication rerun" - }, - "published_worker_smoke": { - "result": { - "status": "completed", - "mode": "ECS", - "n_atoms": 96, - "started": 1792945283.0112195, - "threshold": { - "atol": 1e-05, - "rtol": 0.0001, - "relative_denominator_floor": 1e-08 - }, - "system": "diamond", - "input_sha256": "5e068d754beefaed916a046c13a9418750b4a865863dc82b1f472995007e9fc9", - "parameter_count": 1124910, - "first_peak": { - "allocated": 557481472, - "reserved": 589299712 - }, - "steady_peak": { - "allocated": 557481472, - "reserved": 589299712 - }, - "full_window_peak": { - "allocated": 557481472, - "reserved": 589299712 - }, - "steady_wall_ms": { - "median": 17.27216294966638, - "p90": 17.32844109646976, - "min": 17.182583920657635, - "max": 17.366331070661545, - "samples": [ - 17.29396404698491, - 17.198944929987192, - 17.366331070661545, - 17.233089078217745, - 17.182583920657635, - 17.198764253407717, - 17.32423109933734, - 17.309763934463263, - 17.28607900440693, - 17.258246894925833 - ] - }, - "steady_event_ms": { - "median": 17.22985553741455, - "p90": 17.28654384613037, - "samples": [ - 17.244991302490234, - 17.148576736450195, - 17.325279235839844, - 17.191455841064453, - 17.14124870300293, - 17.156543731689453, - 17.28223991394043, - 17.26825523376465, - 17.243295669555664, - 17.216415405273438 - ] - }, - "finite": true, - "evaluations": 9, - "runtime_cohort_calls": [], - "precision_runtime": { - "matmul_precision": "highest", - "matmul_tf32": false, - "cudnn_tf32": false, - "outer_autocast": false - }, - "wall_ms_including_first": [ - 72504.98112803325, - 20.27683611959219, - 17.53692189231515, - 17.710010055452585, - 17.31169829145074, - 17.306859139353037, - 17.4970468506217, - 17.745596822351217, - 18.019483890384436 - ], - "event_ms_including_first": [ - 72504.7734375, - 20.244768142700195, - 17.50480079650879, - 17.67430305480957, - 17.2807674407959, - 17.27676773071289, - 17.466079711914062, - 17.715871810913086, - 17.988319396972656 - ], - "wrappers": [ - "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor/t3/ct3jv332q663pb7fau5sahydsikcnpltdy2wnxiqaxujbrwe2xrh.py" - ], - "routes": [ - { - "sha256": "65e175bca1f23233ff9f33a17000de61cb7f6359e00f23d5d6a5a18cde6d2ca7", - "opaque_cohort_calls": 0, - "single_cohort_named_calls": 32, - "stack_kernel_definitions": 16, - "single_cohort_marker": true - } - ], - "complete_peak": { - "allocated": 557481472, - "reserved": 589299712 - }, - "elapsed_s": 76.54529666900635 - }, - "manifest": { - "args": { - "root": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/candidate", - "model": "/home/kmpl/mkl/project/DPA4-Neo-OMat24-v20260627.pt", - "out": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/public_smoke_gpu1/Neo_n96_ECS_p0", - "cache": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS", - "gpu": "1", - "mode": "ECS", - "nrep": "2", - "seed": "0", - "repeat_cell": "[2, 2, 3]", - "system": "diamond", - "samples": "10", - "warmup": "3" - }, - "model_sha256": "8d8b2b02b9575cb9e0af420cc1e8b1d9ffcbc04752c2203d29f48ccd0cd5f07d", - "torch": "2.11.0+cu128", - "triton": "3.6.0", - "cuda": "12.8", - "baseline_revision": "2ba617bc3db67adee2b8ba00c71e9fa1c2d2bb8c", - "source_hashes": { - "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py": "0fb6ae06e62af5dfafe8b7c9cfdce975714a9ffb577dc4f3581ed13706735462", - "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py": "08c67a81883ff70f19ce9dad8809037585e0c5b0949ecceab747bb4179c44474" - }, - "flags": { - "DP_COMPILE_INFER": "1", - "DP_COMPILE": "0", - "DP_TRITON_INFER": "2", - "DP_CUDA_INFER": "0", - "DP_TF32_INFER": "0", - "DP_AMP_INFER": "0", - "DP_SO2_EDGE_COHORT_INFER": "1", - "DP_INTRA_OP_PARALLELISM_THREADS": "1", - "DP_INTER_OP_PARALLELISM_THREADS": "1", - "PYTORCH_ALLOC_CONF": "expandable_segments:True", - "TORCHINDUCTOR_COMPILE_THREADS": "1", - "TORCHINDUCTOR_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/inductor", - "TRITON_CACHE_DIR": "/home/kmpl/mkl/project/deepmd-kit/labs/dpa4_analysis/ecs_submission_20261025/cache/Neo_ECS/triton" - } - }, - "scope": "GPU1, Neo96,3warmup/10samples, not pooled into135-run results; finite execution is not a new cross-reference precision pass" - }, - "gpu0_probe": { - "status": "blocked_busy", - "pids": "2030231" - }, - "lint": "candidate full-repository Ruff check/format/diff-check passed; published Python whitelist Ruff/format passed. Generated compiler-cache files are not source lint targets.", - "artifact_patch": "git apply --check passed against clean2ba617bc" -} diff --git a/doc/development/ecs-validation-20261025/worker.py b/doc/development/ecs-validation-20261025/worker.py deleted file mode 100644 index bf32b9fddf..0000000000 --- a/doc/development/ecs-validation-20261025/worker.py +++ /dev/null @@ -1,370 +0,0 @@ -"""Accuracy-first full API matrix. No production source mutation.""" -# ruff: noqa: T201, TID253, ANN001, ANN002, ANN003, ANN201 -- standalone manual experiment, not imported package code - -import argparse -import copy -import hashlib -import json -import os -from pathlib import Path -import subprocess -import sys -import time -import traceback - -P = argparse.ArgumentParser() -P.add_argument("--root", type=Path, required=True) -P.add_argument("--model", type=Path, required=True) -P.add_argument("--out", type=Path, required=True) -P.add_argument("--cache", type=Path, required=True) -P.add_argument("--gpu", type=int, required=True) -P.add_argument( - "--mode", - choices=["TORCH", "BASE", "ECS", "ECS_RUNTIME", "TORCH_EAGER"], - required=True, -) -P.add_argument("--nrep", type=int, required=True) -P.add_argument("--seed", type=int, default=0) -P.add_argument("--repeat-cell", type=int, nargs=3) -P.add_argument("--system", choices=["diamond", "bcccu"], default="diamond") -P.add_argument("--samples", type=int, default=30) -P.add_argument("--warmup", type=int, default=8) -a = P.parse_args() -a.out.mkdir(parents=True, exist_ok=False) - - -def write(name, obj): - (a.out / name).write_text( - json.dumps(obj, indent=2, ensure_ascii=False, allow_nan=False) - ) - - -def sha(p): - return hashlib.sha256(p.read_bytes()).hexdigest() - - -busy = subprocess.check_output( - [ - "nvidia-smi", - "-i", - str(a.gpu), - "--query-compute-apps=pid", - "--format=csv,noheader", - ], - text=True, -).strip() -if busy: - write("result.json", {"status": "blocked_busy", "pids": busy}) - raise SystemExit(3) -for k in list(os.environ): - if k.startswith("DP_"): - del os.environ[k] -os.environ.update( - CUDA_VISIBLE_DEVICES=str(a.gpu), - DP_COMPILE_INFER="0" if a.mode == "TORCH_EAGER" else "1", - DP_COMPILE="0", - DP_TRITON_INFER="0" if a.mode.startswith("TORCH") else "2", - DP_CUDA_INFER="0", - DP_TF32_INFER="0", - DP_AMP_INFER="0", - DP_SO2_EDGE_COHORT_INFER="1" if a.mode.startswith("ECS") else "0", - OMP_NUM_THREADS="1", - DP_INTRA_OP_PARALLELISM_THREADS="1", - DP_INTER_OP_PARALLELISM_THREADS="1", - PYTORCH_ALLOC_CONF="expandable_segments:True", - TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD="1", - TORCHINDUCTOR_COMPILE_THREADS="1", - TORCHINDUCTOR_CACHE_DIR=str(a.cache / "inductor"), - TRITON_CACHE_DIR=str(a.cache / "triton"), -) -sys.path.insert(0, str(a.root)) -sys.meta_path[:] = [ - f - for f in sys.meta_path - if not type(f).__module__.startswith("_editable_skbc_deepmd_kit") -] -import site -import deepmd - -for installed in site.getsitepackages(): - p = Path(installed) / "deepmd" - if (p / "lib").is_dir(): - deepmd.__path__.append(str(p)) -assert Path(deepmd.__file__).resolve().parent.parent == a.root.resolve() -import numpy as np -import torch -import triton - -torch.set_num_threads(1) -torch.set_float32_matmul_precision("highest") -torch.backends.cuda.matmul.allow_tf32 = False -torch.backends.cudnn.allow_tf32 = False -torch.cuda.reset_peak_memory_stats() -manifest = { - "args": {k: str(v) for k, v in vars(a).items()}, - "model_sha256": sha(a.model), - "torch": torch.__version__, - "triton": triton.__version__, - "cuda": torch.version.cuda, - "baseline_revision": subprocess.check_output( - ["git", "rev-parse", "HEAD"], cwd=a.root, text=True - ).strip(), - "source_hashes": { - str(p.relative_to(a.root)): sha(p) - for p in [ - a.root / "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py", - a.root / "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py", - ] - if p.exists() - }, - "flags": { - k: v - for k, v in os.environ.items() - if k.startswith( - ("DP_", "TORCHINDUCTOR", "TRITON_CACHE", "PYTORCH_ALLOC", "PYTHONHASH") - ) - }, -} -write("manifest.json", manifest) -result = { - "status": "running", - "mode": a.mode, - "n_atoms": (8 if a.system == "diamond" else 2) - * int(np.prod(a.repeat_cell if a.repeat_cell else [a.nrep] * 3)), - "started": time.time(), - "threshold": {"atol": 1e-5, "rtol": 1e-4, "relative_denominator_floor": 1e-8}, -} -arrays = {} -runtime_calls = [] -try: - from ase.build import bulk - from deepmd.calculator import DP - - repeat_cell = tuple(a.repeat_cell) if a.repeat_cell else (a.nrep,) * 3 - atoms = ( - bulk("C", "diamond", a=3.567, cubic=True) - if a.system == "diamond" - else bulk("Cu", "bcc", a=2.87, cubic=True) - ).repeat(repeat_cell) - result["n_atoms"] = len(atoms) - result["system"] = a.system - rng = np.random.default_rng(a.seed) - frames = np.stack( - [ - atoms.positions + 0.02 * rng.standard_normal(atoms.positions.shape) - for _ in range(3) - ] - ) - np.savez_compressed( - a.out / "inputs.npz", - positions=frames, - cell=np.asarray(atoms.cell), - numbers=atoms.numbers, - ) - result["input_sha256"] = sha(a.out / "inputs.npz") - if a.mode == "ECS_RUNTIME": - from deepmd.pt_expt.kernels.triton.sezm import so2_edge_cohort as ec - - ec.SINGLE_COHORT_MAX_EDGES = 0 - original_runtime = ec.cohort_input_backward_impl - - def traced_runtime(*args, **kwargs): - edges = args[0].shape[0] - cap = args[7] if len(args) > 7 else kwargs["cohort_edges"] - runtime_calls.append( - {"edges": edges, "cohort": cap, "chunks": (edges + cap - 1) // cap} - ) - return original_runtime(*args, **kwargs) - - ec.cohort_input_backward_impl = traced_runtime - original_load = torch.load - if ( - manifest["model_sha256"] - == "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221" - ): - assert ( - manifest["model_sha256"] - == "446a6e893101fc52190cfccabb9d2328863d651aca36981fd8d3401c71a61221" - ) - proof = json.loads((a.model.parent / "cpu_load_check.json").read_text()) - assert proof["strict_missing"] == proof["strict_unexpected"] == [] - - def legacy_load(file, *args, **kwargs): - obj = original_load(file, *args, **kwargs) - if ( - isinstance(file, (str, Path)) - and Path(file).resolve() == a.model.resolve() - ): - state = obj["model"] if "model" in obj else obj - state["_extra_state"] = copy.deepcopy(state["_extra_state"]) - fit = state["_extra_state"]["model_params"]["fitting_net"] - assert fit["type"] == "ener" - fit["type"] = "dpa4_ener" - return obj - - torch.load = legacy_load - result["legacy_compatibility"] = ( - "Pro-only in-memory fitting alias ener -> dpa4_ener; strict CPU state check passed; original checkpoint unchanged" - ) - try: - calc = DP(model=str(a.model)) - finally: - torch.load = original_load - inner = calc.dp.get_model() - assert not inner.training - definition = calc.dp.get_model_def_script() - write("model_definition.json", definition) - result["parameter_count"] = sum(p.numel() for p in inner.parameters()) - - def evaluate(pos): - calc.reset() - sample = atoms.copy() - sample.positions = pos - sample.calc = calc - forces = sample.get_forces().copy() - return { - "energy": np.asarray(sample.get_potential_energy()), - "forces": forces, - "virial": np.asarray(calc.results["virial"]).copy(), - "stress": sample.get_stress().copy(), - } - - wall = [] - events = [] - for repeat in range(3): - for frame, pos in enumerate(frames): - torch.cuda.synchronize() - s, e = ( - torch.cuda.Event(enable_timing=True), - torch.cuda.Event(enable_timing=True), - ) - start = time.perf_counter() - s.record() - out = evaluate(pos) - e.record() - torch.cuda.synchronize() - elapsed = 1000 * (time.perf_counter() - start) - wall.append(elapsed) - events.append(s.elapsed_time(e)) - for k, v in out.items(): - arrays[f"{repeat}_{frame}_{k}"] = v - np.savez_compressed(a.out / "outputs.npz", **arrays) - if repeat == 0 and frame == 0: - result["first_peak"] = { - "allocated": torch.cuda.max_memory_allocated(), - "reserved": torch.cuda.max_memory_reserved(), - } - write( - "progress.json", - { - "repeat": repeat, - "frame": frame, - "elapsed_ms": elapsed, - "finite": all(bool(np.isfinite(v).all()) for v in out.values()), - }, - ) - print(a.mode, len(atoms), repeat, frame, elapsed, flush=True) - # Accuracy collection is separate from warmed timing and steady memory. - assert a.warmup >= 3 and a.samples >= 10 - for i in range(a.warmup): - evaluate(frames[i % len(frames)]) - timed_wall, timed_event = [], [] - for i in range(a.samples): - torch.cuda.synchronize() - begin = torch.cuda.Event(enable_timing=True) - end = torch.cuda.Event(enable_timing=True) - tick = time.perf_counter() - begin.record() - measured = evaluate(frames[i % len(frames)]) - end.record() - torch.cuda.synchronize() - assert all(bool(np.isfinite(v).all()) for v in measured.values()) - timed_wall.append(1000 * (time.perf_counter() - tick)) - timed_event.append(begin.elapsed_time(end)) - full_peak = { - "allocated": torch.cuda.max_memory_allocated(), - "reserved": torch.cuda.max_memory_reserved(), - } - torch.cuda.reset_peak_memory_stats() - for i in range(a.samples): - evaluate(frames[i % len(frames)]) - torch.cuda.synchronize() - result["steady_peak"] = { - "allocated": torch.cuda.max_memory_allocated(), - "reserved": torch.cuda.max_memory_reserved(), - } - result["full_window_peak"] = full_peak - result["steady_wall_ms"] = { - "median": float(np.median(timed_wall)), - "p90": float(np.percentile(timed_wall, 90)), - "min": min(timed_wall), - "max": max(timed_wall), - "samples": timed_wall, - } - result["steady_event_ms"] = { - "median": float(np.median(timed_event)), - "p90": float(np.percentile(timed_event, 90)), - "samples": timed_event, - } - from torch._inductor.codecache import PyCodeCache - - wrappers = [] - route = [] - for m in PyCodeCache.modules: - path = Path(m.__file__) - text = path.read_text() - if "def call(" not in text: - continue - wrappers.append(str(path)) - route.append( - { - "sha256": sha(path), - "opaque_cohort_calls": text.count("so2_cohort_input_bwd.default("), - "single_cohort_named_calls": text.count("so2_single_cohort_input_bwd"), - "stack_kernel_definitions": text.count("def _stack_"), - "single_cohort_marker": "so2_single_cohort_input_bwd" in text, - } - ) - if a.mode != "TORCH_EAGER": - assert wrappers, "compiled path missing" - assert torch.get_float32_matmul_precision() == "highest" - assert not torch.backends.cuda.matmul.allow_tf32 - assert not torch.backends.cudnn.allow_tf32 - assert not torch.is_autocast_enabled("cuda") - result.update( - status="completed", - finite=all(bool(np.isfinite(v).all()) for v in arrays.values()), - evaluations=9, - runtime_cohort_calls=runtime_calls, - precision_runtime={ - "matmul_precision": torch.get_float32_matmul_precision(), - "matmul_tf32": torch.backends.cuda.matmul.allow_tf32, - "cudnn_tf32": torch.backends.cudnn.allow_tf32, - "outer_autocast": torch.is_autocast_enabled("cuda"), - }, - wall_ms_including_first=wall, - event_ms_including_first=events, - wrappers=wrappers, - routes=route, - complete_peak={ - k: max(full_peak[k], result["steady_peak"][k]) for k in full_peak - }, - ) -except Exception as exc: - result.update( - status="oom" - if isinstance(exc, torch.OutOfMemoryError) - or type(exc).__name__ == "OutOfMemoryError" - else "failed", - exception=traceback.format_exc(), - partial_arrays=len(arrays), - complete_peak={ - "allocated": torch.cuda.max_memory_allocated(), - "reserved": torch.cuda.max_memory_reserved(), - }, - ) - print(result["exception"], flush=True) -finally: - result["elapsed_s"] = time.time() - result["started"] - write("result.json", result) -raise SystemExit(0 if result["status"] == "completed" else 1) diff --git a/source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_common.py b/source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_common.py deleted file mode 100644 index d0303669b4..0000000000 --- a/source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_common.py +++ /dev/null @@ -1,131 +0,0 @@ -# SPDX-License-Identifier: LGPL-3.0-or-later -"""Isolated-process setup and serialization for the SO(2) benchmark.""" - -import hashlib -import json -import os -from pathlib import Path -import site -import subprocess -import sys - -LAB = Path(__file__).resolve().parent -ROOT = Path(__file__).resolve().parents[4] - - -def setup(gpu, out, level="2"): - out.mkdir(parents=True, exist_ok=False) - busy = subprocess.check_output( - [ - "nvidia-smi", - "-i", - str(gpu), - "--query-compute-apps=pid", - "--format=csv,noheader", - ], - text=True, - ).strip() - if busy: - raise RuntimeError(f"GPU {gpu} has compute processes: {busy}") - for key in list(os.environ): - if key.startswith("DP_"): - del os.environ[key] - os.environ.update( - CUDA_VISIBLE_DEVICES=str(gpu), - DP_COMPILE_INFER="1", - DP_COMPILE="0", - DP_TRITON_INFER=level, - DP_CUDA_INFER="0", - DP_TF32_INFER="0", - DP_AMP_INFER="0", - OMP_NUM_THREADS="1", - DP_INTRA_OP_PARALLELISM_THREADS="1", - DP_INTER_OP_PARALLELISM_THREADS="1", - PYTORCH_ALLOC_CONF=os.getenv("LAB_ALLOC_CONF", "expandable_segments:True"), - TORCH_FORCE_NO_WEIGHTS_ONLY_LOAD="1", - TORCHINDUCTOR_COMPILE_THREADS="1", - TORCHINDUCTOR_CACHE_DIR=str(out.resolve() / "inductor"), - TRITON_CACHE_DIR=str(out.resolve() / "triton"), - ) - sys.path.insert(0, str(ROOT)) - sys.meta_path[:] = [ - f - for f in sys.meta_path - if not type(f).__module__.startswith("_editable_skbc_deepmd_kit") - ] - import deepmd - - for installed in site.getsitepackages(): - p = Path(installed) / "deepmd" - if (p / "lib").is_dir(): - deepmd.__path__.append(str(p)) - assert Path(deepmd.__file__).resolve().parent.parent == ROOT - import torch - - torch.set_num_threads(1) - torch.set_float32_matmul_precision("highest") - torch.backends.cuda.matmul.allow_tf32 = False - torch.backends.cudnn.allow_tf32 = False - - -def write(path, obj): - Path(path).write_text( - json.dumps(obj, indent=2, ensure_ascii=False, allow_nan=False) - ) - - -def sha(path): - return hashlib.sha256(Path(path).read_bytes()).hexdigest() - - -def environment(): - import torch - import triton - - return { - "python": sys.version, - "torch": torch.__version__, - "triton": triton.__version__, - "cuda": torch.version.cuda, - "gpu": subprocess.check_output( - [ - "nvidia-smi", - "--query-gpu=index,name,uuid,driver_version,clocks.sm,clocks.mem,temperature.gpu,power.draw", - "--format=csv", - ], - text=True, - ), - "revision": subprocess.check_output( - ["git", "rev-parse", "HEAD"], cwd=ROOT, text=True - ).strip(), - "flags": { - k: v - for k, v in os.environ.items() - if k.startswith( - ( - "DP_", - "PBS_", - "COHORT_", - "TORCHINDUCTOR", - "TRITON_CACHE", - "CUDA_VISIBLE", - "PYTORCH_ALLOC", - ) - ) - }, - "harness_hashes": { - p.name: sha(p) for p in LAB.glob("*so2_edge_cohort*benchmark*.py") - }, - } - - -def stats(values): - import numpy as np - - return { - "median": float(np.median(values)), - "p90": float(np.percentile(values, 90)), - "min": float(min(values)), - "max": float(max(values)), - "samples": values, - } diff --git a/source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_impl.py b/source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_impl.py deleted file mode 100644 index 2728d023b4..0000000000 --- a/source/tests/pt_expt/kernels/_so2_edge_cohort_benchmark_impl.py +++ /dev/null @@ -1,209 +0,0 @@ -# SPDX-License-Identifier: LGPL-3.0-or-later -# ruff: noqa: T201 -- manual benchmark CLI output -"""Measurement body executed in an isolated module namespace by the CLI.""" - -import argparse -from pathlib import Path -import time -import traceback - -from _so2_edge_cohort_benchmark_common import environment, setup, sha, stats, write - -p = argparse.ArgumentParser() -p.add_argument("--out", type=Path, required=True) -p.add_argument("--gpu", default="0") -p.add_argument("--variant", choices=("BASE", "TORCH"), default="BASE") -p.add_argument("--nrep", type=int, default=5) -p.add_argument( - "--model", - type=Path, - required=True, -) -p.add_argument("--reference", type=Path) -p.add_argument("--warmup", type=int, default=8) -p.add_argument("--samples", type=int, default=30) -p.add_argument("--system", choices=("diamond", "water"), default="diamond") -a = p.parse_args() -setup(a.gpu, a.out, "0" if a.variant == "TORCH" else "2") - -import numpy as np -import torch -from ase.build import bulk -from deepmd.calculator import DP -from deepmd.pt_expt.kernels.triton.sezm import so2_value_path as sv - -assert a.warmup >= 3 and a.samples >= 10 -manifest = environment() -manifest.update(model_sha256=sha(a.model), args={k: str(v) for k, v in vars(a).items()}) -manifest["neo_stack_fp32_configs"] = sv.stack_fp32_configs(32, 3) -write(a.out / "manifest.json", manifest) - -if a.system == "diamond": - base = bulk("C", "diamond", a=3.567, cubic=True).repeat((a.nrep,) * 3) -else: - from ase.build import molecule - - base = molecule("H2O") - base.set_cell([4.0, 4.0, 4.0]) - base.center() - base.pbc = True - base = base.repeat((a.nrep,) * 3) -rng = np.random.default_rng(0) -frames = [ - base.positions + 0.02 * rng.standard_normal(base.positions.shape) - for _ in range(max(3, a.warmup + a.samples)) -] -calc = DP(model=str(a.model)) -inner = calc.dp.get_model() -assert not inner.training, "Inference must not enable model AMP through training mode" -write(a.out / "model_definition.json", calc.dp.get_model_def_script()) - - -def evaluate(pos): - calc.reset() - atoms = base.copy() - atoms.positions = pos - atoms.calc = calc - forces = atoms.get_forces().copy() - return { - "energy": np.asarray(atoms.get_potential_energy()), - "forces": forces, - "virial": np.asarray(calc.results["virial"]).copy(), - "stress": atoms.get_stress().copy(), - } - - -def compare(got, ref): - result = {} - for key, value in got.items(): - expected = ref[key] - assert value.shape == expected.shape - finite = bool(np.isfinite(value).all() and np.isfinite(expected).all()) - if finite: - d = np.abs(value - expected) - ratio = d / (1e-5 + 1e-4 * np.abs(expected)) - result[key] = { - "passed": bool((ratio <= 1).all()), - "finite": True, - "max_abs": float(d.max()), - "mean_abs": float(d.mean()), - "max_relative": float((d / np.maximum(np.abs(expected), 1e-8)).max()), - "max_ratio": float(ratio.max()), - "bitwise_equal": bool(np.array_equal(value, expected)), - } - else: - result[key] = {"passed": False, "finite": False} - return result - - -result = {"variant": a.variant, "n_atoms": len(base), "status": "running"} -try: - torch.cuda.synchronize() - before = { - "allocated": torch.cuda.memory_allocated(), - "reserved": torch.cuda.memory_reserved(), - } - start = time.perf_counter() - evaluate(frames[0]) - torch.cuda.synchronize() - first_ms = 1000 * (time.perf_counter() - start) - first = { - "allocated": torch.cuda.max_memory_allocated(), - "reserved": torch.cuda.max_memory_reserved(), - } - print("first", first_ms, first, flush=True) - write(a.out / "first.json", {"first_ms": first_ms, "memory": first}) - for pos in frames[1 : a.warmup]: - evaluate(pos) - wall, gpu = [], [] - for pos in frames[a.warmup : a.warmup + a.samples]: - torch.cuda.synchronize() - s, e = ( - torch.cuda.Event(enable_timing=True), - torch.cuda.Event(enable_timing=True), - ) - start = time.perf_counter() - s.record() - evaluate(pos) - e.record() - torch.cuda.synchronize() - wall.append(1000 * (time.perf_counter() - start)) - gpu.append(s.elapsed_time(e)) - if globals().get("_controlled_rounds") is not None: - globals()["_controlled_rounds"](globals()) - complete = { - "allocated": torch.cuda.max_memory_allocated(), - "reserved": torch.cuda.max_memory_reserved(), - } - torch.cuda.reset_peak_memory_stats() - for pos in frames[a.warmup : a.warmup + a.samples]: - evaluate(pos) - torch.cuda.synchronize() - steady = { - "allocated": torch.cuda.max_memory_allocated(), - "reserved": torch.cuda.max_memory_reserved(), - } - arrays = { - f"{i}_{k}": v - for i, pos in enumerate(frames[:3]) - for k, v in evaluate(pos).items() - } - np.savez_compressed(a.out / "outputs.npz", **arrays) - accuracy = {} - if a.reference: - with np.load(a.reference) as ref: - accuracy = compare(arrays, ref) - repeats = [] - for _ in range(3): - repeated = { - f"{i}_{k}": v - for i, pos in enumerate(frames[:3]) - for k, v in evaluate(pos).items() - } - repeats.append(compare(repeated, arrays)) - from torch._inductor.codecache import PyCodeCache - - wrappers = [ - str(m.__file__) - for m in PyCodeCache.modules - if "def call(" in Path(m.__file__).read_text() - ] - assert wrappers, "No compiled wrapper; eager must not be reported as compiled" - result.update( - first_ms=first_ms, - wall_ms=stats(wall), - event_elapsed_ms=stats(gpu), - event_scope="entire API call on default stream; includes host gaps, not kernel-sum", - throughput_atoms_per_s=len(base) / (np.median(wall) / 1000), - memory={ - "before": before, - "first": first, - "complete": complete, - "steady": steady, - }, - accuracy=accuracy, - precision_pass=all(v["passed"] for v in accuracy.values()) - if accuracy - else None, - finite=all(bool(np.isfinite(v).all()) for v in arrays.values()), - repeat_noise=repeats, - wrappers=wrappers, - gpu_end=environment()["gpu"], - status="completed", - ) -except Exception: - result["status"] = "failed" - result["exception"] = traceback.format_exc() - print(result["exception"], flush=True) -finally: - write(a.out / "result.json", result) - print( - { - k: v - for k, v in result.items() - if k not in ("repeat_noise", "accuracy", "wrappers") - }, - flush=True, - ) -if result["status"] != "completed": - raise SystemExit(1) diff --git a/source/tests/pt_expt/kernels/_so2_edge_cohort_controlled_worker.py b/source/tests/pt_expt/kernels/_so2_edge_cohort_controlled_worker.py deleted file mode 100644 index 3b21737f42..0000000000 --- a/source/tests/pt_expt/kernels/_so2_edge_cohort_controlled_worker.py +++ /dev/null @@ -1,245 +0,0 @@ -# SPDX-License-Identifier: LGPL-3.0-or-later -# ruff: noqa: T201 -- manual benchmark CLI output -"""Resident worker preserving the public benchmark's pre-validation entry.""" - -import argparse -import ast -import hashlib -import json -import os -from pathlib import Path -import runpy -import subprocess -import sys -import time - -HERE = Path(__file__).resolve().parent -import _so2_edge_cohort_benchmark_common as common - -p = argparse.ArgumentParser() -p.add_argument("--baseline-root", type=Path, required=True) -p.add_argument("--candidate-root", type=Path, required=True) -p.add_argument("--model", type=Path, required=True) -p.add_argument("--reference", type=Path, required=True) -p.add_argument( - "--variant", choices=("BASE", "BASE2", "NATIVE", "ECS", "ECS2"), required=True -) -p.add_argument("--out", type=Path, required=True) -p.add_argument("--cache", type=Path, required=True) -p.add_argument("--gpu", default="0") -p.add_argument("--cpu", type=int, default=8) -a = p.parse_args() -os.sched_setaffinity(0, {a.cpu}) -init = json.loads(sys.stdin.readline()) -allowed = set(init["pids"]) -original_check = subprocess.check_output - - -def checked(cmd, *args, **kwargs): - value = original_check(cmd, *args, **kwargs) - if isinstance(cmd, list) and "--query-compute-apps=pid" in cmd: - foreign = {int(x) for x in value.split()} - allowed - if foreign: - raise RuntimeError(f"foreign compute processes: {foreign}") - return "" - return value - - -common.ROOT = ( - a.baseline_root.resolve() - if a.variant in ("BASE", "BASE2") - else a.candidate_root.resolve() -) -original_setup = common.setup - - -def setup(*args, **kwargs): - subprocess.check_output = checked - try: - original_setup(*args, **kwargs) - finally: - subprocess.check_output = original_check - os.environ.update( - DP_SO2_EDGE_COHORT_INFER="1" if a.variant in ("ECS", "ECS2") else "0", - TORCHINDUCTOR_CACHE_DIR=str(a.cache / "inductor"), - TRITON_CACHE_DIR=str(a.cache / "triton"), - ) - - -common.setup = setup - - -def emit(value): - print("@CONTROL@" + json.dumps(value), flush=True) - - -def callback(ns): - import torch - from torch._dynamo.utils import counters - from torch._inductor.codecache import PyCodeCache - - wrappers, kernels = [], [] - for module in PyCodeCache.modules: - path = Path(module.__file__) - if "def call(" in path.read_text(): - wrappers.append({"path": str(path), "sha256": common.sha(path)}) - for name, kernel in vars(module).items(): - if not hasattr(kernel, "launchers") or not hasattr( - kernel, "triton_meta" - ): - continue - source = ast.parse(kernel.fn.src) - for node in ast.walk(source): - if isinstance(node, ast.FunctionDef): - node.name = "kernel" - identity = { - "body": ast.dump(source, include_attributes=False), - "signature": { - k: str(v) - for k, v in kernel.triton_meta.get("signature", {}).items() - }, - "constants": kernel.triton_meta.get("constants", {}), - } - launches = [] - for launch in kernel.launchers: - compiled = next( - ( - r.kernel - for r in kernel.compile_results - if str(r.config) == str(launch.config) - ), - None, - ) - binary = ( - getattr(compiled, "asm", {}).get("cubin") - if compiled is not None - else None - ) - launches.append( - { - "config": str(launch.config), - "cubin_sha256": hashlib.sha256(binary).hexdigest() - if binary is not None - else None, - "n_regs": getattr(launch, "n_regs", None), - "n_spills": getattr(launch, "n_spills", None), - "shared": getattr(launch, "shared", None), - } - ) - kernels.append( - { - "name": name, - "semantic_sha256": hashlib.sha256( - json.dumps(identity, sort_keys=True, default=str).encode() - ).hexdigest(), - "launchers": launches, - } - ) - first = { - "variant": a.variant, - "pid": os.getpid(), - "entry_wall_ms": common.stats(ns["wall"]), - "entry_event_ms": common.stats(ns["gpu"]), - "first_ms": ns["first_ms"], - "first_peak": ns["first"], - "wrappers": wrappers, - "kernels": kernels, - "source_sha256": { - str(path.relative_to(common.ROOT)): common.sha(path) - for path in (common.ROOT / "deepmd/pt_expt/kernels/triton/sezm").glob( - "so2_*cohort.py" - ) - }, - "counters": {k: dict(v) for k, v in counters.items()}, - } - common.write(a.out / "ready.json", first) - emit(dict(status="ready", **first)) - rounds = [] - evaluate, frames = ns["evaluate"], ns["frames"] - for line in sys.stdin: - command = json.loads(line) - if command["action"] == "stop": - break - if command["action"] == "profile": - from torch.profiler import ProfilerActivity, profile, record_function - - for pos in frames[:8]: - evaluate(pos) - torch.cuda.synchronize() - with profile( - activities=[ProfilerActivity.CPU, ProfilerActivity.CUDA] - ) as prof: - for i in range(5): - torch.cuda.synchronize() - with record_function(f"CONTROLLED_FRAME_{i}"): - evaluate(frames[8 + i]) - torch.cuda.synchronize() - trace = a.out / "trace.json" - prof.export_chrome_trace(str(trace)) - emit({"status": "profiled", "variant": a.variant, "trace": str(trace)}) - continue - if command.get("cpu") is not None: - os.sched_setaffinity(0, {command["cpu"]}) - for i in range(command.get("warmup", 8)): - evaluate(frames[i % len(frames)]) - torch.cuda.synchronize() - torch.cuda.reset_peak_memory_stats() - pre_counters = {k: dict(v) for k, v in counters.items()} - start_ns = time.monotonic_ns() - wall, events = [], [] - for i in range(command.get("samples", 50)): - torch.cuda.synchronize() - s, e = ( - torch.cuda.Event(enable_timing=True), - torch.cuda.Event(enable_timing=True), - ) - start = time.perf_counter() - s.record() - evaluate(frames[8 + i % 30]) - e.record() - torch.cuda.synchronize() - wall.append(1000 * (time.perf_counter() - start)) - events.append(s.elapsed_time(e)) - record = { - "variant": a.variant, - "pid": os.getpid(), - "command": command, - "start_monotonic_ns": start_ns, - "end_monotonic_ns": time.monotonic_ns(), - "cpu": sorted(os.sched_getaffinity(0)), - "wall_ms": common.stats(wall), - "event_ms": common.stats(events), - "peak": { - "allocated": torch.cuda.max_memory_allocated(), - "reserved": torch.cuda.max_memory_reserved(), - }, - "counters_before": pre_counters, - "counters_after": {k: dict(v) for k, v in counters.items()}, - } - rounds.append(record) - common.write(a.out / "rounds.json", rounds) - emit(record) - - -sys.argv = [ - str(HERE / "_so2_edge_cohort_benchmark_impl.py"), - "--gpu", - a.gpu, - "--out", - str(a.out), - "--model", - str(a.model), - "--nrep", - "2", - "--reference", - str(a.reference), -] -ns = runpy.run_path( - str(HERE / "_so2_edge_cohort_benchmark_impl.py"), - init_globals={"_controlled_rounds": callback}, - run_name="__main__", -) -result = ns["result"] -if not result["precision_pass"] or not result["finite"]: - raise SystemExit("accuracy failure") -emit({"status": "completed", "variant": a.variant, "precision_pass": True}) diff --git a/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_clocks.py b/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_clocks.py deleted file mode 100644 index 710163c1cc..0000000000 --- a/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_clocks.py +++ /dev/null @@ -1,76 +0,0 @@ -# SPDX-License-Identifier: LGPL-3.0-or-later -# ruff: noqa: T201 -- manual benchmark CLI output -"""Supplement only: match observed clock/temperature bins, never replace raw trials.""" - -import argparse -import json -from pathlib import Path - -import numpy as np -from scipy.stats import t - -p = argparse.ArgumentParser(description=__doc__) -p.add_argument("directories", type=Path, nargs="+") -p.add_argument("--out", type=Path, required=True) -p.add_argument("--memory-clock", type=int, default=13801) -a = p.parse_args() -result = [] -for root in a.directories: - rows = json.loads((root / "same_context_rounds.json").read_text()) - monitor = json.loads((root / "same_context_monitor.json").read_text()) - kept = [] - for block in sorted({r["command"]["block"] for r in rows}): - group = [r for r in rows if r["command"]["block"] == block] - clocks = {} - temperatures = {} - memory = {} - effects = {} - for arm in ("BASE", "ECS"): - rounds = [r for r in group if r["variant"] == arm] - samples = [ - m - for r in rounds - for m in monitor - if r["start_monotonic_ns"] <= m["t_ns"] <= r["end_monotonic_ns"] - ] - clocks[arm] = np.mean([m["sm_mhz"] for m in samples]) - temperatures[arm] = np.mean([m["temperature"] for m in samples]) - memory[arm] = {m["mem_mhz"] for m in samples} - effects[arm] = np.mean(np.log([r["wall_ms"]["median"] for r in rounds])) - if ( - abs(clocks["ECS"] / clocks["BASE"] - 1) <= 0.005 - and memory["BASE"] == memory["ECS"] == {a.memory_clock} - and abs(temperatures["ECS"] - temperatures["BASE"]) <= 2 - ): - kept.append( - { - "block": block, - "logratio": float(effects["ECS"] - effects["BASE"]), - "sm_mhz": {k: float(v) for k, v in clocks.items()}, - } - ) - result.append( - { - "run": root.name, - "retained_blocks": len(kept), - "blocks": kept, - "mean_logratio": float(np.mean([r["logratio"] for r in kept])) - if kept - else None, - } - ) -logs = np.array([r["mean_logratio"] for r in result if r["mean_logratio"] is not None]) -radius = t.ppf(0.975, len(logs) - 1) * logs.std(ddof=1) / np.sqrt(len(logs)) -summary = { - "criteria": f"block mean SM clock difference <=0.5%, both memory clocks {a.memory_clock}MHz, mean temperature difference <=2C", - "primary": False, - "caveat": "post-stratified sensitivity analysis; conditioning can change composition and does not prove constant clocks or replace full results", - "processes": result, - "mean_change_percent": float(100 * np.expm1(logs.mean())), - "process_t95_percent": ( - 100 * np.expm1(logs.mean() + np.array([-1, 1]) * radius) - ).tolist(), -} -a.out.write_text(json.dumps(summary, indent=2)) -print(json.dumps({k: v for k, v in summary.items() if k != "processes"}, indent=2)) -print([(r["run"], r["retained_blocks"]) for r in result]) diff --git a/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_paired.py b/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_paired.py deleted file mode 100644 index bd72c76f2e..0000000000 --- a/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_paired.py +++ /dev/null @@ -1,229 +0,0 @@ -# SPDX-License-Identifier: LGPL-3.0-or-later -# ruff: noqa: T201 -- manual benchmark CLI output -"""Analyze ABBA blocks using process/temporal clusters, not iid frame counts.""" - -import argparse -import ast -from collections import Counter, defaultdict -import json -from pathlib import Path - -import numpy as np -from scipy.stats import t as student_t - -p = argparse.ArgumentParser() -p.add_argument("directory", type=Path) -a = p.parse_args() -root = a.directory -records = json.loads((root / "rounds.json").read_text()) -control = json.loads((root / "controller.json").read_text()) -assert control["status"] == "completed", ( - "incomplete/failed trials cannot be final evidence" -) -arms = ast.literal_eval(control["args"]["variants"]) -blocks = defaultdict(list) -for row in records: - blocks[(row["pair"], row["command"]["block"])].append(row) -effects, absolute, by_pair = [], [], defaultdict(list) -for (pair, block), rows in sorted(blocks.items()): - assert len(rows) == 4 - per_arm = { - arm: [r["wall_ms"]["median"] for r in rows if r["variant"] == arm] - for arm in arms - } - assert all(len(v) == 2 for v in per_arm.values()) - logratio = float( - np.mean(np.log(per_arm[arms[1]])) - np.mean(np.log(per_arm[arms[0]])) - ) - difference = float(np.mean(per_arm[arms[1]]) - np.mean(per_arm[arms[0]])) - effects.append( - { - "pair": pair, - "block": block, - "logratio": logratio, - "percent": 100 * np.expm1(logratio), - "difference_ms": difference, - } - ) - by_pair[pair].append(logratio) - absolute.append(difference) -rng = np.random.default_rng(20261019) -matrix = np.asarray(list(by_pair.values())) -draws = [] -for _ in range(20000): - pair_indices = rng.integers(0, len(matrix), size=len(matrix)) - resampled = [ - rng.choice(matrix[i], size=len(matrix[i]), replace=True).mean() - for i in pair_indices - ] - draws.append(np.mean(resampled)) -ci = 100 * np.expm1(np.percentile(draws, [2.5, 97.5])) -pair_means = matrix.mean(axis=1) -process_t_ci = None -upper95 = None -if len(pair_means) > 1: - se = pair_means.std(ddof=1) / np.sqrt(len(pair_means)) - radius = student_t.ppf(0.975, len(pair_means) - 1) * se - process_t_ci = ( - 100 * np.expm1([pair_means.mean() - radius, pair_means.mean() + radius]) - ).tolist() - upper95 = float( - 100 - * np.expm1(pair_means.mean() + student_t.ppf(0.95, len(pair_means) - 1) * se) - ) -stats = {} -for arm in arms: - rows = [r for r in records if r["variant"] == arm] - samples = [v for r in rows for v in r["wall_ms"]["samples"]] - stats[arm] = { - "rounds": len(rows), - "samples": len(samples), - "median_of_round_medians_ms": float( - np.median([r["wall_ms"]["median"] for r in rows]) - ), - "pooled_p50_ms": float(np.median(samples)), - "pooled_p90_ms": float(np.percentile(samples, 90)), - "min_ms": float(min(samples)), - "max_ms": float(max(samples)), - "event_p50_ms": float( - np.median([v for r in rows for v in r["event_ms"]["samples"]]) - ), - } -monitor = json.loads((root / "monitor.json").read_text()) -telemetry = [] -for row in records: - values = [ - m - for m in monitor - if row["start_monotonic_ns"] <= m["t_ns"] <= row["end_monotonic_ns"] - ] - telemetry.append( - { - "pair": row["pair"], - "block": row["command"]["block"], - "position": row["command"]["position"], - "arm": row["variant"], - "count": len(values), - "sm_mhz": { - str(k): v for k, v in Counter(m["sm_mhz"] for m in values).items() - }, - "mem_mhz": { - str(k): v for k, v in Counter(m["mem_mhz"] for m in values).items() - }, - "temperature_range": [ - min(m["temperature"] for m in values), - max(m["temperature"] for m in values), - ] - if values - else None, - "mean_power_w": float(np.mean([m["power_mw"] / 1000 for m in values])) - if values - else None, - } - ) -ready = json.loads((root / "ready.json").read_text()) -kernel_audits = [] -for pair in by_pair: - arm_kernels = [] - for arm in arms: - entry = next(r for r in ready if r["pair"] == pair and r["variant"] == arm) - grouped = defaultdict(list) - for kernel in entry.get("kernels", []): - grouped[kernel["semantic_sha256"]].extend(kernel["launchers"]) - arm_kernels.append(grouped) - shared = set(arm_kernels[0]) & set(arm_kernels[1]) - different = [] - identical_binaries = 0 - for identity in shared: - configs = [{v["config"] for v in group[identity]} for group in arm_kernels] - if configs[0] != configs[1]: - different.append( - {"semantic_sha256": identity, "configs": [sorted(v) for v in configs]} - ) - bins = [ - {v["cubin_sha256"] for v in group[identity] if v["cubin_sha256"]} - for group in arm_kernels - ] - if bins[0] and bins[0] == bins[1]: - identical_binaries += 1 - before = json.loads((root / f"cache_pair{pair}_before.json").read_text()) - after = json.loads((root / f"cache_pair{pair}_after.json").read_text()) - kernel_audits.append( - { - "pair": pair, - "shared_semantic_programs": len(shared), - "common_programs_identical_cubin": identical_binaries, - "different_configs": different, - "all_compiler_artifact_hashes_unchanged": before == after, - "fingerprinted_artifacts": len(before), - } - ) -profiles = [] -for path in sorted(root.glob("pair*_*/*.json")): - if path.name != "trace.json": - continue - events = json.loads(path.read_text())["traceEvents"] - frames = [ - v - for v in events - if v.get("name", "").startswith("CONTROLLED_FRAME_") and v.get("ph") == "X" - ] - for frame in frames: - kernels = [ - v - for v in events - if v.get("cat") == "kernel" - and v.get("ph") == "X" - and frame["ts"] <= v["ts"] - and v["ts"] + v["dur"] <= frame["ts"] + frame["dur"] - ] - mixed = [v for v in kernels if v["name"].startswith("_stack_")] - profiles.append( - { - "run": path.parent.name, - "frame": frame["name"], - "kernel_count": len(kernels), - "kernel_sum_ms": sum(v["dur"] for v in kernels) / 1000, - "mixing_kernel_count": len(mixed), - "mixing_kernel_sum_ms": sum(v["dur"] for v in mixed) / 1000, - "mixing_names": dict(Counter(v["name"] for v in mixed)), - } - ) -summary = { - "arms": arms, - "process_pairs": len(by_pair), - "blocks": len(effects), - "paired_logmean_change_percent": float(100 * np.expm1(matrix.mean())), - "mean_block_difference_ms": float(np.mean(absolute)), - "hierarchical_bootstrap_95_percent": ci.tolist(), - "process_pair_t_95_percent": process_t_ci, - "process_pair_t_one_sided_upper95_percent": upper95, - "t_interval_caveat": "t interval over independent process-pair means; n=2 is calibration only, not a precise population estimate", - "bootstrap_draws": 20000, - "bootstrap_seed": 20261019, - "interval_method": "resample independent process pairs, then ABBA blocks within each selected pair; frame samples are not iid replicates", - "per_pair_change_percent": [float(100 * np.expm1(row.mean())) for row in matrix], - "interpretation": "positive interval: repeatable cost in this controlled setup" - if ci[0] > 0 - else "negative interval: repeatable improvement in this controlled setup" - if ci[1] < 0 - else "interval crosses zero: unresolved sign, not proof of zero cost", - "stats": stats, - "block_effects": effects, - "interval_telemetry": telemetry, - "kernel_audits": kernel_audits, - "profiles": profiles, - "monitor_errors": control["errors"], - "memory_scope": "resident timing only; retain independent cold-first/full-window capacity measurements separately", -} -(root / "summary.json").write_text(json.dumps(summary, indent=2)) -print( - json.dumps( - { - k: v - for k, v in summary.items() - if k not in ("block_effects", "interval_telemetry", "profiles") - }, - indent=2, - ) -) diff --git a/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_same_context.py b/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_same_context.py deleted file mode 100644 index 43fb585ffc..0000000000 --- a/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_same_context.py +++ /dev/null @@ -1,104 +0,0 @@ -# SPDX-License-Identifier: LGPL-3.0-or-later -# ruff: noqa: T201 -- manual benchmark CLI output -"""Cluster normal same-context API contrasts by independent process.""" - -import argparse -import json -from pathlib import Path - -import numpy as np -from scipy.stats import t - -p = argparse.ArgumentParser() -p.add_argument("directories", type=Path, nargs="+") -p.add_argument("--out", type=Path, required=True) -a = p.parse_args() -rng = np.random.default_rng(20261019) -processes = [] -all_rows = [] -for root in a.directories: - status = json.loads((root / "same_context_status.json").read_text()) - assert status["status"] == "completed" - rows = json.loads((root / "same_context_rounds.json").read_text()) - all_rows.extend(rows) - effects = [] - for block in sorted({r["command"]["block"] for r in rows}): - group = [r for r in rows if r["command"]["block"] == block] - m = { - arm: np.mean( - np.log([r["wall_ms"]["median"] for r in group if r["variant"] == arm]) - ) - for arm in ("BASE", "ECS") - } - effects.append(float(m["ECS"] - m["BASE"])) - draws = np.mean(rng.choice(effects, (20000, len(effects))), axis=1) - meta = json.loads((root / "same_context_manifest.json").read_text()) - processes.append( - { - "run": root.name, - "first": meta["first"], - "blocks": len(effects), - "logmean": float(np.mean(effects)), - "change_percent": float(100 * np.expm1(np.mean(effects))), - "conditional_block_ci95_percent": ( - 100 * np.expm1(np.percentile(draws, [2.5, 97.5])) - ).tolist(), - "worst_error_ratio": max( - v["max_ratio"] - for case in meta["accuracy"].values() - for v in case.values() - ), - "wrappers": { - arm: entry["sha256"] for arm, entry in meta["wrappers"].items() - }, - } - ) -logs = np.array([p["logmean"] for p in processes]) -se = logs.std(ddof=1) / np.sqrt(len(logs)) if len(logs) > 1 else None -interval = ( - ( - 100 - * np.expm1(logs.mean() + np.array([-1, 1]) * t.ppf(0.975, len(logs) - 1) * se) - ).tolist() - if se is not None - else None -) -summary = { - "processes": processes, - "process_count": len(processes), - "mean_change_percent": float(100 * np.expm1(logs.mean())), - "process_t95_percent": interval, - "confidence_note": "processes, not frames, are independent replicates; conditional block intervals do not establish population equivalence", - "stats": { - arm: { - "samples": sum( - len(r["wall_ms"]["samples"]) for r in all_rows if r["variant"] == arm - ), - "p50_ms": float( - np.median( - [ - v - for r in all_rows - if r["variant"] == arm - for v in r["wall_ms"]["samples"] - ] - ) - ), - "p90_ms": float( - np.percentile( - [ - v - for r in all_rows - if r["variant"] == arm - for v in r["wall_ms"]["samples"] - ], - 90, - ) - ), - } - for arm in ("BASE", "ECS") - }, - "scope": "normal full ASE API, both implementations in one CUDA context; two calculators, actual master and exact PR definitions; no Dynamo inference frontend", -} -a.out.write_text(json.dumps(summary, indent=2)) -print(json.dumps(summary, indent=2)) diff --git a/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_serial.py b/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_serial.py deleted file mode 100644 index 638ea9f6fc..0000000000 --- a/source/tests/pt_expt/kernels/analyze_so2_edge_cohort_serial.py +++ /dev/null @@ -1,112 +0,0 @@ -# SPDX-License-Identifier: LGPL-3.0-or-later -# ruff: noqa: T201 -- manual benchmark CLI output -"""Matched-seed independent-process analysis of serialized normal API runs.""" - -import argparse -import json -from pathlib import Path - -import numpy as np -from scipy.stats import t - -p = argparse.ArgumentParser() -p.add_argument("directory", type=Path) -a = p.parse_args() -root = a.directory -assert json.loads((root / "controller.json").read_text())["status"] == "completed" -rows = json.loads((root / "rounds.json").read_text()) -formal = [r for r in rows if r["command"]["phase"] == "formal"] -ready = json.loads((root / "ready.json").read_text()) -seeds = sorted({r["seed"] for r in formal}) -pairs = [] -for seed in seeds: - stats = {} - for arm in ("BASE", "ECS"): - group = [r for r in formal if r["seed"] == seed and r["variant"] == arm] - values = [v for r in group for v in r["wall_ms"]["samples"]] - stats[arm] = { - "p50_ms": float(np.median(values)), - "p90_ms": float(np.percentile(values, 90)), - "round_logmean_ms": float( - np.exp(np.mean(np.log([r["wall_ms"]["median"] for r in group]))) - ), - "round_medians_ms": [r["wall_ms"]["median"] for r in group], - } - change = float( - np.log(stats["ECS"]["round_logmean_ms"]) - - np.log(stats["BASE"]["round_logmean_ms"]) - ) - pairs.append( - { - "seed": seed, - "arms": stats, - "logratio": change, - "percent": float(100 * np.expm1(change)), - } - ) -logs = np.array([p["logratio"] for p in pairs]) -se = logs.std(ddof=1) / np.sqrt(len(logs)) if len(logs) > 1 else None -ci = ( - ( - 100 - * np.expm1(logs.mean() + np.array([-1, 1]) * t.ppf(0.975, len(logs) - 1) * se) - ).tolist() - if se is not None - else None -) -monitor = json.loads((root / "monitor.json").read_text()) -telemetry = [] -for r in formal: - vals = [ - m - for m in monitor - if r["start_monotonic_ns"] <= m["t_ns"] <= r["end_monotonic_ns"] - ] - telemetry.append( - { - "run": r["run"], - "seed": r["seed"], - "arm": r["variant"], - "block": r["command"]["block"], - "mean_sm_mhz": float(np.mean([m["sm_mhz"] for m in vals])), - "mem_mhz": sorted({m["mem_mhz"] for m in vals}), - "temperature_range": [ - min(m["temperature"] for m in vals), - max(m["temperature"] for m in vals), - ], - "clock_reason_masks": sorted({m["clock_reasons"] for m in vals}), - } - ) -artifacts = [] -for entry in ready: - before = json.loads((root / f"cache_{entry['run']}_before.json").read_text()) - after = json.loads((root / f"cache_{entry['run']}_after.json").read_text()) - assert before == after - artifacts.append({"run": entry["run"], "unchanged": True, "count": len(before)}) -stats = {} -for arm in ("BASE", "ECS"): - values = [v for r in formal if r["variant"] == arm for v in r["wall_ms"]["samples"]] - stats[arm] = { - "samples": len(values), - "p50_ms": float(np.median(values)), - "p90_ms": float(np.percentile(values, 90)), - "min_ms": float(min(values)), - "max_ms": float(max(values)), - } -summary = { - "scope": "normal API; one CUDA process at a time; matched Python hash seeds; see controller arguments", - "pairs": pairs, - "mean_change_percent": float(100 * np.expm1(logs.mean())), - "process_pair_t_95_percent": ci, - "stats": stats, - "interval_telemetry": telemetry, - "compiler_artifacts": artifacts, - "interpretation": "finite independent process pairs; a confidence interval is not proof of zero cost", - "cold_peak": "separate existing cold-process measurement, not replaced", -} -(root / "summary.json").write_text(json.dumps(summary, indent=2)) -print( - json.dumps( - {k: v for k, v in summary.items() if k != "interval_telemetry"}, indent=2 - ) -) diff --git a/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort.py b/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort.py deleted file mode 100644 index 90b579489d..0000000000 --- a/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort.py +++ /dev/null @@ -1,131 +0,0 @@ -# SPDX-License-Identifier: LGPL-3.0-or-later -# ruff: noqa: T201 -- manual benchmark CLI output -"""Reproduce full-model first-call, global and steady SO(2) memory results. - -This manual CUDA benchmark is not collected by pytest. Checkpoint files and -generated compiler caches are intentionally not included in the repository. -""" - -import argparse -import os -from pathlib import Path -import runpy -import sys - -import _so2_edge_cohort_benchmark_common as common - -parser = argparse.ArgumentParser(description=__doc__) -parser.add_argument("--model", required=True, type=Path) -parser.add_argument("--out", required=True, type=Path) -parser.add_argument( - "--source-root", type=Path, default=Path(__file__).resolve().parents[4] -) -parser.add_argument("--mode", choices=("base", "ecs", "torch"), default="base") -parser.add_argument("--gpu", default="0") -parser.add_argument("--nrep", type=int, default=2) -parser.add_argument("--warmup", type=int, default=8) -parser.add_argument("--samples", type=int, default=30) -parser.add_argument("--reference", type=Path) -parser.add_argument("--cache-dir", type=Path) -parser.add_argument("--allow-warm-cache", action="store_true") -args = parser.parse_args() -common.ROOT = args.source_root.resolve() -original_setup = common.setup - - -def setup(gpu, out, level="2"): - """Select code and precision before importing the model implementation.""" - original_setup(gpu, out, level) - os.environ["DP_SO2_EDGE_COHORT_INFER"] = "1" if args.mode == "ecs" else "0" - if args.cache_dir is not None: - cache = args.cache_dir.resolve() - if cache.exists() and any(cache.iterdir()) and not args.allow_warm_cache: - raise ValueError( - "nonempty cache: pass --allow-warm-cache or use a new directory" - ) - os.environ["TORCHINDUCTOR_CACHE_DIR"] = str(cache / "inductor") - os.environ["TRITON_CACHE_DIR"] = str(cache / "triton") - - -common.setup = setup -implementation = Path(__file__).with_name("_so2_edge_cohort_benchmark_impl.py") -sys.argv = [ - str(implementation), - "--model", - str(args.model), - "--out", - str(args.out), - "--gpu", - args.gpu, - "--nrep", - str(args.nrep), - "--warmup", - str(args.warmup), - "--samples", - str(args.samples), - "--variant", - "TORCH" if args.mode == "torch" else "BASE", -] -if args.reference is not None: - sys.argv += ["--reference", str(args.reference)] -namespace = runpy.run_path(str(implementation), run_name="__main__") -import torch - -result = namespace["result"] -result["variant"] = args.mode -memory = result["memory"] -# The implementation resets counters only for its separate steady replay. -# Preserve the preceding high-water mark, including model load and first JIT. -memory["after_validation"] = { - "allocated": torch.cuda.max_memory_allocated(), - "reserved": torch.cuda.max_memory_reserved(), -} -memory["global"] = { - key: max( - memory[phase][key] - for phase in ("first", "complete", "steady", "after_validation") - ) - for key in ("allocated", "reserved") -} -memory["global_first_observed_phase"] = next( - phase - for phase in ("first", "complete", "steady", "after_validation") - if memory[phase]["allocated"] == memory["global"]["allocated"] -) -result["protocol"] = { - "seed": 0, - "coordinate_std_angstrom": 0.02, - "cache": "warm_allowed" - if args.allow_warm_cache - else "new_inductor_and_triton_cache", - "primary_memory": "global high-water mark including model load and first JIT; never substitute steady", - "tf32": False, - "amp": False, - "weight_gradients": False, - "cold_scope": "new process and application compiler caches; driver/system caches are not purged", -} -result["source_hashes"] = { - str(p.relative_to(common.ROOT)): common.sha(p) - for p in [ - common.ROOT / "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py", - common.ROOT / "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py", - ] - if p.exists() -} -assert torch.get_float32_matmul_precision() == "highest" -assert not torch.backends.cuda.matmul.allow_tf32 -assert not torch.backends.cudnn.allow_tf32 -common.write(args.out / "result.json", result) -if args.reference is not None and not result["precision_pass"]: - raise SystemExit("accuracy check failed; thresholds were not relaxed") -if not all(v["passed"] for repeat in result["repeat_noise"] for v in repeat.values()): - raise SystemExit("within-process reproducibility check failed") -print( - { - "mode": args.mode, - "p50_ms": result["wall_ms"]["median"], - "first_peak": memory["first"], - "global_peak": memory["global"], - "steady_peak": memory["steady"], - } -) diff --git a/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_paired.py b/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_paired.py deleted file mode 100644 index 7b651909d6..0000000000 --- a/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_paired.py +++ /dev/null @@ -1,228 +0,0 @@ -# SPDX-License-Identifier: LGPL-3.0-or-later -# ruff: noqa: T201 -- manual benchmark CLI output -"""Sequential resident-worker ABBA trials with fixed caches and interval NVML.""" - -import argparse -import hashlib -import json -import os -from pathlib import Path -import subprocess -import sys -import threading -import time - -import pynvml as nv - -HERE = Path(__file__).resolve().parent -p = argparse.ArgumentParser() -p.add_argument("--out", type=Path, required=True) -p.add_argument("--baseline-root", type=Path, required=True) -p.add_argument("--candidate-root", type=Path, required=True) -p.add_argument("--model", type=Path, required=True) -p.add_argument("--reference", type=Path, required=True) -p.add_argument("--cache", type=Path, required=True) -p.add_argument("--variants", nargs=2, default=["BASE", "ECS"]) -p.add_argument("--pairs", type=int, default=3) -p.add_argument("--blocks", type=int, default=12) -p.add_argument("--samples", type=int, default=50) -p.add_argument("--cpu", type=int, default=8) -p.add_argument("--gpu", default="0") -p.add_argument("--monitor-cpu", type=int, default=16) -p.add_argument("--profile", action="store_true") -a = p.parse_args() -out = a.out.resolve() -out.mkdir(parents=True, exist_ok=False) -a.cache = a.cache.resolve() -a.cache.mkdir(parents=True, exist_ok=True) -os.sched_setaffinity(0, {a.monitor_cpu}) -nv.nvmlInit() -h = nv.nvmlDeviceGetHandleByIndex(int(a.gpu)) -assert not nv.nvmlDeviceGetComputeRunningProcesses(h), f"GPU{a.gpu} not idle" -workers = {} -stop = threading.Event() -monitor, errors, records, ready = [], [], [], [] - - -def watch(): - while not stop.wait(0.05): - try: - pids = {v.pid for v in nv.nvmlDeviceGetComputeRunningProcesses(h)} - foreign = pids - {w.pid for w in workers.values()} - if foreign: - errors.append(f"foreign compute pids: {sorted(foreign)}") - for w in list(workers.values()): - if w.poll() is None: - w.terminate() - return - monitor.append( - { - "t_ns": time.monotonic_ns(), - "pids": sorted(pids), - "sm_mhz": nv.nvmlDeviceGetClockInfo(h, nv.NVML_CLOCK_SM), - "mem_mhz": nv.nvmlDeviceGetClockInfo(h, nv.NVML_CLOCK_MEM), - "temperature": nv.nvmlDeviceGetTemperature( - h, nv.NVML_TEMPERATURE_GPU - ), - "power_mw": nv.nvmlDeviceGetPowerUsage(h), - "utilization": nv.nvmlDeviceGetUtilizationRates(h).gpu, - "pstate": nv.nvmlDeviceGetPerformanceState(h), - } - ) - except Exception as exc: - errors.append(repr(exc)) - return - - -def write(name, value): - (out / name).write_text(json.dumps(value, indent=2)) - - -def fingerprint(include_binaries=False): - patterns = ["*.best_config"] + (["*.cubin", "*.ptx"] if include_binaries else []) - return { - str(path.relative_to(a.cache)): hashlib.sha256(path.read_bytes()).hexdigest() - for pattern in patterns - for path in sorted(a.cache.rglob(pattern)) - } - - -def message(worker, log): - while True: - line = worker.stdout.readline() - if not line: - raise RuntimeError(f"worker exited: {worker.poll()} {errors}") - log.write(line) - log.flush() - if line.startswith("@CONTROL@"): - return json.loads(line[len("@CONTROL@") :]) - - -thread = threading.Thread(target=watch, daemon=True) -thread.start() -logs = [] -try: - for pair in range(a.pairs): - pair_ready = [] - init_order = a.variants if pair % 2 == 0 else list(reversed(a.variants)) - for variant in init_order: - log = (out / f"pair{pair}_{variant}.log").open("x") - logs.append(log) - worker = subprocess.Popen( - [ - sys.executable, - str(HERE / "_so2_edge_cohort_controlled_worker.py"), - "--baseline-root", - str(a.baseline_root.resolve()), - "--candidate-root", - str(a.candidate_root.resolve()), - "--model", - str(a.model.resolve()), - "--reference", - str(a.reference.resolve()), - "--variant", - variant, - "--out", - str(out / f"pair{pair}_{variant}"), - "--cache", - str(a.cache), - "--cpu", - str(a.cpu), - "--gpu", - a.gpu, - ], - stdin=subprocess.PIPE, - stdout=subprocess.PIPE, - stderr=log, - text=True, - bufsize=1, - ) - workers[variant] = worker - worker.stdin.write( - json.dumps({"pids": [w.pid for w in workers.values()]}) + "\n" - ) - worker.stdin.flush() - r = message(worker, log) - assert r["status"] == "ready" - r["pair"] = pair - ready.append(r) - pair_ready.append(r) - write("ready.json", ready) - print("READY", pair, variant, r["entry_wall_ms"]["median"], flush=True) - frozen = fingerprint() - binary_before = fingerprint(True) - write(f"cache_pair{pair}_before.json", binary_before) - for block in range(a.blocks): - left, right = a.variants if block % 2 == 0 else list(reversed(a.variants)) - for position, variant in enumerate((left, right, right, left)): - worker = workers[variant] - command = { - "action": "measure", - "pair": pair, - "block": block, - "position": position, - "warmup": 8, - "samples": a.samples, - "cpu": a.cpu, - } - assert fingerprint() == frozen, "autotune cache changed before timing" - worker.stdin.write(json.dumps(command) + "\n") - worker.stdin.flush() - log = logs[-2 + init_order.index(variant)] - r = message(worker, log) - assert fingerprint() == frozen, "autotune cache changed during timing" - r["pair"] = pair - records.append(r) - write("rounds.json", records) - print( - "ROUND", - pair, - block, - position, - variant, - r["wall_ms"]["median"], - flush=True, - ) - if a.profile: - for variant in init_order: - worker = workers[variant] - worker.stdin.write('{"action":"profile"}\n') - worker.stdin.flush() - profiled = message(worker, logs[-2 + init_order.index(variant)]) - assert profiled["status"] == "profiled" - write(f"profile_pair{pair}_{variant}.json", profiled) - after = fingerprint(True) - write(f"cache_pair{pair}_after.json", after) - assert after == binary_before, ( - "compiled binaries changed during measured blocks" - ) - for variant in init_order: - worker = workers[variant] - worker.stdin.write('{"action":"stop"}\n') - worker.stdin.flush() - r = message(worker, logs[-2 + init_order.index(variant)]) - assert r["status"] == "completed" and r["precision_pass"] - worker.wait(timeout=30) - assert worker.returncode == 0 - workers.clear() -finally: - for worker in workers.values(): - if worker.poll() is None: - worker.terminate() - worker.wait(timeout=30) - stop.set() - thread.join(timeout=5) - write("monitor.json", monitor) - write( - "controller.json", - { - "args": {k: str(v) for k, v in vars(a).items()}, - "errors": errors, - "status": "completed" - if not errors and len(records) == a.pairs * a.blocks * 4 - else "failed", - }, - ) - for log in logs: - log.close() - nv.nvmlShutdown() diff --git a/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_same_context.py b/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_same_context.py deleted file mode 100644 index 0e623a7b10..0000000000 --- a/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_same_context.py +++ /dev/null @@ -1,326 +0,0 @@ -# SPDX-License-Identifier: LGPL-3.0-or-later -# ruff: noqa: T201 -- manual benchmark CLI output -"""Normal ASE API A/B in one CUDA context, preserving the original baseline. - -Experimental setup copies exactly the three reviewed kernel definitions and -registered backward into memory *after* compiling the baseline. No production -file, kernel arithmetic, or checkpoint is edited. Each model keeps its own -compiled cache. Inference bypasses Dynamo; stale module-level cache reuse is -explicitly prohibited and compiled graph provenance is checked. -""" - -import argparse -import ast -import hashlib -import importlib.util -import os -from pathlib import Path -import runpy -import sys -import threading -import time - -HERE = Path(__file__).resolve().parent -import _so2_edge_cohort_benchmark_common as common - -p = argparse.ArgumentParser() -p.add_argument("--baseline-root", type=Path, required=True) -p.add_argument("--candidate-root", type=Path, required=True) -p.add_argument("--model", type=Path, required=True) -p.add_argument("--reference", type=Path, required=True) -p.add_argument("--cache", type=Path, required=True) -p.add_argument("--out", type=Path, required=True) -p.add_argument("--first", choices=("BASE", "ECS"), default="BASE") -p.add_argument("--gpu", default="0") -p.add_argument("--cpu", type=int, default=8) -p.add_argument("--monitor-cpu", type=int, default=16) -p.add_argument("--blocks", type=int, default=24) -a = p.parse_args() -os.sched_setaffinity(0, {a.cpu}) -PUBLIC = a.candidate_root.resolve() -common.ROOT = a.baseline_root.resolve() -original_setup = common.setup -state = {} - - -def install_candidate(): - from deepmd.pt_expt.kernels.triton.sezm import so2_value_path as sv - - if not state: - state.update( - sv=sv, - backward=sv._mixing_stack_backward, - kernels={ - name: getattr(sv, name) - for name in ( - "_stack_gemm_bwd_kernel", - "_stack_point_bwd_kernel", - "_stack_recompute_kernel", - ) - }, - ) - source = PUBLIC / "deepmd/pt_expt/kernels/triton/sezm/so2_value_path.py" - tree = ast.parse(source.read_text()) - names = set(state["kernels"]) | {"_mixing_stack_backward"} - definitions = [ - n - for n in ast.walk(tree) - if isinstance(n, ast.FunctionDef) and n.name in names - ] - assert len(definitions) == 4 - scope = dict(vars(sv), _EDGE_COHORT_INFER=True) - exec( - compile(ast.Module(body=definitions, type_ignores=[]), str(source), "exec"), - scope, - ) - state["candidate_definitions"] = {name: scope[name] for name in names} - name = "deepmd.pt_expt.kernels.triton.sezm.so2_edge_cohort" - path = PUBLIC / "deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py" - spec = importlib.util.spec_from_file_location(name, path) - module = importlib.util.module_from_spec(spec) - sys.modules[name] = module - spec.loader.exec_module(module) - for name in state["kernels"]: - setattr(sv, name, state["candidate_definitions"][name]) - sv._mixing_stack_op.register_autograd( - state["candidate_definitions"]["_mixing_stack_backward"], - setup_context=sv._mixing_stack_setup_context, - ) - - -def restore_baseline(): - sv = state["sv"] - for name, kernel in state["kernels"].items(): - setattr(sv, name, kernel) - sv._mixing_stack_op.register_autograd( - state["backward"], setup_context=sv._mixing_stack_setup_context - ) - - -def setup(*args, **kwargs): - original_setup(*args, **kwargs) - os.environ.update( - TORCHINDUCTOR_CACHE_DIR=str(a.cache.resolve() / "inductor"), - TRITON_CACHE_DIR=str(a.cache.resolve() / "triton"), - ) - if a.first == "ECS": - install_candidate() - - -common.setup = setup - - -def callback(ns): - import numpy as np - import torch - import pynvml as nv - from deepmd.calculator import DP - from deepmd.pt.model.model import sezm_model - from torch._inductor.codecache import PyCodeCache - - first = ns["calc"] - model = ns["inner"] - assert model.compiled_core_compute_cache - first_cache = dict(model.compiled_core_compute_cache) - old_modules = { - str(m.__file__) - for m in PyCodeCache.modules - if "def call(" in Path(m.__file__).read_text() - } - assert len(old_modules) == 1 - if a.first == "BASE": - install_candidate() - else: - restore_baseline() - sezm_model._SEZM_COMPILE_CACHE.clear() - sezm_model._SEZM_TASK_BUF_ORDER.clear() - second = DP(model=str(a.model)) - assert not second.dp.get_model().compiled_core_compute_cache - calculators = {a.first: first, ("ECS" if a.first == "BASE" else "BASE"): second} - base, frames = ns["base"], ns["frames"] - - def evaluate(calc, pos): - calc.reset() - atoms = base.copy() - atoms.positions = pos - atoms.calc = calc - forces = atoms.get_forces().copy() - return { - "energy": np.asarray(atoms.get_potential_energy()), - "forces": forces, - "virial": np.asarray(calc.results["virial"]).copy(), - "stress": atoms.get_stress().copy(), - } - - started = time.perf_counter() - for pos in frames[:8]: - evaluate(second, pos) - torch.cuda.synchronize() - assert model.compiled_core_compute_cache == first_cache, "first graph cache changed" - modules = { - str(m.__file__) - for m in PyCodeCache.modules - if "def call(" in Path(m.__file__).read_text() - } - new_modules = modules - old_modules - assert len(new_modules) == 1, ( - "second mode silently reused a graph or compiled multiple entries" - ) - wrappers = { - a.first: next(iter(old_modules)), - ("ECS" if a.first == "BASE" else "BASE"): next(iter(new_modules)), - } - assert "so2_single_cohort" in Path(wrappers["ECS"]).read_text() - assert "so2_single_cohort" not in Path(wrappers["BASE"]).read_text() - with np.load(a.reference) as ref: - accuracy = {} - outputs = {} - for arm, calc in calculators.items(): - values = { - f"{i}_{k}": v - for i, pos in enumerate(frames[:3]) - for k, v in evaluate(calc, pos).items() - } - outputs[arm] = values - accuracy[arm] = ns["compare"](values, ref) - assert all(v["passed"] and v["finite"] for v in accuracy[arm].values()) - np.savez_compressed(a.out / f"{arm}_outputs.npz", **values) - accuracy["paired"] = ns["compare"](outputs["ECS"], outputs["BASE"]) - assert all(v["passed"] for v in accuracy["paired"].values()) - cache = a.cache.resolve() - - def artifacts(): - return { - str(p.relative_to(cache)): hashlib.sha256(p.read_bytes()).hexdigest() - for pattern in ("*.best_config", "*.cubin", "*.ptx") - for p in cache.rglob(pattern) - } - - frozen = artifacts() - common.write( - a.out / "same_context_manifest.json", - { - "first": a.first, - "second_compile_s": time.perf_counter() - started, - "wrappers": { - k: {"path": v, "sha256": common.sha(Path(v))} - for k, v in wrappers.items() - }, - "accuracy": accuracy, - "original_entry_wall_ms": ns["wall"], - "seed": os.environ.get("PYTHONHASHSEED"), - "method": "two normal ASE calculators; distinct AOT compiled caches; same process/context; exact candidate kernel/backward definitions transplanted only for tracing", - }, - ) - nv.nvmlInit() - h = nv.nvmlDeviceGetHandleByIndex(int(a.gpu)) - stop = threading.Event() - monitor = [] - monitor_errors = [] - - def watch(): - os.sched_setaffinity(0, {a.monitor_cpu}) - while not stop.wait(0.05): - pids = {p.pid for p in nv.nvmlDeviceGetComputeRunningProcesses(h)} - if pids != {os.getpid()}: - monitor_errors.append(f"foreign CUDA pid {pids}") - return - monitor.append( - { - "t_ns": time.monotonic_ns(), - "sm_mhz": nv.nvmlDeviceGetClockInfo(h, nv.NVML_CLOCK_SM), - "mem_mhz": nv.nvmlDeviceGetClockInfo(h, nv.NVML_CLOCK_MEM), - "temperature": nv.nvmlDeviceGetTemperature( - h, nv.NVML_TEMPERATURE_GPU - ), - "clock_reasons": nv.nvmlDeviceGetCurrentClocksThrottleReasons(h), - } - ) - - thread = threading.Thread(target=watch, daemon=True) - thread.start() - records = [] - try: - for block in range(a.blocks): - left, right = ("BASE", "ECS") if block % 2 == 0 else ("ECS", "BASE") - for position, arm in enumerate((left, right, right, left)): - calc = calculators[arm] - for pos in frames[:8]: - evaluate(calc, pos) - torch.cuda.synchronize() - wall = [] - events = [] - start_ns = time.monotonic_ns() - for i in range(50): - torch.cuda.synchronize() - s = torch.cuda.Event(enable_timing=True) - e = torch.cuda.Event(enable_timing=True) - start = time.perf_counter() - s.record() - evaluate(calc, frames[8 + i % 30]) - e.record() - torch.cuda.synchronize() - wall.append(1000 * (time.perf_counter() - start)) - events.append(s.elapsed_time(e)) - records.append( - { - "pair": 0, - "variant": arm, - "command": {"block": block, "position": position}, - "wall_ms": common.stats(wall), - "event_ms": common.stats(events), - "start_monotonic_ns": start_ns, - "end_monotonic_ns": time.monotonic_ns(), - } - ) - common.write(a.out / "same_context_rounds.json", records) - assert not monitor_errors, str(monitor_errors) - print( - "CONTEXT_API", - block, - position, - arm, - records[-1]["wall_ms"]["median"], - flush=True, - ) - finally: - stop.set() - thread.join(timeout=5) - nv.nvmlShutdown() - common.write(a.out / "same_context_monitor.json", monitor) - assert not monitor_errors, str(monitor_errors) - assert artifacts() == frozen - assert model.compiled_core_compute_cache == first_cache - common.write( - a.out / "same_context_status.json", - { - "status": "completed", - "accuracy_passed": True, - "cache_unchanged": True, - "first": a.first, - "blocks": a.blocks, - "samples_per_arm": a.blocks * 2 * 50, - }, - ) - restore_baseline() - - -sys.argv = [ - str(HERE / "_so2_edge_cohort_benchmark_impl.py"), - "--out", - str(a.out), - "--gpu", - a.gpu, - "--nrep", - "2", - "--model", - str(a.model), - "--reference", - str(a.reference), -] -ns = runpy.run_path( - str(HERE / "_so2_edge_cohort_benchmark_impl.py"), - init_globals={"_controlled_rounds": callback}, - run_name="__main__", -) -assert ns["result"]["precision_pass"] and ns["result"]["finite"] diff --git a/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_serial.py b/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_serial.py deleted file mode 100644 index 23dc31fc47..0000000000 --- a/source/tests/pt_expt/kernels/benchmark_so2_edge_cohort_serial.py +++ /dev/null @@ -1,191 +0,0 @@ -# SPDX-License-Identifier: LGPL-3.0-or-later -# ruff: noqa: T201 -- manual benchmark CLI output -"""One CUDA process at a time: remove resident-context initialization bias.""" - -import argparse -import hashlib -import json -import os -from pathlib import Path -import subprocess -import sys -import threading -import time - -import pynvml as nv - -HERE = Path(__file__).resolve().parent -p = argparse.ArgumentParser(description=__doc__) -p.add_argument("--out", type=Path, required=True) -p.add_argument("--cache", type=Path, required=True) -p.add_argument("--baseline-root", type=Path, required=True) -p.add_argument("--candidate-root", type=Path, required=True) -p.add_argument("--model", type=Path, required=True) -p.add_argument("--reference", type=Path, required=True) -p.add_argument("--gpu", default="0") -p.add_argument("--cpu", type=int, default=8) -p.add_argument("--monitor-cpu", type=int, default=16) -p.add_argument("--seeds", type=int, nargs="+", default=[0, 1, 2]) -p.add_argument("--rounds", type=int, default=8) -p.add_argument("--samples", type=int, default=50) -p.add_argument("--conditioning-samples", type=int, default=200) -a = p.parse_args() -assert a.samples >= 10 and a.rounds >= 1 -out = a.out.resolve() -out.mkdir(parents=True, exist_ok=False) -cache = a.cache.resolve() -os.sched_setaffinity(0, {a.monitor_cpu}) -nv.nvmlInit() -handle = nv.nvmlDeviceGetHandleByIndex(int(a.gpu)) -cases = [ - (arm, seed) - for i, seed in enumerate(a.seeds) - for arm in (("BASE", "ECS") if i % 2 == 0 else ("ECS", "BASE")) -] -worker = None -stop = threading.Event() -monitor, errors, ready, records = [], [], [], [] - - -def write(name, value): - (out / name).write_text(json.dumps(value, indent=2)) - - -def watch(): - while not stop.wait(0.05): - pids = {v.pid for v in nv.nvmlDeviceGetComputeRunningProcesses(handle)} - allowed = {worker.pid} if worker is not None else set() - if pids - allowed: - errors.append(f"foreign GPU0 pids: {pids - allowed}") - if worker is not None and worker.poll() is None: - worker.terminate() - return - monitor.append( - { - "t_ns": time.monotonic_ns(), - "pids": sorted(pids), - "sm_mhz": nv.nvmlDeviceGetClockInfo(handle, nv.NVML_CLOCK_SM), - "mem_mhz": nv.nvmlDeviceGetClockInfo(handle, nv.NVML_CLOCK_MEM), - "temperature": nv.nvmlDeviceGetTemperature( - handle, nv.NVML_TEMPERATURE_GPU - ), - "power_mw": nv.nvmlDeviceGetPowerUsage(handle), - "clock_reasons": nv.nvmlDeviceGetCurrentClocksThrottleReasons(handle), - } - ) - - -def fingerprint(): - return { - str(p.relative_to(cache)): hashlib.sha256(p.read_bytes()).hexdigest() - for pattern in ("*.best_config", "*.cubin", "*.ptx") - for p in cache.rglob(pattern) - } - - -def message(log): - while True: - line = worker.stdout.readline() - if not line: - raise RuntimeError(f"worker ended {worker.poll()}") - log.write(line) - log.flush() - if line.startswith("@CONTROL@"): - return json.loads(line[len("@CONTROL@") :]) - - -assert not nv.nvmlDeviceGetComputeRunningProcesses(handle) -thread = threading.Thread(target=watch, daemon=True) -thread.start() -try: - for run, (variant, seed) in enumerate(cases): - assert not nv.nvmlDeviceGetComputeRunningProcesses(handle) - env = dict(os.environ, PYTHONHASHSEED=str(seed)) - with (out / f"{run}_{variant}.log").open("x") as log: - worker = subprocess.Popen( - [ - sys.executable, - str(HERE / "_so2_edge_cohort_controlled_worker.py"), - "--baseline-root", - str(a.baseline_root.resolve()), - "--candidate-root", - str(a.candidate_root.resolve()), - "--model", - str(a.model.resolve()), - "--reference", - str(a.reference.resolve()), - "--variant", - variant, - "--out", - str(out / f"{run}_{variant}"), - "--cache", - str(cache), - "--gpu", - a.gpu, - "--cpu", - str(a.cpu), - ], - stdin=subprocess.PIPE, - stdout=subprocess.PIPE, - stderr=log, - text=True, - bufsize=1, - env=env, - ) - worker.stdin.write(json.dumps({"pids": [worker.pid]}) + "\n") - worker.stdin.flush() - r = message(log) - assert r["status"] == "ready" - r.update(run=run, seed=seed) - ready.append(r) - write("ready.json", ready) - print("READY", run, variant, seed, r["entry_wall_ms"]["median"], flush=True) - frozen = fingerprint() - write(f"cache_{run}_before.json", frozen) - for block in range(a.rounds + 1): - command = { - "action": "measure", - "pair": seed, - "block": block, - "position": run % 2, - "samples": a.conditioning_samples if block == 0 else a.samples, - "warmup": 8, - "cpu": a.cpu, - "phase": "conditioning" if block == 0 else "formal", - } - worker.stdin.write(json.dumps(command) + "\n") - worker.stdin.flush() - r = message(log) - r.update(run=run, seed=seed, pair=seed) - records.append(r) - write("rounds.json", records) - assert fingerprint() == frozen, "autotune/cache changed in timed runs" - print("ROUND", run, variant, block, r["wall_ms"]["median"], flush=True) - write(f"cache_{run}_after.json", fingerprint()) - worker.stdin.write('{"action":"stop"}\n') - worker.stdin.flush() - r = message(log) - assert r["status"] == "completed" and r["precision_pass"] - worker.wait(timeout=30) - assert worker.returncode == 0 - worker = None -finally: - if worker is not None: - if worker.poll() is None: - worker.terminate() - worker.wait(timeout=30) - stop.set() - thread.join(timeout=5) - write("monitor.json", monitor) - write( - "controller.json", - { - "errors": errors, - "status": "completed" - if len(records) == len(cases) * (a.rounds + 1) and not errors - else "failed", - "args": {k: str(v) for k, v in vars(a).items()}, - "protocol": "one CUDA process at a time; matched hash seeds; conditioning separated from formal rounds", - }, - ) - nv.nvmlShutdown() From 7b27c9b3dc80997fb7c1d19ef6879bcb58e07f4b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 26 Oct 2026 13:46:25 +0000 Subject: [PATCH 6/7] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .../pt_expt/kernels/triton/sezm/so2_edge_cohort.py | 12 +++++++++--- source/tests/pt_expt/kernels/test_so2_edge_cohort.py | 8 ++++++-- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py b/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py index 1bee615190..57cd95f342 100644 --- a/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py +++ b/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py @@ -8,12 +8,18 @@ prototype; standalone AOTInductor/C++ deployment is not validated. """ -from __future__ import annotations +from __future__ import ( + annotations, +) import torch import triton -from torch import Tensor -from torch.library import wrap_triton +from torch import ( + Tensor, +) +from torch.library import ( + wrap_triton, +) from . import so2_value_path as sv diff --git a/source/tests/pt_expt/kernels/test_so2_edge_cohort.py b/source/tests/pt_expt/kernels/test_so2_edge_cohort.py index 087ab83624..bc488a052d 100644 --- a/source/tests/pt_expt/kernels/test_so2_edge_cohort.py +++ b/source/tests/pt_expt/kernels/test_so2_edge_cohort.py @@ -1,9 +1,13 @@ # SPDX-License-Identifier: LGPL-3.0-or-later """Generated-input checks for the opt-in frozen Neo edge-cohort prototype.""" -from __future__ import annotations +from __future__ import ( + annotations, +) -from types import SimpleNamespace +from types import ( + SimpleNamespace, +) import pytest import torch From 98a65e46d0076319f2fcb49ded77e6a93ecab6be Mon Sep 17 00:00:00 2001 From: Macqueen Ma-hnu Date: Mon, 26 Oct 2026 22:33:17 +0800 Subject: [PATCH 7/7] fix(pt): preserve runtime SO2 edge cohorts through AOT tracing --- .../kernels/triton/sezm/so2_edge_cohort.py | 10 +++---- .../pt_expt/kernels/test_so2_edge_cohort.py | 30 +++++++++++++++++++ 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py b/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py index 57cd95f342..f811eee328 100644 --- a/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py +++ b/deepmd/pt_expt/kernels/triton/sezm/so2_edge_cohort.py @@ -377,10 +377,10 @@ def cohort_backward( if not supports_edge_cohort(grad_out, z_all, lmax, focus_dim, apply_alpha): raise ValueError("unsupported edge-cohort layout") grad_alpha = _cohort_alpha_backward(grad_out, x_local, alpha) - input_backward = ( - _single_cohort_input_backward - if grad_out.shape[0] <= SINGLE_COHORT_MAX_EDGES - else _cohort_input_backward + # make_fx/AOT may trace with a small example and retain that route for + # larger inputs. Keep edge partitioning inside the opaque runtime operator + # so its loop always uses the actual edge count, not the tracing example. + grad_u0 = _cohort_input_backward( + grad_out, z_all, alpha, w0t, w1t, gw, gwt, COHORT_EDGES ) - grad_u0 = input_backward(grad_out, z_all, alpha, w0t, w1t, gw, gwt, COHORT_EDGES) return grad_u0, grad_alpha diff --git a/source/tests/pt_expt/kernels/test_so2_edge_cohort.py b/source/tests/pt_expt/kernels/test_so2_edge_cohort.py index bc488a052d..d390c20ad1 100644 --- a/source/tests/pt_expt/kernels/test_so2_edge_cohort.py +++ b/source/tests/pt_expt/kernels/test_so2_edge_cohort.py @@ -79,6 +79,36 @@ def test_compiled_dynamic_cohort() -> None: torch.testing.assert_close(a, b, atol=0, rtol=0) +def test_make_fx_retains_runtime_cohorts(monkeypatch) -> None: + """A small tracing example must not disable batching on larger inputs.""" + from torch.fx.experimental.proxy_tensor import ( + make_fx, + ) + + graph = make_fx(ecs.cohort_backward, tracing_mode="symbolic")(*operands(37)) + assert any( + node.op == "call_function" + and node.target == torch.ops.sezm_triton.so2_cohort_input_bwd.default + for node in graph.graph.nodes + ) + calls = [] + original = ecs.cohort_input_backward_impl + + def observed(go, z, alpha, w0t, w1t, gw, gwt, cap): + calls.append((go.shape[0], cap)) + return original(go, z, alpha, w0t, w1t, gw, gwt, cap) + + monkeypatch.setattr(ecs, "cohort_input_backward_impl", observed) + compiled = torch.compile(graph, fullgraph=True, dynamic=True) + for edges in (37, 8193, 16385): + args = operands(edges) + actual = compiled(*args) + expected = sv._mixing_stack_bwd_impl(*args) + assert calls[-1] == (edges, ecs.COHORT_EDGES) + for got, ref in zip(actual, expected, strict=True): + torch.testing.assert_close(got, ref, atol=0, rtol=0) + + @pytest.mark.parametrize("dynamic", [False, True]) def test_compiled_native_backward(dynamic: bool) -> None: """Optional strides must preserve the default native compilation path."""
  • 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%0AbtTH>Mi>Q0{b^MEi<#JW{0flzp_wi! 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 z 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%0A0S>kBlGD-u&sxDNd0f5~>oWGlEC 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