Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[WIP] Added support for ARCHER (Cray XC30). #864

Open
wants to merge 47 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
0784717
lightning.afrl changes
Mar 25, 2015
b226d41
added some host packages
cekees Mar 25, 2015
ac0e31f
added lightning profile
cekees May 21, 2015
9df2e03
added host-openblas.yaml for lightning
cekees May 21, 2015
30150cb
Merge remote-tracking branch 'ssh/master'
cekees May 21, 2015
d2bfbfa
Merge remote-tracking branch 'ssh/master' into cekees/lightning_afrl_…
cekees May 21, 2015
1efcb30
support for lightning.afrl
cekees May 21, 2015
5240c6e
added insert_location step for non-relocatable packages
cekees Jun 12, 2015
6d458ee
updating proteus stacks
cekees Jul 7, 2015
8408a3d
Merge remote-tracking branch 'origin/master' into update_proteus
cekees Jul 7, 2015
c3b54ea
adding h5py, netcdf, ode to default stack
cekees Jul 7, 2015
d52c497
Merge branch 'update_proteus' into add_location
cekees Jul 7, 2015
5e3b73a
added python-netscdf4
cekees Jul 9, 2015
ae31159
Merge remote-tracking branch 'ssh/master' into stable/lightning
cekees Jul 20, 2015
1bfd4cd
added h5py and ode deps to proteus stacks
cekees Jul 20, 2015
c743af0
Merge remote-tracking branch 'ssh/proteus_update' into stable/lightning
cekees Jul 20, 2015
27e17c3
Merge branch 'proteus_update' into add_location
cekees Jul 21, 2015
805c2fa
updating linux2 stack
cekees Jul 21, 2015
d14708f
Merge remote-tracking branch 'origin/add_pcs_api' into proteus_update
cekees Jul 21, 2015
d51a47b
add pcs_api
cekees Jul 21, 2015
d4830df
Merge branch 'proteus_update' into add_location
cekees Jul 21, 2015
296966f
Merge branch 'add_jupyter-pip' into proteus_update
cekees Jul 22, 2015
1331d75
updated jupyter-pip and pythreejs
cekees Jul 22, 2015
2eaa563
Merge remote-tracking branch 'origin/master' into proteus_update
cekees Sep 10, 2015
0355f7b
removed host cmake dependency
cekees Sep 10, 2015
d1e3d75
Merge remote-tracking branch 'ssh/proteus_update' into stable/lightning
cekees Sep 11, 2015
7808dd3
added ode and h5py
cekees Sep 11, 2015
07dbd7f
Merge remote-tracking branch 'ssh/master'
cekees Sep 11, 2015
1a34d81
Merge remote-tracking branch 'ssh/master' into stable/lightning
cekees Sep 12, 2015
b3da785
Merge remote-tracking branch 'ssh/master' into stable/lightning
cekees Oct 1, 2015
acf9d9d
corrected machine type to XC30
cekees Oct 3, 2015
b95922b
Merge remote-tracking branch 'ssh/master' into stable/lightning
cekees Oct 3, 2015
6a6deeb
Added support for ARCHER (Cray XC30).
Oct 30, 2015
02cfd0f
Added specific version numbers for petsc and petsc4py.
Nov 3, 2015
b2276b1
Restored backward compatibility for CrayXE6.
Nov 3, 2015
5552c2d
Merge branch 'master' of https://github.com/hashdist/hashstack into s…
Nov 5, 2015
bb922b8
host-libsci-blas used by blas and scipy modules, and host-libsci-lapa…
Nov 6, 2015
8cf79e0
placed patch for sed command in separate loop as per the fix on fix_h…
Nov 6, 2015
4ed653a
modified make command such that MAKE_NP is set
Nov 6, 2015
fe76e07
Added pip package to allow make develop.
Nov 13, 2015
f780c7f
Added sections to allow customised build paths.
Nov 13, 2015
531cfbd
Removed pip module.
Nov 13, 2015
d390e9f
Added CrayXC30 section.
Nov 13, 2015
d8ad2c4
Added CrayXC30 section.
Nov 13, 2015
30e9f95
Merge remote-tracking branch 'origin/stable/lightning' into stable/ar…
Nov 16, 2015
9a02342
Removed redundant preConfigureCrayXC30 def.
Nov 16, 2015
b3e1a2e
Reinstated https link to github repository.
Nov 16, 2015
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions archer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
extends:
- file: linux.yaml
6 changes: 6 additions & 0 deletions base/base_package.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,12 @@ post_process:
- "check-ignore=.*\\.pyc\\$"
- "check-ignore=.*\\.pyo\\$"

