As Bernd & Alan suggest, letting EasyBuild create a wrapper module for the toolchain components you already have installed is another option, but that may be overkill since you already have modules in place...

Also, it's not going to help much if the toolchain you compose using external installations isn't exactly what EasyBuild expects.


regards,

Kenneth

On 18/05/2018 11:45, Alan O'Cais wrote:
Dear Samuel,

Components of a toolchain are not ordinary dependencies and are treated in a special way by EB, which expects them to be present in a particular manner. I did quite a bit of work on the system compiler and system MPI easyblocks a few months back. The systemcompiler supports GCC and Intel compilers (if you have the compilers in your path it should figure out the rest). Examples of use of this and the systemmpi easyblock can be found in https://github.com/easybuilders/easybuild-easyconfigs/pull/4136 . Since this is already merged, you will be able to wrap your intel compilers with  eb iccifort-system-GCC-system-2.29.eb <https://github.com/easybuilders/easybuild-easyconfigs/pull/4136/files#diff-d3414ec582f96e5a4975744e03ac5e3e> (this will also wrap your system GCC and build binutils 2.29)

The systemmpi easyblock would need work for your use case, that easyblock <https://github.com/easybuilders/easybuild-easyblocks/blob/master/easybuild/easyblocks/generic/systemmpi.py> would need to be extended to support MVAPICH2 (currently it supports OpenMPI and IntelMPI).

For the maths libraries there is currently no system easyblock available, that would have to be written from scratch.

Kind regards,

Alan

On 18 May 2018 at 11:19, Bernd Mohr <[email protected] <mailto:[email protected]>> wrote:

    Dear Samuel,

    I guess the simplest way to achieve what you want is to create EasyBuild
    modules for your compiler and MPI installed outside of EasyBuild
    with the "SystemCompiler" and "SystemMPI" easyblocks.

    Bernd

    On Thu, May 17, 2018 at 10:25:10PM +0200, [email protected]
    <mailto:[email protected]> wrote:
     > Hello,
     >
     > I am new to EasyBuild and am trying to create a custom toolchain
    which uses
     > external dependencies where the compiler and MPI are have
    manually created
     > modules outside of Easybuild.
     >
     > I created an easyconfig file imv2.eb:
     > easyblock = "Toolchain"
     > name = 'imv2'
     > version = '1.1.2'
     > homepage =
    'http://software.intel.com/en-us/intel-cluster-toolkit-compiler/
    <http://software.intel.com/en-us/intel-cluster-toolkit-compiler/>'
     > description = """Intel Cluster Toolkit Compiler Edition provides
    Intel C/C++
     > and Fortran compilers, Intel MPI & Intel MKL."""
     > toolchain = {'name': 'dummy', 'version': 'dummy'}
     > dependencies = [                                         #
    version/released
     >     ('intel/18.0.0', EXTERNAL_MODULE),
     >     ('mvapich2/2.3rc2', EXTERNAL_MODULE),
     > ]
     > moduleclass = 'toolchain'
     > module_depends_on = {('intel/18.0.0'), ('mvapich2/2.3rc2')}
     >
     > and easyblock:
     > from easybuild.toolchains.mpi.mvapich2 import Mvapich2
     > from easybuild.toolchains.fft.intelfftw import IntelFFTW
     > from easybuild.toolchains.linalg.intelmkl import IntelMKL
     > from easybuild.toolchains.iccifort import IccIfort
     >
     > class Imv2(IccIfort, Mvapich2, IntelMKL, IntelFFTW):
     >     """
     >     Compiler toolchain with Intel compilers (icc/ifort), MVAPICH2
    MPI,
     >     Intel Math Kernel Library (MKL) and Intel FFTW wrappers.
     >     """
     >     NAME = 'imv2'
     >     SUBTOOLCHAIN = IccIfort.NAME
     >
     > However when I try installing a package that depends on this
    toolchain I get
     > the following message:
     >
     > FAILED: Installation ended unsuccessfully (build directory:
    /users/PZS0530/
     > skhuvis/.local/easybuild/build/ScaLAPACK/2.0.2/imv2-1.1.2): build
    failed
     > (first 300 chars): List of toolchain dependency modules and toolchain
     > definition do not match (found ['intel/18.0.0',
    'mvapich2/2.3rc2'] vs expected
     > set(['MVAPICH2', 'icc', 'imkl', 'ifort']))
     >
     > What would be the correct way to create this module to use
    external modules?
     >
     > Thank you,
     > Samuel Khuvis
     > Scientific Applications Engineer
     > Ohio Supercomputer Center (OSC)
     > A member of the Ohio Technology Consortium
     > 1224 Kinnear Road, Columbus, Ohio 43212

    --
    Dr.-Ing. Bernd Mohr
    Juelich Supercomputing Centre
    Institute for Advanced Simulation

    E-Mail: [email protected] <mailto:[email protected]>
    WWW:
    http://www.fz-juelich.de/SharedDocs/Personen/IAS/JSC/EN/staff/mohr_b.html
    <http://www.fz-juelich.de/SharedDocs/Personen/IAS/JSC/EN/staff/mohr_b.html>


    
------------------------------------------------------------------------------------------------
    
------------------------------------------------------------------------------------------------
    Forschungszentrum Juelich GmbH
    52425 Juelich
    Sitz der Gesellschaft: Juelich
    Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
    Vorsitzender des Aufsichtsrats: MinDir Dr. Karl Eugen Huthmacher
    Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),
    Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
    Prof. Dr. Sebastian M. Schmidt
    
------------------------------------------------------------------------------------------------
    
------------------------------------------------------------------------------------------------




--
Dr. Alan O'Cais
E-CAM Software Manager
Juelich Supercomputing Centre
Forschungszentrum Juelich GmbH
52425 Juelich, Germany

Phone: +49 2461 61 5213
Fax: +49 2461 61 6656
E-mail: [email protected] <mailto:[email protected]>
WWW: http://www.fz-juelich.de/ias/jsc/EN

Reply via email to