@@ -569,10 +569,6 @@ def timestamp(self):
569569 def distance (self ):
570570 return self .source .distance (self .sink )
571571
572- @cached_property
573- def distance_logical (self ):
574- return self .source .distance (self .sink , logical = True )
575-
576572 @cached_property
577573 def _defined_findices (self ):
578574 return frozenset (flatten (i ._defines for i in self .findices ))
@@ -663,19 +659,6 @@ def cause(self):
663659 return i ._defines
664660 return frozenset ()
665661
666- # TODO: Refactor this
667- @cached_property
668- def cause_logical (self ):
669- """Return the findex causing the dependence."""
670- for i , j in zip (self .findices , self .distance_logical , strict = False ):
671- try :
672- if j > 0 :
673- return i ._defines
674- except TypeError :
675- # Conservatively assume this is an offending dimension
676- return i ._defines
677- return frozenset ()
678-
679662 @cached_property
680663 def read (self ):
681664 if self .is_flow :
@@ -806,16 +789,19 @@ def is_storage_related(self, dims=None):
806789 return False
807790
808791
792+ class LogicalDependence (Dependence ):
793+
794+ @cached_property
795+ def distance (self ):
796+ return self .source .distance (self .sink , logical = True )
797+
798+
809799class DependenceGroup (set ):
810800
811801 @cached_property
812802 def cause (self ):
813803 return frozenset ().union (* [i .cause for i in self ])
814804
815- @cached_property
816- def cause_logical (self ):
817- return frozenset ().union (* [i .cause_logical for i in self ])
818-
819805 @cached_property
820806 def functions (self ):
821807 """Return the DiscreteFunctions inducing a dependence."""
@@ -1135,21 +1121,20 @@ def d_flow(self):
11351121 return DependenceGroup (self .d_flow_gen ())
11361122
11371123 @memoized_generator
1138- def d_anti_gen (self , logical = False ):
1124+ def d_anti_gen (self , depcls = Dependence ):
11391125 """Generate the anti (or "write-after-read") dependences."""
11401126 for k , v in self .writes .items ():
11411127 for w in v :
11421128 for r in self .reads_smart_gen (k ):
11431129 if any (not rule (r , w ) for rule in self .rules ):
11441130 continue
11451131
1146- dependence = Dependence (r , w )
1132+ dependence = depcls (r , w )
11471133
11481134 if dependence .is_imaginary :
11491135 continue
11501136
1151- distance = dependence .distance_logical \
1152- if logical else dependence .distance
1137+ distance = dependence .distance
11531138
11541139 try :
11551140 is_anti = distance > 0 or (r .lex_lt (w ) and distance == 0 )
@@ -1172,7 +1157,7 @@ def d_anti_logical(self):
11721157 Anti (or "write-after-read") dependences using logical rather than true
11731158 distances.
11741159 """
1175- return DependenceGroup (self .d_anti_gen (logical = True ))
1160+ return DependenceGroup (self .d_anti_gen (depcls = LogicalDependence ))
11761161
11771162 @memoized_generator
11781163 def d_output_gen (self ):
0 commit comments