Howdy,
On our mixed-node x86_64 cluster, we have Ivy Bridge
for the login and most (1000+) compute nodes and Westmere
for the 10 or so large memory nodes.
Dummying down all builds for the Westmere (with no AVX)
just didn't seem like a good idea.
So, on that system (ada), we usually set EASYBUILD_PREFIX
to /software/easybuild so that Ivy Bridge software/modules
end up in that directory. We also have some Westmere modules
(for development and users) that sets EASYBUILD_INSTALLDIR
to /software/easybuild/Westmere (Note: I'm using a similar approach
on our BG/Q to distinguish between CNK/bgsys (compute nodes) and
non-CNK/ppc64 (login nodes) builds.
For our users we have:
Westmere/1 - simply adds (using Lmod's path priority feature)
/software/easybuild/Westmere/modules/all
to the MODULEPATH i.e.
prepend_path{"MODULEPATH","/software/easybuild/Westmere/modules/all",priority=100}
For our developers, we currently have the following modules
EasyBuild/2.1.1 # in /software/easybuild - stock EB install (built by EB)
EasyBuild/2.1.1-tamusc # in /sofware/easybuild - stock EB install (built
by EB)
with some files (framework and easyblocks) overridden with
symlinks to our devel tree
EasyBuild-ada/2.1.1 # in /software/tamusc.. loads 2.1.1. above and sets
up environment (stock EB)
Easybuild-tamusc-ada/2.1.1 # in /software/tamus - loada 2.1.1-tamusc
above and sets up env (modified EB)
EasyBuild-ada-Westmere # loads EasyBuild-tamusc-ada and Westmere above
and sets
EASYBUILD_INSTALLPATH to /software/easybuild/Westmere
At some point, I was working on some module code so that
you couldn't load the last of the above while on an AVX-enabled
(e.g. Ivy Bridge) node, thus preventing accidentally polluting
the Westmere tree. But, for now, we just have to remember to
login to one of the Westmere nodes when building for that model.
Then I just use EB as is without having to tailor each individual
easyconfig (or easyblock) for the CPU model in question. Ivy Bridge
builds are optimized for Ivy Bridge and Westmere builds are optimized
for Westmere.
It may be a little more work at the outset, and does require duplicate
builds, but its a lot easier once set up and requires much less effort
(than what you are describing) to build.
FWIW/YMMV... just another $.02 tossed in the air in case anyone wants a
penny or two...
Jack Perdue
Lead Systems Administrator
High Performance Research Computing
TAMU Division of Research
[email protected] http://sc.tamu.edu
SC Helpdesk: [email protected]
On 07/15/2015 03:37 AM, Martin wrote:
Hi,
thanks for the information. At the moment I would like to avoid
building different stacks. It seems my colleagues are opposed to that
options as they feel it introduces uneeded complexity.
Personally I plan to revisit that option later when there is more
confidence that this does actually work. Please if you can post the
slides somewhere, references like these always help then I can say:
"Look guys, these people have been doing it for years and it works.
Why not just try it?" :)
/Martin
On Tue, Jul 14, 2015 at 6:05 PM Pablo Escobar Lopez
<[email protected] <mailto:[email protected]>>
wrote:
Hi Martin,
openblas will ignore the optarch option in easybuild but you can
use something like this in the OpenBLAS easyconfig
buildopts = 'TARGET=SANDYBRIDGE BINARY=64 ' + threading + '
CC="$CC" FC="$F77"'
here you have the list of supported targets in openblas
https://github.com/xianyi/OpenBLAS/blob/develop/TargetList.txt
If you want to share the same openblas installation across all
your different cpu types you will need to use the target which
match your oldest cpu. Another approach is to maintain a different
software stack by cpu type as described in the slides I attach
(page 9)
regards,
Pablo.
2015-07-14 13:21 GMT+02:00 Martin <[email protected]
<mailto:[email protected]>>:
Hi,
I have a couple of different CPUs and in my situation EB is
not so much about a HPC site or repeatable build but rather
about managing the stuff. So here's the thing:
When using R/3.2.0-foss-2015a-bare (just a simply
--try-software-version easyconfig) and subsequently installing
a few R packages will work on one host but fail on another.
The error is a classical illegal instruction in the underlying
OpenBLAS library (I could reproduce this specific problem
The problem is that OpenBLAS/0.2.13-GCC-4.9.2-LAPACK-3.5.0
seems to using some magic so that is is processor dependent.
The processors involved are:
* AMD Opteron(TM) Processor 6238 and
* Six-Core AMD Opteron(tm) Processor 8431
There are also a few Intel processors and a few other AMD CPUs
here. What I'm looking for is a setting for easybuild that
optimizes for portability between compatible CPU architectures.
Does anyone have suggestions how to achieve the most
compatibility and care less about byte-level reproducability
or performance? The target platform I have in mind is "64bit
x86 compatible".
I have optarch="" in my config.cfg where I thought that would
already take care of it.
Any thoughts would be appreciated.
/Martin
--
--
http://www.xing.com/profile/Martin_Marcher
http://www.linkedin.com/in/martinmarcher
Mobil: +43 / 660 / 62 45 103
<tel:%2B43%20%2F%20660%20%2F%C2%A062%2045%20103>
UID: ATU68801424
--
Pablo Escobar López
HPC systems engineer
Biozentrum, University of Basel
Swiss Institute of Bioinformatics SIB
Email: [email protected]
<mailto:[email protected]>
Phone: +41 61 267 21 80
http://www.biozentrum.unibas.ch
--
--
http://www.xing.com/profile/Martin_Marcher
http://www.linkedin.com/in/martinmarcher
Mobil: +43 / 660 / 62 45 103
UID: ATU68801424