- name: insert_location
when: relocatable != True
after: [default]
hit:
- insert-location

profile_links:
- when: platform == 'Cygwin'
name: copy_dlls
Expand Down
32 changes: 32 additions & 0 deletions config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,38 @@ package_dirs:
hook_import_dirs:
- base

build_stores:
- dir: ./bld


## Location where temporary directories for building software are created.
## Such directories are by default removed again once the build is done.

build_temp: ./tmp


## Locations of downloaded tarballs and git repositories. A location
## can either be a local filesystem, or a URL to an online, read-only
## mirror. Only the first location, which should be a local directory,
## will be written to.

source_caches:
- dir: ./src
## For additional source cache mirror:
## - url: https://some.server.org/hashdist/src


## The cache directory is used for misc. caching (e.g., probing of host
## system). The contents can always be wiped without resulting in rebuilds.

cache: ./cache

## The roots directory contains links to (links to) profiles. Anything
## pointed to through here will not be deleted when garbage-collected.

gc_roots: ./gcroots


parameters:
BASH: /bin/bash
PROLOGUE: | # by default, PROLOGUE is a no-op
Expand Down
73 changes: 73 additions & 0 deletions examples/proteus.archer.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# This profile file controls your <#> (HashDist) build environment.

# In the future, we'll provide better incorporation of
# automatic environment detection. For now, have a look
# at the YAML files in the top-level directory and choose
# the most *specific* file that matches your environment.

extends:
- file: archer.yaml

# The packages list specifies all the packages that you
# require installed. <#> will ensure that all packages
# and their dependencies are installed when you build this
# profile.

parameters:
machine: CrayXC30
HOST_MPICC: cc
HOST_MPICXX: CC
HOST_MPIF77: ftn
HOST_MPIF90: ftn
HOST_MPIEXEC: aprun
PATH: |
/usr/bin:/bin:/usr/sbin:/sbin
PROLOGUE: |
source /opt/modules/default/init/bash; export MODULEPATH=/opt/cray/craype/default/modulefiles:/opt/cray/ari/modulefiles:/opt/cray/modulefiles:/opt/modulefiles:/cm/local/modulefiles:/cm/shared/modulefiles:/opt/modules/packages-archer; export MODULESHOME=/opt/modules/default; export MODULE_VERSION=3.2.10; export MODULE_VERSION_STACK=3.2.10; export CRAY_CPU_TARGET=ivybridge; echo "unloading modules"; module unload PrgEnv-cray; echo "loading modules"; module load PrgEnv-gnu; module load cray-mpich; module load cray-libsci; module load cray-tpsl; echo "setting default compilers"; export CC=gcc; export CXX=g++; export FC=gfortran; export F77=gfortran; export F90=gfortran; export CPP=cpp;
DYNAMIC_EXE_LINKER_FLAGS: -dynamic

packages:
launcher:
cmake:
python:
host: false
build_with: |
openssl,bzip2,sqlite
blas:
use: host-libsci-blas
lapack:
use: host-libsci-lapack
daetk:
mpi:
use: host-mpi
mpi4py:
nose:
hdf5:
ipython:
matplotlib:
parmetis:
without_check: true
petsc:
version: 3.6.1
without_check: true
build_with: |
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we should update to the latest petsc version by adding version: 3.6.1 above without_check: true

parmetis
download: |
ptscotch, superlu, superlu_dist, spooles, hypre, blacs, scalapack, mumps
coptflags: -O2
link: shared
debug: false
petsc4py:
version: 3.6.0
with_conf: true
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

petsc4py currently needs version: 3.6.0 to work with petsc version 3.6.1. (The petsc4py 3.6.1 was not out yet last time I checked).

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, I've made the changes you recommended and daetk now compiles.

pytables:
sphinx:
superlu:
sympy:
tetgen:
triangle:
memory_profiler:
scipy:
use: host-libsci-blas
h5py:
ode:
77 changes: 77 additions & 0 deletions examples/proteus.lightning.gnu.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
# This profile file controls your <#> (HashDist) build environment.

# In the future, we'll provide better incorporation of
# automatic environment detection. For now, have a look
# at the YAML files in the top-level directory and choose
# the most *specific* file that matches your environment.

extends:
- file: suse.yaml

# The packages list specifies all the packages that you
# require installed. <#> will ensure that all packages
# and their dependencies are installed when you build this
# profile.

