Hi Malcolm,
On 10/02/15 23:09, Malcolm Cook wrote:
Kenneth,
Thanks for the complete reply.
Bootstrap is working for me, thanks, However, my first foray into this
has me into a sticky wicket. Can you advise me please on the following:
goolf-1.6.10.eb is the most recent goolf toolchain installed with
bootstrap
(https://github.com/hpcugent/easybuild-easyconfigs/blob/master/easybuild/easyconfigs/g/goolf/goolf-1.6.10.eb)
It includes OpenBLAS v 0.2.8
However, OpenBLAS v 0.2.8 fails to build on my architecture (in the
code that wants to conclude that CORE=sandybridge)
Gladly, OpenBLAS v 0.2.13 succeeds (built standalone by hand). So
does v 0.2.12
So, I think my goal should now be to define a new toolchain that
incorporates OpenBLAS 0.2.13 or 0.2.12
However, I am not (yet) versed in the dependencies between the various
versions of the components of goolp, and fear I may make a novice
mistake in crafting a new goolf tool chain.
Scouting around, I see the following easyconfig, which suggests a
compatible version of GCC/OpenBLAS/LAPACK.
So, I try to build:
eb OpenBLAS-0.2.12-GCC-4.9.2-LAPACK-3.5.0.eb
which reveals again my ignorance as I get error: "Exception: No module
found for toolchain name 'GCC' (4.9.2)" (despite there indeed being
an GCC-4.9.2.eb
Can you provide me a push in the right direction here.
The problem here is that you don't have a module available yet for the
toolchain that is being used by this OpenBLAS easyconfig file, i.e.
you're missing a module named GCC/4.9.2.
You can either installed that 'manually' using EasyBuild ("eb
GCC-4.9.2.eb"), or you can ask EasyBuild to try and take care of all the
(missing) dependencies for your OpenBLAS easyconfigs, including the
toolchain.
For this, just add "--robot" to your "eb" command line to enable the
dependency resolution mechanism, see also
http://easybuild.readthedocs.org/en/latest/Using_the_EasyBuild_command_line.html#use-robot
.
To get an overview of the installations that EasyBuild will be
performing, use --dry-run or -D, together with --robot (or -r), see also
http://easybuild.readthedocs.org/en/latest/Using_the_EasyBuild_command_line.html#get-an-overview
. For example:
eb OpenBLAS-0.2.12-GCC-4.9.2-LAPACK-3.5.0.eb -Dr
Should I instead proceed to:
1) create a new toolchain, say goolf-1.6.12.eb, based on 1.6.10, but with
blastver=0.2.12 # isntead of 0.2.8
comp_version = '4.9.2' # instead of '4.8.2
blassuff = '-LAPACK-3.5.0' # instead of -LAPACK-3.4.2
I try this be learn:
ERROR: EasyBuild crashed with an error (at
easybuild/tools/robot.py:232 in resolve_dependencies): Irresolvable
dependencies encountered: OpenMPI/1.7.3-GCC-4.9.2,
OpenBLAS/0.2.12-gompi-1.6.12-LAPACK-3.5.0, FFTW/3.3.3-gompi-1.6.12,
ScaLAPACK/2.0.2-gompi-1.6.12-OpenBLAS-0.2.12-LAPACK-3.5.0
Can you suggest what other .eb I am going to have to build with
corresponding changes, or, am I barking up the wrong tree here.
If you have reference to any guidelines for compatibility in the GNU
goolf toolchain, or examples of how to simply change the `blasver`
through a hierarchy of interdependent toolchains????
To define a new instantiation of a toolchain, you'll need to take care
of easyconfigs for each of the components, unless they're already
available in the EasyBuild release you're using. For goolf specifically,
this involves GCC, OpenMPI, OpenBLAS, FFTW, ScaLAPACK (and some other
dependencies that some of these requires, e.g. hwloc, etc.).
Using --dry-run or -D on an existing goolf toolchain version, for
example "eb goolf-1.6.10.eb -Dr", you can get a good view on what you
would have to provide for a new toolchain version.
And now for the excellent news I have for you: it's already done for
you, in this case, just not included in EasyBuild v1.16.1 yet.
For an updated version of goolf, which uses the last version of most of
the components (it's using GCC 4.8.4 rather than the latest-and-greatest
GCC 4.9.2), see the easyconfigs that were merged into the develop branch
of EasyBuild via pull request #1294, see
https://github.com/hpcugent/easybuild-easyconfigs/pull/1294/files.
And it gets better: you don't have to download or copy-paste each of the
easyconfig files in there yourself, you can let EasyBuild do it for you
via the --from-pr command line option.
Try this:
eb --from-pr 1294 -Dr
Another option worth looking into is the "common" toolchain foss, which
is (today, at least) equivalent to goolf in terms of included
components, but just has a different name ('foss' for 'free open source
software'). Both the 'foss' and 'intel' toolchains, also referred to as
'common' toolchains, are in effort in trying to get multiple sites using
EasyBuild to use the same toolchain as well, since that effectively
focuses the effort in writing easyconfig files for common software packages.
The easyconfig files for the latest iteration of the foss toolchain,
foss/2015a, were contributed via PR #1239
(https://github.com/hpcugent/easybuild-easyconfigs/pull/1239/files). The
main difference with goolf/1.7.20 is that foss/2015a *is* using GCC
v4.9.2...
Take a detailed look at foss/2015a using "eb --from-pr 1239 -Dr".
If you're happy with what you see listed in the output of the dry run,
try running it without the -D, and let EasyBuild do it's magic.
Let us know how this turns out.
regards,
Kenneth
On Mon, Feb 9, 2015 at 4:31 PM, Kenneth Hoste <[email protected]
<mailto:[email protected]>> wrote:
Hi Malcolm,
First of all: let me apologize for not getting back to you in some
of the issues you've replied to on the EasyBuild GitHub repository.
Your messages have been burning a hole in my inbox, but I didn't
get to responding to them yet...
On 09/02/15 22:49, Cook, Malcolm wrote:
Hi,
I am currently learning EasyBuild/Lmod and strategizing for
deployment to a common network shared mountpoint, say $HPCBC, for
use by about half-dozen HPC linux running CentOS7.
I wonder if there is any information that would help me with
pros/cons on waiting for EB 2.x before deployment, such as:
intended scope of changes
intended backward compatibility (should all existing modules
'just work')
ETA for first release intended for general availability (non-beta)
EasyBuild v2.0 is going to include a couple of
backward-incompatible changes (hence the major version bump), but
most of these changes shouldn't affect users new to the tool.
All the easyblocks and easyconfigs files included in EasyBuild
v1.16.1 will still work with EasyBuild v2.0, since non of them are
relying on deprecated functionality for which support will be
dropped in EasyBuild v2.0.
For all details w.r.t. backwards-incompatible changes, see
http://easybuild.readthedocs.org/en/latest/Deprecated-functionality.html
.
There are a couple of other major changes we're planning on
including in EasyBuild v2.0, i.e., to stop including a copy of the
vsc-base Python package that serves as a base for the EasyBuild
framework and use it as a proper dependency instead, and dropping
support for Python 2.4.x in favor of Python 2.6.x.
In practice, these changes should not affect end users (assuming
your system Python is 2.6 or a newer Python 2 version).
A detailed overview of the (major) changes being made in EasyBuild
v2.0 is available at
https://github.com/hpcugent/easybuild-framework/issues/1000, which
also provides an up-to-date status of the progress being made.
In terms of planning: EasyBuild was planned to be the first
release in 2015, and we're sticking to that (i.e. there will be no
further releases on the 1.x branch).
I was hoping to push out EasyBuild v2.0 last week, in time for the
8th EasyBuild hackathon which is running in Basel this week (see
https://github.com/hpcugent/easybuild/wiki/8th-EasyBuild-hackathon),
but I didn't manage to get it ready (and I didn't want to rush it
out either).
So, it'll probably be shifted more towards the end of this month,
since I'll be busy with the hackathon this week, and will have
other stuff to attend to once I'm back at the office.
Also, I am somewhat struggling with my EB 1.x evaluation/testing
(also on CentOS7) and wonder about relative value of using the
various installation methods, being
1) python bootstrap_eb.py $HPCBC/easybuild # currently yields
version 1.16.1
2) pip install --install-option "--prefix=${HPCBC}/EasyBuild"
easybuild
3)
> pip install --install-option "--prefix=1.16.1" easybuild
b) pip install --install-option "--prefix=1.16.1" easybuild
My impression is that the advantage of using the bootstrap
procedure is that it builds a 'module' file.Is there more that I
am missing?
If the bootstrap procedure works for you, and you're happy with
using EasyBuild by loading it as a module, I would recommend that
approach.
If you want EasyBuild installed on the system directly so you can
use it without having to load a module, you can resort to the
standard Python installation tools like easy_install or pip.
The main reason we introduced the bootstrap procedure is because
the standard Python installation tools tend to be quite quirky,
depending on how they were installed or configured... Pro tip:
stay away from using the "--user" install option...
Finally, I have the following observations about the install that
I hope you find worthy additions to your installation documentation:
xmlrunner is python module optionally used by eb boostrap unit
test which allows them to run faster! NB - in my hands the test
results are DIFFERENT if present - perhaps a "bad thing". Can be
installed with: `pip install xmlrunner`-- add to
http://easybuild.readthedocs.org/en/latest/Installation.html#optional-dependencies
Thanks for bringing this up. xmlrunner should be entirely
optional. I wasn't aware that it can make the test results run
faster... Do you have any more details there?
There are some known issues w.r.t. robustness of the unit tests,
which we hope to fix in EasyBuild v2.0 (see also the references in
https://github.com/hpcugent/easybuild-framework/issues/1000).
Do you have more details to share on which unit tests are failing
for you? Maybe include the output you're getting in a gist
(https://gist.github.com)
tcl need be installed (in my experience) (regardless of whether
Tcl/C environment modules are to be used - i.e. even if only Lmod
is to be used) - add to
http://easybuild.readthedocs.org/en/latest/Installation.html#requirements
Yes, tclsh is required even if you're using Lmod, because (for
now) EasyBuild only supports generating module files in Tcl
syntax, and Lmod needs tclsh to be able to translate Tcl to Lua on
the fly.
Lmod will now also complain if tclsh is missing and it was
configured to be able to consume Tcl module files, since we
reported this issue to Robert McLay, the Lmod maintainer.
We will also mention this in the documentation, as you suggest.
if Lua is built and installed in a non standard location,
LUA_ROOT should be redefined accordingly, for example:
>sed -i '/#define LUA_ROOT/s:/usr/local/:${INSTALL_TOP}/:'
src/luaconf.h
This is an Lmod issue, but: i) lua should be available in $PATH
when building/installing Lmod, ii) if Lmod also requires lua.h (it
depends on whether you have lua-term available on your system or
not), you can point to its location using the --with-lua-include
configure option.
There is a known issue in Lmod 5.8.6 w.r.t. finding lua.h in the
'make install' step, which is already fixed in the HEAD version of
Lmod in the GitHub repository (see
https://github.com/TACC/Lmod/commit/ba889b1887d5b7484e420ec1f0dfce372d36e11e).
Don't hesitate to let us know if you have any further questions or
remarks/suggestions.
regards,
Kenneth