#!/usr/bin/env python3 from pathlib import Path import hashlib,json,subprocess base=Path(__file__).resolve().parent repo=base.parents[1] with (base/'metadata.log').open('w') as out: for cmd in [['git','rev-parse','HEAD'],['git','status','--short'],['uname','-a'],['lscpu'],['hipcc','--version']]: out.write('COMMAND '+repr(cmd)+'\n');out.flush() subprocess.run(cmd,cwd=repo,stdout=out,stderr=subprocess.STDOUT,check=True) out.write('Benchmark OMP_NUM_THREADS=16; CPU replay reference serial; production mixed test OMP_NUM_THREADS=4.\n') out.write('One HIP device, device 0; selected gfx1201. GPU identity logged per replay.\n') out.write('Cache rebuilt each process, immutable weights, 64 phase intervals, radius 47, FWHM 2.7 beta 4.5 tail 1e-8.\n') out.write('No page-cache dropping; repeated warm filesystem inputs; no runtime profiler run.\n') paths=[repo/'Makefile']+list((repo/'src').glob('*'))+[repo/'tests'/name for name in ['capture_psf.c','replay_psf.hip','make_psf_fixture.c','test_psf_capture.py','test_hip_renderer.py']] paths += [repo/'build/Release'/name for name in ['replay_psf','capture_psf','make_psf_fixture','test_hip_psf','minkowski_sky','minkowski_sky_hip','schwarzschild_sky','schwarzschild_sky_hip']] paths += [repo/'output/lens/schwarzschild_galactic_center_R100_45deg_16_4_4k_.grlens'] manifest={str(p.relative_to(repo)):{'bytes':p.stat().st_size,'sha256':hashlib.sha256(p.read_bytes()).hexdigest()} for p in paths if p.is_file()} (base/'source_binary_manifest.json').write_text(json.dumps(manifest,indent=2)+'\n')