File tree Expand file tree Collapse file tree 1 file changed +17
-5
lines changed Expand file tree Collapse file tree 1 file changed +17
-5
lines changed Original file line number Diff line number Diff line change @@ -253,12 +253,24 @@ def run(self,
253
253
if scope is None :
254
254
scope = global_scope ()
255
255
256
- program_cache_key = str (feed .keys () + fetch_list )
257
- program_cache = self .program_caches .get (program_cache_key , None )
258
-
259
- if program_cache is None or not use_program_cache :
256
+ program_cache = None
257
+ program_cache_key = None
258
+ if use_program_cache :
259
+ # find program cache by cache_key
260
+ feed_var_names = feed .keys ()
261
+ fetch_var_names = [var .desc .name () for var in fetch_list ]
262
+ program_cache_key = str (feed_var_names + fetch_var_names )
263
+ program_cache = self .program_caches .get (program_cache_key , None )
264
+ if program_cache is not None :
265
+ # TODO: should make sure program and program_cache are exactly the same.
266
+ if program .desc != program_cache .desc :
267
+ program_cache = None
268
+
269
+ if program_cache is None :
260
270
program_cache = program .clone ()
261
- self .program_caches [program_cache_key ] = program_cache
271
+
272
+ if use_program_cache :
273
+ self .program_caches [program_cache_key ] = program_cache
262
274
263
275
global_block = program_cache .global_block ()
264
276
You can’t perform that action at this time.
0 commit comments