parameters:
machine: CrayXC30
HOST_MPICC: cc
HOST_MPICXX: CC
HOST_MPIF77: ftn
HOST_MPIF90: ftn
HOST_MPIEXEC: aprun
PATH: |
/usr/bin:/bin:/usr/sbin:/sbin
PROLOGUE: |
unset RCLOCAL_PRGENV; source /etc/bash.bashrc; source /etc/bash.bashrc.local; module swap PrgEnv-cray PrgEnv-gnu; module load cray-mpich; module list; echo "setting default compilers"; export CC=gcc; export CXX=g++; export FC=gfortran; export F77=gfortran; export F90=gfortran; export CPP=cpp;
DYNAMIC_EXE_LINKER_FLAGS: -dynamic

packages:
launcher:
cmake:
python:
host: false
build_with: |
openssl,bzip2,sqlite
blas:
use: host-libsci-blas
lapack:
use: host-libsci-lapack
daetk:
mpi:
use: host-mpi
mpi4py:
nose:
hdf5:
ipython:
matplotlib:
parmetis:
without_check: true
petsc:
version: 3.6.1
build_with: |
parmetis
download: |
ptscotch, superlu, superlu_dist, spooles, hypre, blacs, scalapack, mumps
coptflags: -O2
link: shared
debug: false
petsc4py:
version: 3.6.0
with_conf: true
pytables:
sphinx:
superlu:
sympy:
tetgen:
triangle:
memory_profiler:
scipy:
netcdf4f:
python-netcdf4:
h5py:
ode:
pip:
# pyode:
# vtk:
# pyvtk:
8 changes: 6 additions & 2 deletions pkgs/hdf5/hdf5.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ build_stages:
bash: |
export CC=${MPICC}

- when: machine == 'CrayXE6'
- when: machine == 'CrayXE6' or machine == 'CrayXC30'
name: make_exe_builds_static
handler: bash
after: configure
Expand All @@ -28,6 +28,10 @@ build_stages:
do
sed -i 's/CCLD = $(CC)/CCLD = $(CC) -static/g' $f
done
for f in {src,test,testpar,tools/*,perform,hl/*,hl/*/*}/Makefile
do
sed -i "s/sed -e 's\/-L\/:\/g' -e 's\/ \/\/g'/sed -e 's\/-L\/:\/g' -e 's\/-rpath=\/:\/g' -e 's\/-Wl,\/\/g' -e 's\/ \/\/g'/g" $f
done

- name: configure
extra: ['--with-zlib=${ZLIB_DIR}',
Expand All @@ -40,7 +44,7 @@ build_stages:
'--enable-largefile=yes',
'--with-default-api-version=v18']

- when: machine == 'CrayXE6'
- when: machine == 'CrayXE6' or machine == 'CrayXC30'
name: configure
extra: ['--enable-static-exec',
'--with-zlib=${ZLIB_DIR}',
Expand Down
2 changes: 2 additions & 0 deletions pkgs/host-openblas-blas.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
when_build_dependency:
- {set: 'BLAS_LDFLAGS', value: '-lopenblas'}
2 changes: 2 additions & 0 deletions pkgs/host-openblas-lapack.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
when_build_dependency:
- {set: 'LAPACK_LDFLAGS', value: '-lopenblas'}
2 changes: 2 additions & 0 deletions pkgs/host-openblas.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
when_build_dependency:
- {set: 'BLAS_LDFLAGS', value: '-lacml'}
4 changes: 2 additions & 2 deletions pkgs/jupyter-pip.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,5 @@ dependencies:
run: []

sources:
- key: tar.gz:wxla2vqnbs3zhqn3l6kafwyhobj6ppak
url: https://pypi.python.org/packages/source/j/jupyter-pip/jupyter-pip-0.1.tar.gz
- key: git:9fe7ab80870b2c7de8380ab8013fbb33df7ee847
url: https://github.com/jdfreder/jupyter-pip.git
2 changes: 1 addition & 1 deletion pkgs/netcdf4/netcdf4.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ build_stages:
bash: |
export CC=$MPICC

- when: machine == 'CrayXE6'
- when: machine == 'CrayXE6' or machine == 'CrayXC30'
name: configure
mode: override
append: {LDFLAGS: {{DYNAMIC_EXE_LINKER_FLAGS}}}
Expand Down
37 changes: 30 additions & 7 deletions pkgs/numpy/numpy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,27 +53,50 @@ build_stages:
export BLAS=None
export ATLAS=None

- when: machine == 'CrayXE6'
- when: machine == 'CrayXC30'
name: create-site.cfg
after: prologue
before: install
handler: bash
bash: |
cat > site.cfg << EOF
[DEFAULT]
library_dirs = ${ACML_DIR}/gfortran64/lib
libraries = acml, gfortran
library_dirs = ${CRAY_LIBSCI_PREFIX_DIR}/lib
libraries = sci_gnu
EOF

- when: machine == 'CrayXE6'
- when: machine == 'CrayXC30'
name: set-LDFLAGS
after: prologue
before: install
handler: bash
bash: |
export LDFLAGS="-shared -Wl,-rpath=${PYTHON_DIR}/lib -Wl,-rpath=${ACML_DIR}/gfortran64/lib $(${PYTHON_DIR}/bin/python-config --ldflags -lgfortran)"
export LAPACK=acml
export BLAS=acml
export LDFLAGS="-shared -Wl,-rpath=${PYTHON_DIR}/lib -Wl,-rpath=${CRAY_LIBSCI_PREFIX_DIR}/lib $(${PYTHON_DIR}/bin/python-config --ldflags)"
export LAPACK=sci_gnu
export BLAS=sci_gnu
export ATLAS=None

- when: machine == 'CrayXC30'
name: create-site.cfg
after: prologue
before: install
handler: bash
bash: |
cat > site.cfg << EOF
[DEFAULT]
library_dirs = ${CRAY_LIBSCI_PREFIX_DIR}/lib
libraries = sci_gnu
EOF

- when: machine == 'CrayXC30'
name: set-LDFLAGS
after: prologue
before: install
handler: bash
bash: |
export LDFLAGS="-shared -Wl,-rpath=${PYTHON_DIR}/lib -Wl,-rpath=${CRAY_LIBSCI_PREFIX_DIR}/lib $(${PYTHON_DIR}/bin/python-config --ldflags)"
export LAPACK=sci_gnu
export BLAS=sci_gnu
export ATLAS=None

- when: platform == 'Cygwin'
Expand Down
31 changes: 31 additions & 0 deletions pkgs/petsc/petsc.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,35 @@ def preConfigureCrayXE6(ctx, conf_lines):
conf_lines += ['LDFLAGS=' + ctx.parameters['DYNAMIC_EXE_LINKER_FLAGS'],
'--known-mpi-shared-libraries=1',
'--with-batch',
'--known-sdot-returns-double=0',
'--known-snrm2-returns-double=0',
'--known-level1-dcache-size=16384',
'--known-level1-dcache-linesize=64',
'--known-level1-dcache-assoc=4',
'--known-memcmp-ok=1',
'--known-sizeof-char=1',
'--known-sizeof-void-p=8',
'--known-sizeof-short=2',
'--known-sizeof-int=4',
'--known-sizeof-long=8',
'--known-sizeof-long-long=8',
'--known-sizeof-float=4',
'--known-sizeof-double=8',
'--known-sizeof-size_t=8',
'--known-bits-per-byte=8',
'--known-sizeof-MPI_Comm=4',
'--known-sizeof-MPI_Fint=4',
'--known-mpi-long-double=1',
'--known-mpi-c-double-complex=1',
'--known-mpi-int64_t=1',
'--with-pthread=1']

def preConfigureCrayXC30(ctx, conf_lines):
conf_lines += ['LDFLAGS=' + ctx.parameters['DYNAMIC_EXE_LINKER_FLAGS'],
'--known-mpi-shared-libraries=1',
'--with-batch',
'--known-sdot-returns-double=0',
'--known-snrm2-returns-double=0',
'--known-level1-dcache-size=16384',
'--known-level1-dcache-linesize=64',
'--known-level1-dcache-assoc=4',
Expand Down Expand Up @@ -87,6 +116,8 @@ def configure(ctx, stage_args):

if ctx.parameters.get('machine','') == 'CrayXE6':
preConfigureCrayXE6(ctx, conf_lines)
elif ctx.parameters.get('machine','') == 'CrayXC30':
preConfigureCrayXC30(ctx, conf_lines)
elif ctx.parameters.get('machine','') == 'SGIICEX':
preConfigureSGIICEX(ctx, conf_lines)

Expand Down
4 changes: 2 additions & 2 deletions pkgs/petsc/petsc.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@ build_stages:
handler: bash
after: configure
bash: |
make
make MAKE_NP=${HASHDIST_CPU_COUNT}

- name: install
mode: replace
handler: bash
Expand Down
Loading