Hi Kenneth,

Thanks for the MPI_MODULE_NAME suggestion.  I had earlier tried setting
that to my external module name, but ran into different errors and just
gave up.

When I set MPI_MODULE_NAME to an empty list, the OpenMPI toolchain module
hits an IndexError when trying to retrieve a software version (see
traceback below).  Since I'm specifying that information in an external
module metadata file, shouldn't the software version be taken from there?

Thanks,
Tim


ERROR: Traceback (most recent call last):
  File "/import/usrlocal/easybuild/2.8.2/software/EasyBuild/2.8.2/l
ib/python2.6/site-packages/easybuild_framework-2.8.2-py2.6.egg/easybuild/main.py",
line 114, in build_and_install_software
    (ec_res['success'], app_log, err) = build_and_install_one(ec, init_env)
  File "/import/usrlocal/easybuild/2.8.2/software/EasyBuild/2.8.2/l
ib/python2.6/site-packages/easybuild_framework-2.8.2-py2.6.
egg/easybuild/framework/easyblock.py", line 2363, in build_and_install_one
    result = app.run_all_steps(run_test_cases=run_test_cases)
  File "/import/usrlocal/easybuild/2.8.2/software/EasyBuild/2.8.2/l
ib/python2.6/site-packages/easybuild_framework-2.8.2-py2.6.
egg/easybuild/framework/easyblock.py", line 2279, in run_all_steps
    self.run_step(step_name, step_methods)
  File "/import/usrlocal/easybuild/2.8.2/software/EasyBuild/2.8.2/l
ib/python2.6/site-packages/easybuild_framework-2.8.2-py2.6.
egg/easybuild/framework/easyblock.py", line 2158, in run_step
    step_method(self)()
  File "/import/usrlocal/easybuild/2.8.2/software/EasyBuild/2.8.2/l
ib/python2.6/site-packages/easybuild_framework-2.8.2-py2.6.
egg/easybuild/framework/easyblock.py", line 1554, in prepare_step
    self.toolchain.prepare(self.cfg['onlytcmod'], silent=self.silent)
  File "/import/usrlocal/easybuild/2.8.2/software/EasyBuild/2.8.2/l
ib/python2.6/site-packages/easybuild_framework-2.8.2-py2.6.
egg/easybuild/tools/toolchain/toolchain.py", line 608, in prepare
    self.set_variables()
  File "/import/usrlocal/easybuild/2.8.2/software/EasyBuild/2.8.2/l
ib/python2.6/site-packages/easybuild_framework-2.8.2-py2.6.
egg/easybuild/tools/toolchain/compiler.py", line 154, in set_variables
    super(Compiler, self).set_variables()
  File "/import/usrlocal/easybuild/2.8.2/software/EasyBuild/2.8.2/l
ib/python2.6/site-packages/easybuild_framework-2.8.2-py2.6.
egg/easybuild/tools/toolchain/mpi.py", line 94, in set_variables
    self._set_mpi_compiler_variables()
  File "/import/usrlocal/easybuild/2.8.2/software/EasyBuild/2.8.2/l
ib/python2.6/site-packages/easybuild_framework-2.8.2-py2.6.
egg/easybuild/toolchains/mpi/openmpi.py", line 62, in
_set_mpi_compiler_variables
    ompi_ver = self.get_software_version(self.MPI_MODULE_NAME)[0]
IndexError: list index out of range


On Wed, Sep 7, 2016 at 3:32 AM, Kenneth Hoste <[email protected]>
wrote:

> Hi Tim,
>
> Welcome to the wonderful world of EasyBuild!
>
>
> On 07/09/16 01:29, Tim Slauson wrote:
>
>> Hello EasyBuilders,
>>
>> I'm trying out EasyBuild for the first time (version 2.8.2), and am
>> having trouble hooking in the vendor-provided MPI modules on one of our
>> clusters.  The modules all follow the same naming convention of
>> name/compiler/ver (e.g. openmpi/gnu/1.10.2, mvapich2-psm/intel/2.1, ...).
>> After reading about EXTERNAL_MODULE, I adapted the gompi-2016.06.eb
>> toolchain easyconfig:
>>
>> 3c3
>> < name = 'gompi'
>> ---
>> > name = 'pic-gompi'
>> 17c17
>> <     ('OpenMPI', '1.10.3', '', ('GCC', gccver)),
>> ---
>> >     ('openmpi/gnu/1.10.2', EXTERNAL_MODULE),
>>
>>
>> And wrote external module metadata:
>>
>> [openmpi/gnu/1.10.2]
>> name = OpenMPI
>> version = 1.10.2
>> prefix = MPI_HOME
>>
>>
>> And defined a new toolchain:
>>
>> from easybuild.toolchains.gompi import Gompi
>>
>> class PicGompi(Gompi):
>>     """PIC compiler toolchain with GNU compilers and OpenMPI"""
>>     NAME = 'pic-gompi'
>>
>>
>> This allows me to build a toolchain.  But when I run this:
>>
>> eb FFTW-3.3.4-gompi-2016.06.eb --try-toolchain=pic-gompi,2016.06
>>
>> I get this error:
>>
>> ERROR: Build of /tmp/eb-HkZNza/tweaked_easycon
>> figs/FFTW-3.3.4-pic-gompi-2016.06.eb failed (err: "build failed (first
>> 300 chars): List of toolchain dependency modules and toolchain definition
>> do not match (found ['GCC/5.4.0-2.26', 'openmpi/gnu/1.10.2'] vs expected
>> set(['GCC', 'OpenMPI']))")
>>
>> I get similar errors when repeating this process for the other
>> vendor-provided libraries.  Can somebody please point me in the right
>> direction?
>>
>
> You're hitting this because EasyBuild verifies the module for the
> toolchain with the definition of the toolchain.
> This is done using module names, see for example
> https://github.com/hpcugent/easybuild-framework/blob/master/
> easybuild/toolchains/mpi/openmpi.py#L44 .
>
> You should be able to fix your problem by including this in your pic-gompi
> toolchain definition (i.e. reset it to the default):
>
>     MPI_MODULE_NAME = []
>
> This should only affect the toolchain definition verification mechanism,
> nothing else.
>
>
> regards,
>
> Kenneth
>



-- 
Tim Slauson
GI/RCS
University of Alaska Fairbanks

Reply via email to