raxml: simplified recipe by removing SIMD variants (#12952)
Now the support for SSE3 or AVX is tested on the selected target
This commit is contained in:
parent
c065c25a4c
commit
467261803f
@ -2,16 +2,14 @@
|
|||||||
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
# Spack Project Developers. See the top-level COPYRIGHT file for details.
|
||||||
#
|
#
|
||||||
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
|
||||||
|
|
||||||
from spack import *
|
|
||||||
from spack.spec import ConflictsInSpecError
|
|
||||||
import glob
|
import glob
|
||||||
|
|
||||||
|
|
||||||
class Raxml(Package):
|
class Raxml(Package):
|
||||||
"""RAxML (Randomized Axelerated Maximum Likelihood) is a program for
|
"""RAxML (Randomized Axelerated Maximum Likelihood) is a program for
|
||||||
sequential and parallel Maximum Likelihood based inference of large
|
sequential and parallel Maximum Likelihood based inference of large
|
||||||
phylogenetic trees."""
|
phylogenetic trees.
|
||||||
|
"""
|
||||||
|
|
||||||
homepage = "https://sco.h-its.org/exelixis/web/software/raxml"
|
homepage = "https://sco.h-its.org/exelixis/web/software/raxml"
|
||||||
url = "https://github.com/stamatak/standard-RAxML/archive/v8.2.11.tar.gz"
|
url = "https://github.com/stamatak/standard-RAxML/archive/v8.2.11.tar.gz"
|
||||||
@ -20,8 +18,6 @@ class Raxml(Package):
|
|||||||
|
|
||||||
variant('mpi', default=True, description='Enable MPI parallel support')
|
variant('mpi', default=True, description='Enable MPI parallel support')
|
||||||
variant('pthreads', default=False, description='Enable pthreads version')
|
variant('pthreads', default=False, description='Enable pthreads version')
|
||||||
variant('sse', default=False, description='Enable SSE in order to substantially speed up execution')
|
|
||||||
variant('avx', default=False, description='Enable AVX in order to substantially speed up execution')
|
|
||||||
|
|
||||||
depends_on('mpi', when='+mpi')
|
depends_on('mpi', when='+mpi')
|
||||||
|
|
||||||
@ -38,36 +34,6 @@ class Raxml(Package):
|
|||||||
# can't build multiple binaries in parallel without things breaking
|
# can't build multiple binaries in parallel without things breaking
|
||||||
parallel = False
|
parallel = False
|
||||||
|
|
||||||
def flag_handler(self, name, flags):
|
|
||||||
arch = ''
|
|
||||||
spec = self.spec
|
|
||||||
if spec.satisfies("platform=cray"):
|
|
||||||
# FIXME; It is assumed that cray is x86_64.
|
|
||||||
# If you support arm on cray, you need to fix it.
|
|
||||||
arch = 'x86_64'
|
|
||||||
if arch != 'x86_64' and not spec.target.family == 'x86_64':
|
|
||||||
if spec.satisfies("+sse"):
|
|
||||||
raise ConflictsInSpecError(
|
|
||||||
spec,
|
|
||||||
[(
|
|
||||||
spec,
|
|
||||||
spec.architecture.target,
|
|
||||||
spec.variants['sse'],
|
|
||||||
'+sse is valid only on x86_64'
|
|
||||||
)]
|
|
||||||
)
|
|
||||||
if spec.satisfies("+avx"):
|
|
||||||
raise ConflictsInSpecError(
|
|
||||||
spec,
|
|
||||||
[(
|
|
||||||
spec,
|
|
||||||
spec.architecture.target,
|
|
||||||
spec.variants['avx'],
|
|
||||||
'+avx is valid only on x86_64'
|
|
||||||
)]
|
|
||||||
)
|
|
||||||
return (flags, None, None)
|
|
||||||
|
|
||||||
def install(self, spec, prefix):
|
def install(self, spec, prefix):
|
||||||
mkdirp(prefix.bin)
|
mkdirp(prefix.bin)
|
||||||
files = glob.iglob("Makefile.*")
|
files = glob.iglob("Makefile.*")
|
||||||
@ -78,11 +44,11 @@ def install(self, spec, prefix):
|
|||||||
makefile.filter('mpicc', self.spec['mpi'].mpicc)
|
makefile.filter('mpicc', self.spec['mpi'].mpicc)
|
||||||
|
|
||||||
if spec.target.family == 'x86_64':
|
if spec.target.family == 'x86_64':
|
||||||
if spec.satisfies('+mpi +avx +pthreads'):
|
if spec.satisfies('+mpi +pthreads') and 'avx' in spec.target:
|
||||||
make('-f', 'Makefile.AVX.HYBRID.gcc')
|
make('-f', 'Makefile.AVX.HYBRID.gcc')
|
||||||
install('raxmlHPC-HYBRID-AVX', prefix.bin)
|
install('raxmlHPC-HYBRID-AVX', prefix.bin)
|
||||||
|
|
||||||
if spec.satisfies('+mpi +sse +pthreads'):
|
if spec.satisfies('+mpi +pthreads') and 'sse3' in spec.target:
|
||||||
make('-f', 'Makefile.SSE3.HYBRID.gcc')
|
make('-f', 'Makefile.SSE3.HYBRID.gcc')
|
||||||
install('raxmlHPC-HYBRID-SSE3', prefix.bin)
|
install('raxmlHPC-HYBRID-SSE3', prefix.bin)
|
||||||
|
|
||||||
@ -90,11 +56,11 @@ def install(self, spec, prefix):
|
|||||||
make('-f', 'Makefile.HYBRID.gcc')
|
make('-f', 'Makefile.HYBRID.gcc')
|
||||||
install('raxmlHPC-HYBRID', prefix.bin)
|
install('raxmlHPC-HYBRID', prefix.bin)
|
||||||
|
|
||||||
if spec.satisfies('+mpi +avx'):
|
if spec.satisfies('+mpi') and 'avx' in spec.target:
|
||||||
make('-f', 'Makefile.AVX.MPI.gcc')
|
make('-f', 'Makefile.AVX.MPI.gcc')
|
||||||
install('raxmlHPC-MPI-AVX', prefix.bin)
|
install('raxmlHPC-MPI-AVX', prefix.bin)
|
||||||
|
|
||||||
if spec.satisfies('+mpi +sse'):
|
if spec.satisfies('+mpi') and 'sse3' in spec.target:
|
||||||
make('-f', 'Makefile.SSE3.MPI.gcc')
|
make('-f', 'Makefile.SSE3.MPI.gcc')
|
||||||
install('raxmlHPC-MPI-SSE3', prefix.bin)
|
install('raxmlHPC-MPI-SSE3', prefix.bin)
|
||||||
|
|
||||||
@ -102,11 +68,11 @@ def install(self, spec, prefix):
|
|||||||
make('-f', 'Makefile.MPI.gcc')
|
make('-f', 'Makefile.MPI.gcc')
|
||||||
install('raxmlHPC-MPI', prefix.bin)
|
install('raxmlHPC-MPI', prefix.bin)
|
||||||
|
|
||||||
if spec.satisfies('+pthreads +avx'):
|
if spec.satisfies('+pthreads') and 'avx' in spec.target:
|
||||||
make('-f', 'Makefile.AVX.PTHREADS.gcc')
|
make('-f', 'Makefile.AVX.PTHREADS.gcc')
|
||||||
install('raxmlHPC-PTHREADS-AVX', prefix.bin)
|
install('raxmlHPC-PTHREADS-AVX', prefix.bin)
|
||||||
|
|
||||||
if spec.satisfies('+pthreads +sse'):
|
if spec.satisfies('+pthreads') and 'sse3' in spec.target:
|
||||||
make('-f', 'Makefile.SSE3.PTHREADS.gcc')
|
make('-f', 'Makefile.SSE3.PTHREADS.gcc')
|
||||||
install('raxmlHPC-PTHREADS-SSE3', prefix.bin)
|
install('raxmlHPC-PTHREADS-SSE3', prefix.bin)
|
||||||
|
|
||||||
@ -114,11 +80,11 @@ def install(self, spec, prefix):
|
|||||||
make('-f', 'Makefile.PTHREADS.gcc')
|
make('-f', 'Makefile.PTHREADS.gcc')
|
||||||
install('raxmlHPC-PTHREADS', prefix.bin)
|
install('raxmlHPC-PTHREADS', prefix.bin)
|
||||||
|
|
||||||
if spec.satisfies('+sse'):
|
if 'sse3' in spec.target:
|
||||||
make('-f', 'Makefile.SSE3.gcc')
|
make('-f', 'Makefile.SSE3.gcc')
|
||||||
install('raxmlHPC-SSE3', prefix.bin)
|
install('raxmlHPC-SSE3', prefix.bin)
|
||||||
|
|
||||||
if spec.satisfies('+avx'):
|
if 'avx' in spec.target:
|
||||||
make('-f', 'Makefile.AVX.gcc')
|
make('-f', 'Makefile.AVX.gcc')
|
||||||
install('raxmlHPC-AVX', prefix.bin)
|
install('raxmlHPC-AVX', prefix.bin)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user