From 407ea4c1297654279c986d1f4a9a273a0bf97178 Mon Sep 17 00:00:00 2001 From: Afif <37773945+affifboudaoud@users.noreply.github.com> Date: Thu, 30 Oct 2025 18:19:10 +0100 Subject: [PATCH 1/2] Remove debug code for serialization failure Remove file moves before raising RuntimeError for SDFG serialization failure. --- dace/codegen/codegen.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/dace/codegen/codegen.py b/dace/codegen/codegen.py index 3ccbb56dc6..327a321a2c 100644 --- a/dace/codegen/codegen.py +++ b/dace/codegen/codegen.py @@ -185,8 +185,6 @@ def generate_code(sdfg: SDFG, validate=True) -> List[CodeObject]: fromfile='test.sdfg (first save)', tofile='test2.sdfg (after roundtrip)') diff = ''.join(diff) - shutil.move(f'{tmp_dir}/test.sdfg', 'test.sdfg') - shutil.move(f'{tmp_dir}/test2.sdfg', 'test2.sdfg') raise RuntimeError(f'SDFG serialization failed - files do not match:\n{diff}') if config.Config.get_bool('optimizer', 'detect_control_flow'): From ba0bc1b2b9da44f6aee6233424c1cab9c96ef317 Mon Sep 17 00:00:00 2001 From: Affifboudaoud Date: Sat, 22 Nov 2025 16:38:31 +0100 Subject: [PATCH 2/2] Move failed SDFGs to _dacegraphs --- dace/codegen/codegen.py | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/dace/codegen/codegen.py b/dace/codegen/codegen.py index 327a321a2c..30e5c83e8d 100644 --- a/dace/codegen/codegen.py +++ b/dace/codegen/codegen.py @@ -170,22 +170,29 @@ def generate_code(sdfg: SDFG, validate=True) -> List[CodeObject]: from dace.sdfg import SDFG import difflib import filecmp + import os import shutil import tempfile with tempfile.TemporaryDirectory() as tmp_dir: sdfg.save(f'{tmp_dir}/test.sdfg', hash=False) sdfg2 = SDFG.from_file(f'{tmp_dir}/test.sdfg') sdfg2.save(f'{tmp_dir}/test2.sdfg', hash=False) - print('Testing SDFG serialization...') if not filecmp.cmp(f'{tmp_dir}/test.sdfg', f'{tmp_dir}/test2.sdfg'): with open(f'{tmp_dir}/test.sdfg', 'r') as f1: with open(f'{tmp_dir}/test2.sdfg', 'r') as f2: diff = difflib.unified_diff(f1.readlines(), f2.readlines(), - fromfile='test.sdfg (first save)', - tofile='test2.sdfg (after roundtrip)') + fromfile='pre.sdfg', + tofile='post.sdfg (after roundtrip)') diff = ''.join(diff) - raise RuntimeError(f'SDFG serialization failed - files do not match:\n{diff}') + os.makedirs('_dacegraphs', exist_ok=True) + pre_path = os.path.abspath('_dacegraphs/serialization_failure_pre.sdfg') + post_path = os.path.abspath('_dacegraphs/serialization_failure_post.sdfg') + shutil.move(f'{tmp_dir}/test.sdfg', pre_path) + shutil.move(f'{tmp_dir}/test2.sdfg', post_path) + raise RuntimeError(f'SDFG serialization roundtrip mismatch for SDFG: \'{sdfg.name}\'.\n' + f'Files saved for inspection:\n Pre: {pre_path}\n Post: {post_path}\n' + f'File diff:\n{diff}') if config.Config.get_bool('optimizer', 'detect_control_flow'): # NOTE: This should likely be done either earlier in the future, or changed entirely in modular codegen.