@@ -154,6 +154,41 @@ def test_jitter(self):
154154 self .assertTrue (torch .equal (same , repeat ))
155155 self .assertFalse (torch .equal (same , other ))
156156
157+ def test_reference_grid_cache (self ):
158+ """Verify reference-grid cache hits and invalidation across every key dimension."""
159+ warp_layer = Warp ()
160+ ddf = torch .zeros (1 , 2 , 4 , 5 )
161+
162+ regular = warp_layer .get_reference_grid (ddf , jitter = False , seed = 0 )
163+ self .assertIs (regular , warp_layer .get_reference_grid (ddf , jitter = False , seed = 7 ))
164+
165+ float64 = warp_layer .get_reference_grid (ddf .to (torch .float64 ))
166+ self .assertIsNot (float64 , regular )
167+ self .assertEqual (float64 .dtype , torch .float64 )
168+
169+ jitter_7 = warp_layer .get_reference_grid (ddf .to (torch .float64 ), jitter = True , seed = 7 )
170+ self .assertIsNot (jitter_7 , float64 )
171+ self .assertIs (jitter_7 , warp_layer .get_reference_grid (ddf .to (torch .float64 ), jitter = True , seed = 7 ))
172+
173+ jitter_8 = warp_layer .get_reference_grid (ddf .to (torch .float64 ), jitter = True , seed = 8 )
174+ self .assertIsNot (jitter_8 , jitter_7 )
175+ self .assertTrue (torch .equal (jitter_8 , Warp ().get_reference_grid (ddf .to (torch .float64 ), jitter = True , seed = 8 )))
176+
177+ regular = warp_layer .get_reference_grid (ddf .to (torch .float64 ))
178+ self .assertIsNot (regular , jitter_8 )
179+
180+ different_batch = warp_layer .get_reference_grid (torch .zeros (2 , 2 , 4 , 5 , dtype = torch .float64 ))
181+ self .assertIsNot (different_batch , regular )
182+
183+ different_shape = warp_layer .get_reference_grid (torch .zeros (2 , 2 , 5 , 4 , dtype = torch .float64 ))
184+ self .assertIsNot (different_shape , different_batch )
185+
186+ meta_ddf = torch .zeros (2 , 2 , 5 , 4 , dtype = torch .float64 , device = "meta" )
187+ meta = warp_layer .get_reference_grid (meta_ddf )
188+ self .assertIsNot (meta , different_shape )
189+ self .assertIs (meta , warp_layer .get_reference_grid (meta_ddf ))
190+ self .assertEqual (meta .device .type , "meta" )
191+
157192 @mock .patch ("monai.networks.blocks.warp.USE_COMPILED" , False )
158193 def test_singleton_spatial_dim (self ):
159194 """
0 commit comments