From a91f7060d696ac0c7fde8d6ec7e4b38fcf563ac7 Mon Sep 17 00:00:00 2001 From: Germann Elsa Sylvia Date: Fri, 7 Oct 2022 12:45:19 +0200 Subject: [PATCH] ADD: variant to hyquas package --- env/merlin/HyQuas/packages/hyquas/package.py | 38 +++++++++++++++++--- env/merlin/HyQuas/spack.yaml | 10 ++---- 2 files changed, 36 insertions(+), 12 deletions(-) diff --git a/env/merlin/HyQuas/packages/hyquas/package.py b/env/merlin/HyQuas/packages/hyquas/package.py index fa208d7..f7d83e7 100644 --- a/env/merlin/HyQuas/packages/hyquas/package.py +++ b/env/merlin/HyQuas/packages/hyquas/package.py @@ -34,29 +34,59 @@ class Hyquas(CMakePackage, CudaPackage): version('main', submodules=True) depends_on("cmake", type=('build')) - depends_on("mpi", type=('build','link', 'run')) + depends_on("mpi", type=('link', 'run')) for value in CudaPackage.cuda_arch_values: depends_on("nccl@2.9.6-1+cuda cuda_arch={0}".format(value), type=('link', 'run'), when='cuda_arch={0}'.format(value)) variant("cuda", default=True, description="Build with CUDA") + variant("backend", default='blas', description="Build with backend type:", values=('serial', 'group', 'group-serial', 'blas', 'mix', 'blas-advance')) + variant("schedule", default=True, description="Build with printing the schedule") + variant("summary", default=True, description="Show the running details") + variant("measure_stage", default=False, description="Measure time of each stage") + variant("micro_bench", default=False, description="Compile micro-benchmarks") + variant("eval_pp", default=False, description="Compile evaluator preprocess") + variant("disable_assert", default=True, description="Use assert in cuda runtime") + variant("use_double", default=True, description="Double or float precision") + variant("overlap", default=True, description="Enable overlap") + variant("mpi", default=False, description="Use mpi") + variant("overlap_mat", default=True, description="Overlap initMatirx") + variant("log_eval", default=False, description="Show logging of evaluator") + variant("mat_size", default='6', description="Mat size", values=('4','5','6','7')) conflicts("~cuda", msg="HyQuas requires CUDA") - build_directory = 'build' - def setup_build_environment(self, env): cuda_arch = self.spec.variants['cuda_arch'].value[0] env.set('CUDA_NVCC_FLAGS', '-Xcompiler -fopenmp -std=c++14 -O2 -g -arch=compute_' + cuda_arch + '-code=sm_' + cuda_arch + '--ptxas-options=-v -lineinfo -keep') env.set('GENCODE_FLAGS', '-gencode arch=compute_' + cuda_arch +',code=sm_' + cuda_arch) - # env.set("CUDA_HOME", self.spec['cuda'].prefix) env.set("NCCL_ROOT", self.spec['nccl'].prefix) + env.set("CUDA_HOME", self.spec['cuda'].prefix) @run_before('cmake') def build_cutt(self): with working_dir('./third-party/cutt'): make() + def cmake_args(self): + args = [ + self.define_from_variant('BACKEND', 'backend'), + self.define_from_variant('SHOW_SUMMARY', 'summary'), + self.define_from_variant('SHOW_SCHEDULE', 'schedule'), + self.define_from_variant('MICRO_BENCH', 'micro_bench'), + self.define_from_variant('USE_DOUBLE', 'use_double'), + self.define_from_variant('DISABLE_ASSERT', 'disable_assert'), + self.define_from_variant('ENABLE_OVERLAP', 'overlap'), + self.define_from_variant('MEASURE_STAGE', 'measure_stage'), + self.define_from_variant('EVALUATOR_PREPROCESS', 'eval_pp'), + self.define_from_variant('USE_MPI', 'mpi'), + self.define_from_variant('OVERLAP_MAT', 'overlap_mat'), + self.define_from_variant('LOG_EVALUATOR', 'log_eval'), + self.define_from_variant('MAT', 'mat_size') + ] + + return args + def install(self, spec, prefix): mkdir(prefix.bin) with working_dir(self.build_directory): diff --git a/env/merlin/HyQuas/spack.yaml b/env/merlin/HyQuas/spack.yaml index bed99a2..0c31795 100644 --- a/env/merlin/HyQuas/spack.yaml +++ b/env/merlin/HyQuas/spack.yaml @@ -1,10 +1,6 @@ spack: concretizer: unify: true - definitions: - - mpi_nvhpc: - - ^openmpi@4.1.4%nvhpc+cuda fabrics=ucx,knem,ofi,cma,hcoll schedulers=slurm +pmi - ^ucx%gcc@1.13.0 ^cuda@11.5.1 ^slurm@21-08-8-2 ^hwloc@2.7.1 ^knem@1.1.4 ^pmix@4.1.2 include: - sysconfigs/config.yaml - sysconfigs/compilers.yaml @@ -12,10 +8,8 @@ spack: repos: - . specs: - - hyquas@main%nvhpc+cuda cuda_arch=70 ^nccl%gcc ^openmpi@4.1.4%nvhpc+cuda fabrics=ucx,knem,ofi,cma,hcoll - schedulers=slurm +pmi ^ucx@1.13.0%gcc ^cuda@11.5.1 ^slurm@21-08-8-2 ^hwloc@2.7.1 - ^knem@1.1.4 ^pmix@4.1.2 + - hyquas@main%gcc+cuda cuda_arch=61 ~mpi+micro_bench+eval_pp backend=mix ^openmpi develop: hyquas: path: /data/user/germann_e/HyQuas - spec: hyquas@main%nvhpc+cuda cuda_arch=70 + spec: hyquas@main%gcc