asp: memoize the list of all target_specs to speed-up setup phase (#20473)
* asp: memoize the list of all target_specs to speed-up setup phase * asp: memoize using a cache per solver object
This commit is contained in:
		 Massimiliano Culpo
					Massimiliano Culpo
				
			
				
					committed by
					
						 Tamara Dahlgren
						Tamara Dahlgren
					
				
			
			
				
	
			
			
			 Tamara Dahlgren
						Tamara Dahlgren
					
				
			
						parent
						
							18c5f10ae7
						
					
				
				
					commit
					a4066a52be
				
			| @@ -497,6 +497,9 @@ def __init__(self): | |||||||
|         # id for dummy variables |         # id for dummy variables | ||||||
|         self.card = 0 |         self.card = 0 | ||||||
| 
 | 
 | ||||||
|  |         # Caches to optimize the setup phase of the solver | ||||||
|  |         self.target_specs_cache = None | ||||||
|  | 
 | ||||||
|     def pkg_version_rules(self, pkg): |     def pkg_version_rules(self, pkg): | ||||||
|         """Output declared versions of a package. |         """Output declared versions of a package. | ||||||
| 
 | 
 | ||||||
| @@ -910,10 +913,14 @@ def preferred_variants(self, pkg_name): | |||||||
| 
 | 
 | ||||||
|     def preferred_targets(self, pkg_name): |     def preferred_targets(self, pkg_name): | ||||||
|         key_fn = spack.package_prefs.PackagePrefs(pkg_name, 'target') |         key_fn = spack.package_prefs.PackagePrefs(pkg_name, 'target') | ||||||
|         target_specs = [ | 
 | ||||||
|             spack.spec.Spec('target={0}'.format(target_name)) |         if not self.target_specs_cache: | ||||||
|             for target_name in archspec.cpu.TARGETS |             self.target_specs_cache = [ | ||||||
|         ] |                 spack.spec.Spec('target={0}'.format(target_name)) | ||||||
|  |                 for target_name in archspec.cpu.TARGETS | ||||||
|  |             ] | ||||||
|  | 
 | ||||||
|  |         target_specs = self.target_specs_cache | ||||||
|         preferred_targets = [x for x in target_specs if key_fn(x) < 0] |         preferred_targets = [x for x in target_specs if key_fn(x) < 0] | ||||||
|         if not preferred_targets: |         if not preferred_targets: | ||||||
|             return |             return | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user