Blocked fine: fix INNER assertion, skip empty halo uploads, explicit fixture
- GPU test: after hop 2 some INNER_GHOST populations are NaN (pulled from OUTER poisoned on hop 1; 236 slots in pinned CPUREF); assert ACTIVE finite and OUTER NaN, keep the full dense-vs-blocked raw value/NaN-mask comparison. - A 1x1 non-periodic fine layout has zero halo pairs: skip the halo table uploads (CUDA rejects mem_alloc(0)); _fine_halo already skips launch. CPU guard test with driver doubles. - Drop the class-level fine_layout default; the followup fake backend now sets fine_layout = None explicitly. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
dc5850c198
commit
59921a0181
3 files changed
+35
-6
No files matched your search
@@ -72,8 +72,6 @@ class FixedPatchStepper:
|
||||
only, ACTIVE collide); halos are gathered before each fine hop. Public
|
||||
arrays keep the dense (9, ny, nx) fine shape; only the allocation differs.
|
||||
"""
|
||||
fine_layout = None # dense fine storage unless fine_block is given
|
||||
|
||||
def __init__(self, cfg, bounds, *, context, coarse_boundary="periodic", fine_objects=(),
|
||||
fine_block=None):
|
||||
if HALO != 4:
|
||||
@@ -169,8 +167,9 @@ class FixedPatchStepper:
|
||||
else:
|
||||
self._children = self._upload(tables[1])
|
||||
self._kind = self._upload(tables[2])
|
||||
self._halo_dst = self._upload(layout.halo_dst)
|
||||
self._halo_src = self._upload(layout.halo_src)
|
||||
if len(layout.halo_dst): # a 1x1 non-periodic layout has no pairs
|
||||
self._halo_dst = self._upload(layout.halo_dst)
|
||||
self._halo_src = self._upload(layout.halo_src)
|
||||
module = self._levels[1].module
|
||||
self._explode = module.get_function("BlockExplode")
|
||||
self._halo_copy = module.get_function("BlockHaloCopy")
|
||||
|
||||
Reference in new issue
Block a user