hpctoolkit: variants to build for cray and blue gene (#10223)
Add variants 'cray' and 'bgq' to build for Cray and Blue Gene compute nodes. These systems need separate options to find the MPI compiler for hpcprof-mpi.
This commit is contained in:
		 Mark W. Krentel
					Mark W. Krentel
				
			
				
					committed by
					
						 Peter Scheibel
						Peter Scheibel
					
				
			
			
				
	
			
			
			 Peter Scheibel
						Peter Scheibel
					
				
			
						parent
						
							60a44d5155
						
					
				
				
					commit
					7e8b17b177
				
			| @@ -18,8 +18,29 @@ class Hpctoolkit(AutotoolsPackage): | |||||||
|     git      = "https://github.com/HPCToolkit/hpctoolkit.git" |     git      = "https://github.com/HPCToolkit/hpctoolkit.git" | ||||||
|  |  | ||||||
|     version('develop', branch='master') |     version('develop', branch='master') | ||||||
|  |     version('2018.12.28', commit='8dbf0d543171ffa9885344f32f23cc6f7f6e39bc') | ||||||
|     version('2018.11.05', commit='d0c43e39020e67095b1f1d8bb89b75f22b12aee9') |     version('2018.11.05', commit='d0c43e39020e67095b1f1d8bb89b75f22b12aee9') | ||||||
|  |  | ||||||
|  |     # Options for MPI and hpcprof-mpi.  We always support profiling | ||||||
|  |     # MPI applications.  These options add hpcprof-mpi, the MPI | ||||||
|  |     # version of hpcprof.  Cray and Blue Gene need separate options | ||||||
|  |     # because an MPI module in packages.yaml doesn't work on these | ||||||
|  |     # systems. | ||||||
|  |     variant('cray', default=False, | ||||||
|  |             description='Build for Cray compute nodes, including ' | ||||||
|  |             'hpcprof-mpi.') | ||||||
|  |  | ||||||
|  |     variant('bgq', default=False, | ||||||
|  |             description='Build for Blue Gene compute nodes, including ' | ||||||
|  |             'hpcprof-mpi.') | ||||||
|  |  | ||||||
|  |     variant('mpi', default=False, | ||||||
|  |             description='Build hpcprof-mpi, the MPI version of hpcprof.') | ||||||
|  |  | ||||||
|  |     variant('all-static', default=False, | ||||||
|  |             description='Needed when MPICXX builds static binaries ' | ||||||
|  |             'for the compute nodes.') | ||||||
|  |  | ||||||
|     # We can't build with both PAPI and perfmon for risk of segfault |     # We can't build with both PAPI and perfmon for risk of segfault | ||||||
|     # from mismatched header files (unless PAPI installs the perfmon |     # from mismatched header files (unless PAPI installs the perfmon | ||||||
|     # headers). |     # headers). | ||||||
| @@ -27,15 +48,6 @@ class Hpctoolkit(AutotoolsPackage): | |||||||
|             description='Use PAPI instead of perfmon for access to ' |             description='Use PAPI instead of perfmon for access to ' | ||||||
|             'the hardware performance counters.') |             'the hardware performance counters.') | ||||||
|  |  | ||||||
|     # We always support profiling MPI applications.  +mpi builds |  | ||||||
|     # hpcprof-mpi, the MPI version of hpcprof. |  | ||||||
|     variant('mpi', default=False, |  | ||||||
|             description='Build hpcprof-mpi, the MPI version of hpcprof.') |  | ||||||
|  |  | ||||||
|     variant('all-static', default=False, |  | ||||||
|             description='Needed when MPICXX builds static binaries ' |  | ||||||
|             'for the compute nodes.') |  | ||||||
|  |  | ||||||
|     boost_libs = '+atomic +graph +regex +serialization'  \ |     boost_libs = '+atomic +graph +regex +serialization'  \ | ||||||
|         '+shared +multithreaded' |         '+shared +multithreaded' | ||||||
|  |  | ||||||
| @@ -46,7 +58,8 @@ class Hpctoolkit(AutotoolsPackage): | |||||||
|     depends_on('elfutils~nls') |     depends_on('elfutils~nls') | ||||||
|     depends_on('intel-tbb') |     depends_on('intel-tbb') | ||||||
|     depends_on('libdwarf') |     depends_on('libdwarf') | ||||||
|     depends_on('libmonitor+hpctoolkit') |     depends_on('libmonitor+hpctoolkit', when='~bgq') | ||||||
|  |     depends_on('libmonitor+hpctoolkit+bgq', when='+bgq') | ||||||
|     depends_on('libunwind@2018.10.0:') |     depends_on('libunwind@2018.10.0:') | ||||||
|     depends_on('xerces-c transcoder=iconv') |     depends_on('xerces-c transcoder=iconv') | ||||||
|     depends_on('xz') |     depends_on('xz') | ||||||
| @@ -86,7 +99,19 @@ def configure_args(self): | |||||||
|         else: |         else: | ||||||
|             args.append('--with-perfmon=%s' % spec['libpfm4'].prefix) |             args.append('--with-perfmon=%s' % spec['libpfm4'].prefix) | ||||||
|  |  | ||||||
|         if '+mpi' in spec: |         # MPI options for hpcprof-mpi. | ||||||
|  |         if '+cray' in spec: | ||||||
|  |             args.extend([ | ||||||
|  |                 '--enable-mpi-search=cray', | ||||||
|  |                 '--enable-all-static', | ||||||
|  |             ]) | ||||||
|  |         elif '+bgq' in spec: | ||||||
|  |             args.extend([ | ||||||
|  |                 '--enable-mpi-search=bgq', | ||||||
|  |                 '--enable-all-static', | ||||||
|  |                 '--enable-bgq', | ||||||
|  |             ]) | ||||||
|  |         elif '+mpi' in spec: | ||||||
|             args.append('MPICXX=%s' % spec['mpi'].mpicxx) |             args.append('MPICXX=%s' % spec['mpi'].mpicxx) | ||||||
|  |  | ||||||
|         if '+all-static' in spec: |         if '+all-static' in spec: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user