compiler: remove the implicit last-build state (B2)
generate_config/compile_kernel/load_module also recorded the last build directory and PTX in ContextVars so that bare compile_kernel() and load_module() calls worked: a second, implicit interface beside the explicit build_dir/ptx_path one used by every owner. compile_kernel now requires build_dir= and load_module requires the PTX path. Build contract tests use explicit paths; they still check per-build header/output isolation, interleaved generation, path escapes, refusal of a removed snapshot, and that a failed compile keeps the previous PTX and leaves no partial output. No kernel, numerical or launch change. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
0d62c3cfb8
commit
dbcdb87081
@@ -126,8 +126,7 @@ class BuildContracts(unittest.TestCase):
|
||||
def work(nx, count):
|
||||
build = compiler.generate_config(LBMConfig(nx=nx), count, build_root=root)
|
||||
barrier.wait()
|
||||
# Compatibility form is context-local even without explicit path.
|
||||
output = compiler.compile_kernel()
|
||||
output = compiler.compile_kernel(build_dir=build)
|
||||
data = json.loads(Path(output).read_text())
|
||||
self.assertEqual(data, {"nx": nx, "objects": count})
|
||||
metadata = json.loads(Path(output + ".json").read_text())
|
||||
@@ -156,7 +155,7 @@ class BuildContracts(unittest.TestCase):
|
||||
compiler.cleanup_build_dir(a)
|
||||
compiler.cleanup_build_dir(b)
|
||||
with self.assertRaises(RuntimeError):
|
||||
compiler.compile_kernel()
|
||||
compiler.compile_kernel(build_dir=a) # removed snapshot is never compiled
|
||||
|
||||
def test_failed_compile_cannot_implicitly_load_previous_artifact(self):
|
||||
with tempfile.TemporaryDirectory() as root:
|
||||
@@ -169,8 +168,7 @@ class BuildContracts(unittest.TestCase):
|
||||
with self.assertRaises(subprocess.CalledProcessError):
|
||||
compiler.compile_kernel(build_dir=build)
|
||||
self.assertEqual(Path(previous).read_bytes(), old_bytes)
|
||||
with self.assertRaisesRegex(RuntimeError, "No compiled PTX"):
|
||||
compiler.load_module()
|
||||
self.assertEqual(sorted(Path(build).glob("kernel_v2-*.ptx")), []) # no partial output
|
||||
compiler.cleanup_build_dir(build)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user