charmpp: add archs including Cray shasta with ARM (#43191)
Co-authored-by: RMeli <RMeli@users.noreply.github.com>
This commit is contained in:
		| @@ -0,0 +1,13 @@ | |||||||
|  | diff --git a/src/arch/ofi-crayshasta/conv-mach.h b/src/arch/ofi-crayshasta/conv-mach.h | ||||||
|  | index 61d295df3..9e15fd2a9 100644 | ||||||
|  | --- a/src/arch/ofi-crayshasta/conv-mach.h | ||||||
|  | +++ b/src/arch/ofi-crayshasta/conv-mach.h | ||||||
|  | @@ -74,7 +74,7 @@ | ||||||
|  |  #define CMK_LBDB_ON					   1 | ||||||
|  |   | ||||||
|  |  #define CMK_64BIT                      1 | ||||||
|  | -#define CMK_AMD64                      1 | ||||||
|  | +#define CMK_ARM                        1 | ||||||
|  |   | ||||||
|  |  /* Other possible definitions: | ||||||
|  |   | ||||||
| @@ -58,6 +58,9 @@ class Charmpp(Package): | |||||||
|     # Ignore compiler warnings while configuring |     # Ignore compiler warnings while configuring | ||||||
|     patch("strictpass.patch", when="@:6.8.2") |     patch("strictpass.patch", when="@:6.8.2") | ||||||
| 
 | 
 | ||||||
|  |     # Support Cray Shasta with ARM | ||||||
|  |     patch("ofi-crayshasta-arm.patch", when="backend=ofi pmi=cray-pmi target=aarch64:") | ||||||
|  | 
 | ||||||
|     # Build targets |     # Build targets | ||||||
|     # "target" is reserved, so we have to use something else. |     # "target" is reserved, so we have to use something else. | ||||||
|     variant( |     variant( | ||||||
| @@ -86,7 +89,7 @@ class Charmpp(Package): | |||||||
|     variant( |     variant( | ||||||
|         "pmi", |         "pmi", | ||||||
|         default="none", |         default="none", | ||||||
|         values=("none", "simplepmi", "slurmpmi", "slurmpmi2", "pmix"), |         values=("none", "simplepmi", "slurmpmi", "slurmpmi2", "pmix", "cray-pmi"), | ||||||
|         description="The ucx/ofi/gni backends need PMI to run!", |         description="The ucx/ofi/gni backends need PMI to run!", | ||||||
|     ) |     ) | ||||||
| 
 | 
 | ||||||
| @@ -112,6 +115,7 @@ class Charmpp(Package): | |||||||
|     depends_on("cuda", when="+cuda") |     depends_on("cuda", when="+cuda") | ||||||
| 
 | 
 | ||||||
|     depends_on("ucx", when="backend=ucx") |     depends_on("ucx", when="backend=ucx") | ||||||
|  |     depends_on("libfabric", when="backend=ofi") | ||||||
|     depends_on("slurm@:17-11-9-2", when="pmi=slurmpmi") |     depends_on("slurm@:17-11-9-2", when="pmi=slurmpmi") | ||||||
|     depends_on("slurm@17-11-9-2:", when="pmi=slurmpmi2") |     depends_on("slurm@17-11-9-2:", when="pmi=slurmpmi2") | ||||||
| 
 | 
 | ||||||
| @@ -123,6 +127,7 @@ class Charmpp(Package): | |||||||
|     depends_on("mpi", when="pmi=simplepmi") |     depends_on("mpi", when="pmi=simplepmi") | ||||||
|     depends_on("mpi", when="pmi=slurmpmi") |     depends_on("mpi", when="pmi=slurmpmi") | ||||||
|     depends_on("mpi", when="pmi=slurmpmi2") |     depends_on("mpi", when="pmi=slurmpmi2") | ||||||
|  |     depends_on("cray-mpich", when="pmi=cray-pmi") | ||||||
| 
 | 
 | ||||||
|     # Git versions of Charm++ require automake and autoconf |     # Git versions of Charm++ require automake and autoconf | ||||||
|     depends_on("automake", when="@develop") |     depends_on("automake", when="@develop") | ||||||
| @@ -180,7 +185,6 @@ def charmarch(self): | |||||||
|             ("linux", "x86_64", "netlrts"): "netlrts-linux-x86_64", |             ("linux", "x86_64", "netlrts"): "netlrts-linux-x86_64", | ||||||
|             ("linux", "x86_64", "verbs"): "verbs-linux-x86_64", |             ("linux", "x86_64", "verbs"): "verbs-linux-x86_64", | ||||||
|             ("linux", "x86_64", "ofi"): "ofi-linux-x86_64", |             ("linux", "x86_64", "ofi"): "ofi-linux-x86_64", | ||||||
|             ("linux", "x86_64", "ucx"): "ucx-linux-x86_64", |  | ||||||
|             ("linux", "ppc", "mpi"): "mpi-linux-ppc", |             ("linux", "ppc", "mpi"): "mpi-linux-ppc", | ||||||
|             ("linux", "ppc", "multicore"): "multicore-linux-ppc", |             ("linux", "ppc", "multicore"): "multicore-linux-ppc", | ||||||
|             ("linux", "ppc", "netlrts"): "netlrts-linux-ppc", |             ("linux", "ppc", "netlrts"): "netlrts-linux-ppc", | ||||||
| @@ -195,29 +199,53 @@ def charmarch(self): | |||||||
|             ("cnl", "x86_64", "mpi"): "mpi-crayxc", |             ("cnl", "x86_64", "mpi"): "mpi-crayxc", | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         # Some versions were renamed/removed in 6.11 |         if self.spec.satisfies("@6.10:"): | ||||||
|         if self.spec.version < Version("6.11.0"): |  | ||||||
|             versions.update({("linux", "i386", "mpi"): "mpi-linux"}) |  | ||||||
|             versions.update({("linux", "i386", "multicore"): "multicore-linux"}) |  | ||||||
|             versions.update({("linux", "i386", "netlrts"): "netlrts-linux"}) |  | ||||||
|             versions.update({("linux", "i386", "uth"): "uth-linux"}) |  | ||||||
|             versions.update( |             versions.update( | ||||||
|                 { |                 { | ||||||
|  |                     ("linux", "x86_64", "ucx"): "ucx-linux-x86_64", | ||||||
|  |                     ("linux", "aarch64", "ucx"): "ucx-linux-arm8", | ||||||
|  |                 } | ||||||
|  |             ) | ||||||
|  | 
 | ||||||
|  |         # Some versions were renamed/removed in 6.11 | ||||||
|  |         if self.spec.version < Version("6.11.0"): | ||||||
|  |             versions.update( | ||||||
|  |                 { | ||||||
|  |                     ("linux", "i386", "mpi"): "mpi-linux", | ||||||
|  |                     ("linux", "i386", "multicore"): "multicore-linux", | ||||||
|  |                     ("linux", "i386", "netlrts"): "netlrts-linux", | ||||||
|  |                     ("linux", "i386", "uth"): "uth-linux", | ||||||
|                     ("linux", "arm", "multicore"): "multicore-arm7", |                     ("linux", "arm", "multicore"): "multicore-arm7", | ||||||
|                     ("linux", "aarch64", "multicore"): "multicore-arm8", |                     ("linux", "aarch64", "multicore"): "multicore-arm8", | ||||||
|                 } |                 } | ||||||
|             ) |             ) | ||||||
|         else: |         else: | ||||||
|             versions.update({("linux", "i386", "mpi"): "mpi-linux-i386"}) |  | ||||||
|             versions.update({("linux", "i386", "multicore"): "multicore-linux-i386"}) |  | ||||||
|             versions.update({("linux", "i386", "netlrts"): "netlrts-linux-i386"}) |  | ||||||
|             versions.update( |             versions.update( | ||||||
|                 { |                 { | ||||||
|  |                     ("linux", "i386", "mpi"): "mpi-linux-i386", | ||||||
|  |                     ("linux", "i386", "multicore"): "multicore-linux-i386", | ||||||
|  |                     ("linux", "i386", "netlrts"): "netlrts-linux-i386", | ||||||
|                     ("linux", "arm", "multicore"): "multicore-linux-arm7", |                     ("linux", "arm", "multicore"): "multicore-linux-arm7", | ||||||
|                     ("linux", "aarch64", "multicore"): "multicore-linux-arm8", |                     ("linux", "aarch64", "multicore"): "multicore-linux-arm8", | ||||||
|                 } |                 } | ||||||
|             ) |             ) | ||||||
| 
 | 
 | ||||||
|  |         if self.spec.satisfies("@7:"): | ||||||
|  |             versions.update( | ||||||
|  |                 { | ||||||
|  |                     ("linux", "arm", "mpi"): "mpi-linux-arm7", | ||||||
|  |                     ("linux", "aarch64", "mpi"): "mpi-linux-arm8", | ||||||
|  |                 } | ||||||
|  |             ) | ||||||
|  | 
 | ||||||
|  |             if self.spec.satisfies("backend=ofi pmi=cray-pmi"): | ||||||
|  |                 versions.update( | ||||||
|  |                     { | ||||||
|  |                         ("linux", "x86_64", "ofi"): "ofi-crayshasta", | ||||||
|  |                         ("linux", "aarch64", "ofi"): "ofi-crayshasta", | ||||||
|  |                     } | ||||||
|  |                 ) | ||||||
|  | 
 | ||||||
|         if (plat, mach, comm) not in versions: |         if (plat, mach, comm) not in versions: | ||||||
|             raise InstallError( |             raise InstallError( | ||||||
|                 "The communication mechanism %s is not supported " |                 "The communication mechanism %s is not supported " | ||||||
| @@ -394,4 +422,4 @@ def setup_dependent_package(self, module, dependent_spec): | |||||||
|         self.spec.mpicxx = self.prefix.bin.ampicxx |         self.spec.mpicxx = self.prefix.bin.ampicxx | ||||||
|         self.spec.mpifc = self.prefix.bin.ampif90 |         self.spec.mpifc = self.prefix.bin.ampif90 | ||||||
|         self.spec.mpif77 = self.prefix.bin.ampif77 |         self.spec.mpif77 = self.prefix.bin.ampif77 | ||||||
|         self.spec.charmarch = self.charmarch |         self.spec.charmarch = self.charmarch + "-smp" if self.spec.satisfies("+smp") else "" | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Rocco Meli
					Rocco Meli