ADD: variant to hyquas package
This commit is contained in:
38
env/merlin/HyQuas/packages/hyquas/package.py
vendored
38
env/merlin/HyQuas/packages/hyquas/package.py
vendored
@ -34,29 +34,59 @@ class Hyquas(CMakePackage, CudaPackage):
|
|||||||
version('main', submodules=True)
|
version('main', submodules=True)
|
||||||
|
|
||||||
depends_on("cmake", type=('build'))
|
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:
|
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))
|
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("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")
|
conflicts("~cuda", msg="HyQuas requires CUDA")
|
||||||
|
|
||||||
build_directory = 'build'
|
|
||||||
|
|
||||||
def setup_build_environment(self, env):
|
def setup_build_environment(self, env):
|
||||||
cuda_arch = self.spec.variants['cuda_arch'].value[0]
|
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('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('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("NCCL_ROOT", self.spec['nccl'].prefix)
|
||||||
|
env.set("CUDA_HOME", self.spec['cuda'].prefix)
|
||||||
|
|
||||||
@run_before('cmake')
|
@run_before('cmake')
|
||||||
def build_cutt(self):
|
def build_cutt(self):
|
||||||
with working_dir('./third-party/cutt'):
|
with working_dir('./third-party/cutt'):
|
||||||
make()
|
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):
|
def install(self, spec, prefix):
|
||||||
mkdir(prefix.bin)
|
mkdir(prefix.bin)
|
||||||
with working_dir(self.build_directory):
|
with working_dir(self.build_directory):
|
||||||
|
10
env/merlin/HyQuas/spack.yaml
vendored
10
env/merlin/HyQuas/spack.yaml
vendored
@ -1,10 +1,6 @@
|
|||||||
spack:
|
spack:
|
||||||
concretizer:
|
concretizer:
|
||||||
unify: true
|
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:
|
include:
|
||||||
- sysconfigs/config.yaml
|
- sysconfigs/config.yaml
|
||||||
- sysconfigs/compilers.yaml
|
- sysconfigs/compilers.yaml
|
||||||
@ -12,10 +8,8 @@ spack:
|
|||||||
repos:
|
repos:
|
||||||
- .
|
- .
|
||||||
specs:
|
specs:
|
||||||
- hyquas@main%nvhpc+cuda cuda_arch=70 ^nccl%gcc ^openmpi@4.1.4%nvhpc+cuda fabrics=ucx,knem,ofi,cma,hcoll
|
- hyquas@main%gcc+cuda cuda_arch=61 ~mpi+micro_bench+eval_pp backend=mix ^openmpi
|
||||||
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
|
|
||||||
develop:
|
develop:
|
||||||
hyquas:
|
hyquas:
|
||||||
path: /data/user/germann_e/HyQuas
|
path: /data/user/germann_e/HyQuas
|
||||||
spec: hyquas@main%nvhpc+cuda cuda_arch=70
|
spec: hyquas@main%gcc
|
||||||
|
Reference in New Issue
Block a user