Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
E
easybuild-repository-public-release
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
DEEP-SEA
easybuild-repository-public-release
Commits
b90c57be
Commit
b90c57be
authored
2 years ago
by
Ruth Partzsch
Browse files
Options
Downloads
Patches
Plain Diff
add easyblock
parent
924625ef
Branches
Branches containing commit
Tags
Tags containing commit
No related merge requests found
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
Custom_EasyBlocks/hypre.py
+116
-0
116 additions, 0 deletions
Custom_EasyBlocks/hypre.py
with
116 additions
and
0 deletions
Custom_EasyBlocks/hypre.py
0 → 100644
+
116
−
0
View file @
b90c57be
##
# Copyright 2009-2022 Ghent University
#
# This file is part of EasyBuild,
# originally created by the HPC team of Ghent University (http://ugent.be/hpc/en),
# with support of Ghent University (http://ugent.be/hpc),
# the Flemish Supercomputer Centre (VSC) (https://www.vscentrum.be),
# Flemish Research Foundation (FWO) (http://www.fwo.be/en)
# and the Department of Economy, Science and Innovation (EWI) (http://www.ewi-vlaanderen.be/en).
#
# https://github.com/easybuilders/easybuild
#
# EasyBuild is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation v2.
#
# EasyBuild is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with EasyBuild. If not, see <http://www.gnu.org/licenses/>.
##
"""
EasyBuild support for Hypre, implemented as an easyblock
@author: Kenneth Hoste (Ghent University)
@author: Mikael OEhman (Chalmers University of Technology)
@author: Alex Domingo (Vrije Universiteit Brussel)
@author: Simon Branford (University of Birmingham)
"""
import
os
from
easybuild.easyblocks.generic.configuremake
import
ConfigureMake
from
easybuild.tools.build_log
import
EasyBuildError
from
easybuild.tools.config
import
build_option
from
easybuild.tools.modules
import
get_software_root
from
easybuild.tools.systemtools
import
get_shared_lib_ext
from
easybuild.framework.easyconfig
import
CUSTOM
from
easybuild.framework.easyblock
import
EasyBlock
class
EB_Hypre
(
ConfigureMake
):
"""
Support for building Hypre.
"""
@staticmethod
def
extra_options
():
"""
Add extra easyconfig parameters custom to CHARMM.
"""
extra_vars
=
{
'
disable_cuda
'
:
[
False
,
"
Force disabling CUDA
"
,
CUSTOM
]
}
return
EasyBlock
.
extra_options
(
extra_vars
)
def
__init__
(
self
,
*
args
,
**
kwargs
):
"""
Easyblock constructor.
"""
super
(
EB_Hypre
,
self
).
__init__
(
*
args
,
**
kwargs
)
self
.
config_shared
=
False
self
.
config_static
=
False
def
configure_step
(
self
):
"""
Configure Hypre build after setting extra configure options.
"""
if
'
--enable-shared
'
in
self
.
cfg
[
'
configopts
'
]:
self
.
config_shared
=
True
ext_libs
=
'
LIB%s
'
else
:
self
.
config_static
=
True
ext_libs
=
'
%s_STATIC_LIBS
'
# Use BLAS/LAPACK from EB
for
dep
in
[
"
BLAS
"
,
"
LAPACK
"
]:
blas_libs
=
'
'
.
join
(
os
.
getenv
(
ext_libs
%
dep
).
split
(
'
,
'
))
blas_libs
=
blas_libs
.
replace
(
'
-l
'
,
''
)
# Remove any '-l' as those are prepended for shared builds
self
.
cfg
.
update
(
'
configopts
'
,
'
--with-%s-libs=
"
%s
"'
%
(
dep
.
lower
(),
blas_libs
))
self
.
cfg
.
update
(
'
configopts
'
,
'
--with-%s-lib-dirs=
"
%s
"'
%
(
dep
.
lower
(),
os
.
getenv
(
'
%s_LIB_DIR
'
%
dep
)))
# Use MPI implementation from EB
self
.
cfg
.
update
(
'
configopts
'
,
'
--with-MPI-include=%s
'
%
os
.
getenv
(
'
MPI_INC_DIR
'
))
if
(
get_software_root
(
'
CUDA
'
)
and
not
(
self
.
cfg
[
'
disable_cuda
'
])):
self
.
cfg
.
update
(
'
configopts
'
,
'
--with-cuda
'
)
cuda_cc
=
build_option
(
'
cuda_compute_capabilities
'
)
or
self
.
cfg
[
'
cuda_compute_capabilities
'
]
if
not
cuda_cc
:
raise
EasyBuildError
(
'
List of CUDA compute capabilities must be specified, either via
'
'
cuda_compute_capabilities easyconfig parameter or via
'
'
--cuda-compute-capabilities
'
)
cuda_cc_string
=
'
'
.
join
([
x
.
replace
(
'
.
'
,
''
)
for
x
in
cuda_cc
])
self
.
cfg
.
update
(
'
configopts
'
,
'
--with-gpu-arch=
"
%s
"'
%
cuda_cc_string
)
else
:
self
.
cfg
.
update
(
'
configopts
'
,
'
--with-cuda=NO
'
)
super
(
EB_Hypre
,
self
).
configure_step
()
def
sanity_check_step
(
self
):
"""
Custom sanity check for Hypre.
"""
# Add static and shared libs depending on configopts
hypre_libs
=
list
()
if
self
.
config_shared
:
shlib_ext
=
get_shared_lib_ext
()
hypre_libs
.
append
(
os
.
path
.
join
(
'
lib
'
,
'
libHYPRE.%s
'
%
shlib_ext
))
if
self
.
config_static
:
hypre_libs
.
append
(
os
.
path
.
join
(
'
lib
'
,
'
libHYPRE.a
'
))
custom_paths
=
{
'
files
'
:
hypre_libs
,
'
dirs
'
:
[
'
include
'
]
}
super
(
EB_Hypre
,
self
).
sanity_check_step
(
custom_paths
=
custom_paths
)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment