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

generic easyblock for Cray toolchains #766

Merged
merged 8 commits into from
Jan 21, 2016
Merged

Conversation

boegel
Copy link
Member

@boegel boegel commented Dec 11, 2015

(requires easybuilders/easybuild-framework#1506)

required for stable Cray support (cfr. easybuilders/easybuild-framework#1390)

cc @gppezzi

@boegel boegel added this to the v2.5.0 milestone Dec 11, 2015
@boegel
Copy link
Member Author

boegel commented Dec 11, 2015

Example easyconfig:

easyblock = 'CrayToolchain'

name = 'CrayGNU'
version = 'test'

homepage = '(none)'
description = """Toolchain using Cray compiler wrapper, using PrgEnv-gnu module."""

toolchain = {'name': 'dummy', 'version': 'dummy'}

dependencies = [
    ('PrgEnv-gnu/5.2.40', EXTERNAL_MODULE),
    ('gcc/4.8.2', EXTERNAL_MODULE),
    ('cray-mpich/7.2.2', EXTERNAL_MODULE),
    ('cray-libsci/13.0.4', EXTERNAL_MODULE),
    ('fftw/3.3.4.2', EXTERNAL_MODULE),
]

moduleclass = 'toolchain'

resulting module file:

#%Module
proc ModulesHelp { } {
    puts stderr { Toolchain using Cray compiler wrapper, using PrgEnv-gnu module. - Homepage: (none)
    }
}

module-whatis {Toolchain using Cray compiler wrapper, using PrgEnv-gnu module. - Homepage: (none)}

set root /Users/kehoste/.local/easybuild/software/CrayGNU/test

conflict CrayGNU

# first, unload any PrgEnv module that may be loaded
if { [ is-loaded PrgEnv-cray ] } {
    module unload PrgEnv-cray
}

if { [ is-loaded PrgEnv-gnu ] } {
    module unload PrgEnv-gnu
}

if { [ is-loaded PrgEnv-intel ] } {
    module unload PrgEnv-intel
}

if { [ is-loaded PrgEnv-pgi ] } {
    module unload PrgEnv-pgi
}

# next, load toolchain components

if { ![ is-loaded PrgEnv-gnu/5.2.40 ] } {
    module load PrgEnv-gnu/5.2.40
}

# 'safe' swap: unload gcc when loaded, then load gcc/4.8.2
if { [ is-loaded gcc ] } {
    module unload gcc
}
if { ![ is-loaded gcc/4.8.2 ] } {
    module load gcc/4.8.2
}

# 'safe' swap: unload cray-mpich when loaded, then load cray-mpich/7.2.2
if { [ is-loaded cray-mpich ] } {
    module unload cray-mpich
}
if { ![ is-loaded cray-mpich/7.2.2 ] } {
    module load cray-mpich/7.2.2
}

# 'safe' swap: unload cray-libsci when loaded, then load cray-libsci/13.0.4
if { [ is-loaded cray-libsci ] } {
    module unload cray-libsci
}
if { ![ is-loaded cray-libsci/13.0.4 ] } {
    module load cray-libsci/13.0.4
}

# 'safe' swap: unload fftw when loaded, then load fftw/3.3.4.2
if { [ is-loaded fftw ] } {
    module unload fftw
}
if { ![ is-loaded fftw/3.3.4.2 ] } {
    module load fftw/3.3.4.2
}

setenv  EBROOTCRAYGNU       "$root"
setenv  EBVERSIONCRAYGNU        "test"
setenv  EBDEVELCRAYGNU      "$root/easybuild/CrayGNU-test-easybuild-devel"

@boegel
Copy link
Member Author

boegel commented Dec 11, 2015

cc @pforai

@hpcugentbot
Copy link
Contributor

Easyblocks unit test suite FAILed.

See https://jenkins1.ugent.be/job/easybuild-easyblocks-pr-builder/1461/console for more details.

Please fix the reported issues by pushing additional commits to the branch corresponding with this pull request; contact @boegel if you're not sure what to do.

@boegel
Copy link
Member Author

boegel commented Dec 11, 2015

@wpoely86: please review?

prgenv_unloads.append(self.module_generator.unload_module(prgenv).strip() + '\n')

comment = self.module_generator.comment("next, load toolchain components")
txt = '\n'.join(prgenv_unloads) + '\n' + comment + txt
Copy link
Member

Choose a reason for hiding this comment

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

add \n between comment and txt?

Copy link
Member Author

Choose a reason for hiding this comment

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

that's already there implicitly (since I'm not stripping the return value of .comment()), it would result in a double newline in the generated module file

@hpcugentbot
Copy link
Contributor

Easyblocks unit test suite FAILed.

See https://jenkins1.ugent.be/job/easybuild-easyblocks-pr-builder/1471/console for more details.

Please fix the reported issues by pushing additional commits to the branch corresponding with this pull request; contact @boegel if you're not sure what to do.

@hpcugentbot
Copy link
Contributor

Easyblocks unit test suite FAILed.

See https://jenkins1.ugent.be/job/easybuild-easyblocks-pr-builder/1476/console for more details.

Please fix the reported issues by pushing additional commits to the branch corresponding with this pull request; contact @boegel if you're not sure what to do.

@boegel
Copy link
Member Author

boegel commented Dec 11, 2015

cleaner output after feedback by @rtmclay and adjusting easybuilders/easybuild-framework#1506 accordingly:

    #%Module
    proc ModulesHelp { } {
        puts stderr { Toolchain using Cray compiler wrapper, using PrgEnv-gnu module. - Homepage: (none)
        }
    }

    module-whatis {Toolchain using Cray compiler wrapper, using PrgEnv-gnu module. - Homepage: (none)}

    set root /Users/kehoste/.local/easybuild/software/CrayGNU/test

    conflict CrayGNU

    # first, unload any PrgEnv module that may be loaded
    module unload PrgEnv-cray
    module unload PrgEnv-gnu
    module unload PrgEnv-intel
    module unload PrgEnv-pgi

    # next, load toolchain components

    if { ![ is-loaded PrgEnv-gnu/5.2.40 ] } {
        module load PrgEnv-gnu/5.2.40
    }

    if { ![ is-loaded gcc/4.8.2 ] } {
        module unload gcc
        module load gcc/4.8.2
    }

    if { ![ is-loaded cray-mpich/7.2.2 ] } {
        module unload cray-mpich
        module load cray-mpich/7.2.2
    }

    if { ![ is-loaded cray-libsci/13.0.4 ] } {
        module unload cray-libsci
        module load cray-libsci/13.0.4
    }

    if { ![ is-loaded fftw/3.3.4.2 ] } {
        module unload fftw
        module load fftw/3.3.4.2
    }

    setenv  EBROOTCRAYGNU       "$root"
    setenv  EBVERSIONCRAYGNU        "test"
    setenv  EBDEVELCRAYGNU      "$root/easybuild/CrayGNU-test-easybuild-devel"

@boegel
Copy link
Member Author

boegel commented Dec 13, 2015

Jenkins: test this please

@hpcugentbot
Copy link
Contributor

Easyblocks unit test suite FAILed.

See https://jenkins1.ugent.be/job/easybuild-easyblocks-pr-builder/1490/console for more details.

Please fix the reported issues by pushing additional commits to the branch corresponding with this pull request; contact @boegel if you're not sure what to do.

@boegel
Copy link
Member Author

boegel commented Dec 14, 2015

Jenkins: test this please

@hpcugentbot
Copy link
Contributor

Easyblocks unit test suite PASSed (see https://jenkins1.ugent.be/job/easybuild-easyblocks-pr-builder/1496/console for more details).

This pull request is now ready for review/testing.

Please try and find someone who can tackle this; contact @boegel if you're not sure what to do.

@pforai
Copy link
Contributor

pforai commented Dec 14, 2015

Looks better now, why no swap instead of the unload/load sequence?

@boegel
Copy link
Member Author

boegel commented Dec 14, 2015

@pforai: a swap fails if the module being swapped out is not loaded; an unload is always 'safe': it doesn't fail if the specified module is not loaded, and is a no-op when the module in which it is included is unloaded (so the is-loaded guards are useless)

@boegel
Copy link
Member Author

boegel commented Dec 14, 2015

@gppezzi: I'd love to see an easyconfig PR that using CrayToolchain before merging this...

@boegel
Copy link
Member Author

boegel commented Dec 14, 2015

When --recursive-module-unload is enabled, we get a module like this:

#%Module
proc ModulesHelp { } {
    puts stderr { Toolchain using Cray compiler wrapper, using PrgEnv-gnu module (PE release: June 2015).
 - Homepage: http://docs.cray.com/books/S-9407-1506
    }
}

module-whatis {Toolchain using Cray compiler wrapper, using PrgEnv-gnu module (PE release: June 2015).
 - Homepage: http://docs.cray.com/books/S-9407-1506}

set root /project/g89/cscs_demo/software/CrayGNU/2015.06-XC

conflict CrayGNU

# first, unload any PrgEnv module that may be loaded
module unload PrgEnv-cray
module unload PrgEnv-gnu
module unload PrgEnv-intel
module unload PrgEnv-pgi

# next, load toolchain components

module load PrgEnv-gnu/5.2.40

module unload gcc
module load gcc/4.8.2

module unload craype
module load craype/2.4.0

module unload cray-libsci
module load cray-libsci/13.0.4

module unload cray-mpich
module load cray-mpich/7.2.2

module unload fftw
module load fftw/3.3.4.3

setenv  EBROOTCRAYGNU       "$root"
setenv  EBVERSIONCRAYGNU        "2015.06-XC"
setenv  EBDEVELCRAYGNU      "$root/easybuild/CrayGNU-2015.06-XC-easybuild-devel"

But trying to build HPL on top of this fails.

With not having a PrgEnv loaded, we get:

kehoste@daint101:~> module list
Currently Loaded Modulefiles:
  1) modules/3.2.10.3                   3) switch/1.0-1.0502.60522.1.61.ari   5) craype/2.4.0                       7) slurm                              9) alps/5.2.4-2.0502.9822.32.1.ari
  2) eswrap/1.1.0-1.020200.1231.0       4) craype-network-aries               6) craype-sandybridge                 8) cray-mpich/7.2.2                  10) ddt/5.1

kehoste@daint101:~> eb HPL-2.1-CrayGNU-2015.06-XC.eb -df
== temporary log file in case of crash /tmp/eb-vHWtif/easybuild-qvyfoy.log
== processing EasyBuild easyconfig /users/kehoste/HPL-2.1-CrayGNU-2015.06-XC.eb
== building and installing HPL/2.1-CrayGNU-2015.06-XC...
== fetching files...
== creating build dir, resetting environment...
== unpacking...
== patching...
== preparing...
ERROR: Traceback (most recent call last):
  File "/project/g89/cscs_demo/.easybuild/easybuild-framework/easybuild/main.py", line 112, in build_and_install_software
    (ec_res['success'], app_log, err) = build_and_install_one(ec, init_env)
  File "/project/g89/cscs_demo/.easybuild/easybuild-framework/easybuild/framework/easyblock.py", line 2243, in build_and_install_one
    result = app.run_all_steps(run_test_cases=run_test_cases)
  File "/project/g89/cscs_demo/.easybuild/easybuild-framework/easybuild/framework/easyblock.py", line 2160, in run_all_steps
    self.run_step(step_name, step_methods)
  File "/project/g89/cscs_demo/.easybuild/easybuild-framework/easybuild/framework/easyblock.py", line 2039, in run_step
    step_method(self)()
  File "/project/g89/cscs_demo/.easybuild/easybuild-framework/easybuild/framework/easyblock.py", line 1494, in prepare_step
    self.toolchain.prepare(self.cfg['onlytcmod'], silent=self.silent)
  File "/project/g89/cscs_demo/.easybuild/easybuild-framework/easybuild/toolchains/craygnu.py", line 46, in prepare
    super(CrayGNU, self).prepare(*args, **kwargs)
  File "/project/g89/cscs_demo/.easybuild/easybuild-framework/easybuild/toolchains/compiler/craype.py", line 119, in prepare
    super(CrayPECompiler, self).prepare(*args, **kwargs)
  File "/project/g89/cscs_demo/.easybuild/easybuild-framework/easybuild/tools/toolchain/toolchain.py", line 566, in prepare
    self.set_variables()
  File "/project/g89/cscs_demo/.easybuild/easybuild-framework/easybuild/tools/toolchain/compiler.py", line 152, in set_variables
    super(Compiler, self).set_variables()
  File "/project/g89/cscs_demo/.easybuild/easybuild-framework/easybuild/tools/toolchain/mpi.py", line 98, in set_variables
    super(Mpi, self).set_variables()
  File "/project/g89/cscs_demo/.easybuild/easybuild-framework/easybuild/tools/toolchain/linalg.py", line 87, in set_variables
    self._set_blas_variables()
  File "/project/g89/cscs_demo/.easybuild/easybuild-framework/easybuild/tools/toolchain/linalg.py", line 123, in _set_blas_variables
    for root in self.get_software_root(self.BLAS_MODULE_NAME):
  File "/project/g89/cscs_demo/.easybuild/easybuild-framework/easybuild/tools/toolchain/toolchain.py", line 225, in get_software_root
    return self._get_software_multiple(names, self._get_software_root)
  File "/project/g89/cscs_demo/.easybuild/easybuild-framework/easybuild/tools/toolchain/toolchain.py", line 237, in _get_software_multiple
    res.append(function(name))
  File "/project/g89/cscs_demo/.easybuild/easybuild-framework/easybuild/toolchains/linalg/libsci.py", line 65, in _get_software_root
    raise EasyBuildError("Failed to determine install prefix for %s via $%s", name, env_var)
NameError: global name 'EasyBuildError' is not defined

When we do have a PrgEnv loaded, we get:

kehoste@daint101:~> module list
Currently Loaded Modulefiles:
  1) modules/3.2.10.3                       6) craype/2.4.0                          11) ugni/6.0-1.0502.10863.8.29.ari        16) dvs/2.5_0.9.0-1.0502.2188.1.116.ari   21) craype-sandybridge
  2) eswrap/1.1.0-1.020200.1231.0           7) totalview-support/1.1.4               12) pmi/5.0.7-1.0000.10678.155.25.ari     17) alps/5.2.4-2.0502.9774.31.11.ari      22) slurm
  3) switch/1.0-1.0502.60522.1.61.ari       8) totalview/8.11.0                      13) dmapp/7.0.1-1.0502.11080.8.76.ari     18) rca/1.0.0-2.0502.60530.1.62.ari       23) cray-mpich/7.2.2
  4) craype-network-aries                   9) cray-libsci/13.0.4                    14) gni-headers/4.0-1.0502.10859.7.8.ari  19) atp/1.8.2                             24) alps/5.2.4-2.0502.9822.32.1.ari
  5) cce/8.3.12                            10) udreg/2.3.2-1.0502.10518.2.17.ari     15) xpmem/0.1-2.0502.64982.5.3.ari        20) PrgEnv-cray/5.2.82                    25) ddt/5.1

kehoste@daint101:~> eb HPL-2.1-CrayGNU-2015.06-XC.eb -df
== temporary log file in case of crash /tmp/eb-U961X5/easybuild-wHAwbU.log
== processing EasyBuild easyconfig /users/kehoste/HPL-2.1-CrayGNU-2015.06-XC.eb
== building and installing HPL/2.1-CrayGNU-2015.06-XC...
== fetching files...
== creating build dir, resetting environment...
== unpacking...
== patching...
== preparing...
== configuring...
== building...
== FAILED: Installation ended unsuccessfully (build directory: /dev/shm/kehoste/HPL/2.1/CrayGNU-2015.06-XC): build failed (first 300 chars): cmd " make -j 16  TOPdir="/dev/shm/kehoste/HPL/2.1/CrayGNU-2015.06-XC/hpl-2.1/" CC="cc" MPICC="cc" LINKER="cc" LAlib="-lfftw3_mpi -lfftw3 " HPL_OPTS="-I/opt/cray/libsci/13.0.4/CRAY/83/x86_64/include -I/opt/cray/fftw/3.3.4.3/sandybridge/include -DUSING_FFTW" LINKFLAGS="-craype-verbose -O2 -L/opt/cray
== Results of the build can be found in the log file /tmp/eb-U961X5/easybuild-HPL-2.1-20151214.135506.FOath.log
ERROR: Build of /users/kehoste/HPL-2.1-CrayGNU-2015.06-XC.eb failed (err: 'build failed (first 300 chars): cmd " make -j 16  TOPdir="/dev/shm/kehoste/HPL/2.1/CrayGNU-2015.06-XC/hpl-2.1/" CC="cc" MPICC="cc" LINKER="cc" LAlib="-lfftw3_mpi -lfftw3 " HPL_OPTS="-I/opt/cray/libsci/13.0.4/CRAY/83/x86_64/include -I/opt/cray/fftw/3.3.4.3/sandybridge/include -DUSING_FFTW" LINKFLAGS="-craype-verbose -O2 -L/opt/cray')

cc @gppezzi

@boegel
Copy link
Member Author

boegel commented Dec 14, 2015

Actual problem in last case:

Error:
Unable to determine compiler version
.Make sure that a gnu module is loaded and that GNU_VERSION is defined
cc -o HPL_fprintf.o -c -DAdd_ -DF77_INTEGER=int -DStringSunStyle -I/opt/cray/libsci/13.0.4/CRAY/83/x86_64/include -I/opt/cray/fftw/3.3.4.3/sandybridge/include -DUSING_FFTW -I/dev/shm/kehoste/HPL/2.1/CrayGNU-2015.06-XC/hpl-2.1//include -I/dev/shm/kehoste/HPL/2.1/CrayGNU-2015.06-XC/hpl-2.1//include/UNKNOWN    -craype-verbose -O2  ../HPL_fprintf.c
make[2]: *** [HPL_dlacpy.o] Error 255
make[2]: *** Waiting for unfinished jobs....
Error:
Unable to determine compiler version
.Make sure that a gnu module is loaded and that GNU_VERSION is defined
make[2]: *** [HPL_dlatcpy.o] Error 255
Error:
Unable to determine compiler version
.Make sure that a gnu module is loaded and that GNU_VERSION is defined
make[2]: *** [HPL_fprintf.o] Error 255
make[2]: Leaving directory `/dev/shm/kehoste/HPL/2.1/CrayGNU-2015.06-XC/hpl-2.1/src/auxil/UNKNOWN'
make[1]: *** [build_src] Error 2
make[1]: Leaving directory `/dev/shm/kehoste/HPL/2.1/CrayGNU-2015.06-XC/hpl-2.1'
make: *** [build] Error 2
 (at easybuild/tools/run.py:397 in parse_cmd_output)

@boegel
Copy link
Member Author

boegel commented Dec 14, 2015

The problem seems to be that the modules tool does not respect the unload/load order as specified in the module file, see for example https://gist.github.com/boegel/7f724f7f69045f834392 .

The del os.environ[..] statements are all done at the end...

@rtmclay: is there a way to fix this?

@rtmclay
Copy link

rtmclay commented Dec 14, 2015

I don't think it is safe to load the PrgEnv-gnu/5.2.40 and then unload gcc and reload it. But to really tell what is going on, you'll need to find the exact place where in the CrayGnu modulefile it is failing. I think it will be inside one of the Cray modules and not in the one you are showing above.

@boegel
Copy link
Member Author

boegel commented Dec 14, 2015

@rtmclay: well, it's not failing in the sense that loading this module fails, but we're getting an environment that isn't what we think it should be.

How would you pinpoint the exact problem here? Also, why do things work when I have the is-loaded guard in place around the unload/load statements? I'm not sure I understand when why it does work in that case...

I'm seeing the same problem when using module swap rather than an unload follow by load.

@boegel boegel removed this from the v2.5.0 milestone Dec 15, 2015
@gppezzi
Copy link
Contributor

gppezzi commented Dec 15, 2015

@rtmclay gave a good hint: unloading PrgEnv-gnu and then reloading it seems to be the cause of this problem.

Strangely enough it works for the first time you load CrayGNU but it ruins your environment if you load it twice (and that' s probably what EB is internally doing in this case?).

I tried this workaround in order to avoid unloading it and by far this seems to work:

if { ![ is-loaded PrgEnv-gnu ] } {
   module load PrgEnv-gnu/5.2.82
} else {
   module swap PrgEnv-gnu PrgEnv-gnu/5.2.82
}

fix for PrgEnv-* unloading problem
@hpcugentbot
Copy link
Contributor

Easyblocks unit test suite FAILed.

See https://jenkins1.ugent.be/job/easybuild-easyblocks-pr-builder/1535/console for more details.

Please fix the reported issues by pushing additional commits to the branch corresponding with this pull request; contact @boegel if you're not sure what to do.

@boegel
Copy link
Member Author

boegel commented Jan 9, 2016

@gppezzi: we should pick this up again, to get it merged for EB v2.6.0...

@boegel
Copy link
Member Author

boegel commented Jan 19, 2016

Jenkins: test this please

@hpcugentbot
Copy link
Contributor

Easyblocks unit test suite FAILed.

See https://jenkins1.ugent.be/job/easybuild-easyblocks-pr-builder/1606/console for more details.

Please fix the reported issues by pushing additional commits to the branch corresponding with this pull request; contact @boegel if you're not sure what to do.

@hpcugentbot
Copy link
Contributor

Easyblocks unit test suite PASSed (see https://jenkins1.ugent.be/job/easybuild-easyblocks-pr-builder/1608/console for more details).

This pull request is now ready for review/testing.

Please try and find someone who can tackle this; contact @boegel if you're not sure what to do.

@hpcugentbot
Copy link
Contributor

Easyblocks unit test suite PASSed (see https://jenkins1.ugent.be/job/easybuild-easyblocks-pr-builder/1609/console for more details).

This pull request is now ready for review/testing.

Please try and find someone who can tackle this; contact @boegel if you're not sure what to do.

@boegel
Copy link
Member Author

boegel commented Jan 21, 2016

@gppezzi: I think this is good to go now, can you please retest/review/confirm?

@gppezzi
Copy link
Contributor

gppezzi commented Jan 21, 2016

lgtm

HPL basic tests passed on both Piz Daint and Piz Dora (see #2222).

I did some basic testing and I the environment problems caused by reloading PrgEnv-* seem to be fixed with this version.

I've also successfully used this easyblock to compile Python, including numpy on top of libsci.

Thanks a lot @boegel for all the support!!

@boegel
Copy link
Member Author

boegel commented Jan 21, 2016

@gppezzi: thanks for the feedback, I see no reason to hold this back any further

It would be great if @pforai is able to test this on another (non-CSCS) Cray system indeed, with the easyconfigs available in easybuilders/easybuild-easyconfigs#2222, but he can also do that with EasyBuild v2.6.0 very soon. ;-)

@hpcugentbot
Copy link
Contributor

Easyblocks unit test suite PASSed (see https://jenkins1.ugent.be/job/easybuild-easyblocks-pr-builder/1618/console for more details).

This pull request is now ready for review/testing.

Please try and find someone who can tackle this; contact @boegel if you're not sure what to do.

boegel added a commit that referenced this pull request Jan 21, 2016
generic easyblock for Cray toolchains
@boegel boegel merged commit fd2c093 into easybuilders:develop Jan 21, 2016
@boegel boegel deleted the craytc branch January 21, 2016 18:59
@gppezzi
Copy link
Contributor

gppezzi commented Feb 24, 2016

After hitting a couple of nasty bugs and after discussion with Cray, @pforai and @boegel, here's the new proposal for the module file.
Main changes are:

  • Stop pinning PrgEnv-* version: since cray always recommends to use the latest and swapping it inside module files is causing some weird side effects on the environment
  • Remove craype as dependency: this module should be backwards compatible and is version pinned on the PrgEnv
  • Remove fftw as dependency: in order to avoid changing the default Cray PrgEnv and to avoid bugs when compiling python with the fftw module loaded.
#%Module
proc ModulesHelp { } {
    puts stderr { Toolchain using Cray compiler wrapper, using PrgEnv-gnu module (PE release: June 2015).
 - Homepage: http://docs.cray.com/books/S-9407-1506
    }
}

module-whatis {Toolchain using Cray compiler wrapper, using PrgEnv-gnu module (PE release: June 2015).
 - Homepage: http://docs.cray.com/books/S-9407-1506}

set root /dev/shm/perettig/easybuild/software/CrayGNU/2015.06-XC

conflict CrayGNU
module unload PrgEnv-cray
module unload PrgEnv-intel
module unload PrgEnv-pgi

# next, load toolchain components
if { ![ is-loaded PrgEnv-gnu ] } {
    module load PrgEnv-gnu
}
if { [ is-loaded gcc ] } {
    module swap gcc gcc/4.8.2
}
if { ![ is-loaded gcc ] } {
    module load gcc/4.8.2
}
if { [ is-loaded cray-libsci ] } {
    module swap cray-libsci cray-libsci/13.0.4
}
if { ![ is-loaded cray-libsci ] } {
    module load cray-libsci/13.0.4
}
if { [ is-loaded cray-mpich ] } {
    module swap cray-mpich cray-mpich/7.2.2
}
if { ![ is-loaded cray-mpich ] } {
    module load cray-mpich/7.2.2
}

setenv  EBROOTCRAYGNU           "$root"
setenv  EBVERSIONCRAYGNU                "2015.06-XC"
setenv  EBDEVELCRAYGNU          "$root/easybuild/CrayGNU-2015.06-XC-easybuild-devel"

# Built with EasyBuild version 2.7.0.dev0-rf0df01cd35c92ff314c5875b4777f58e279854ef

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants