Hi Joachim, Bart, all,

First: congrats for touching this; it has been in the wishlist of so many 
people for quite a while:
[1] https://www.google.co.uk/search?q=easybuild+pgi+gcc#q=easybuild+pgi+gnu

Second, watch out, in case you need to build against ACML+ScalaPACK, because 
you might need to refer to:
[2] 
http://glennklockwood.blogspot.co.uk/2014/02/quantum-espresso-compiling-and-choice.html
If so, that would make you to want to have a look at examples implementing [3] 
below.

Finally, according to the following, "The PGI C++ compiler is substantially 
compatible with GNU GCC 4.8 g++":
https://www.pgroup.com/products/pgiworkstation.htm
and also http://www.pgroup.com/doc/pgiinstall.pdf
"Any changes to your gcc compilers requires you to reinstall your PGI 
compilers."
my understanding is, that for perfectly reproducible builds you'd need a 
PGI+GCC fused toolchain, 
as visible in toolchain examples [4] below. 4.9 SHOULD be compatible with 4.8, 
but I'd consider both cases,
in case you wish to remain on the supported side of your vendor's 
recommendations.

IMHO, the major message you need here is that you'd want to spend some time 
examining these areas:
https://github.com/hpcugent/easybuild-framework/tree/master/easybuild/toolchains
https://github.com/hpcugent/easybuild-framework/tree/master/easybuild/toolchains/compiler
That should answer your question. ref, `eb --list-toolchains`.

Because, PGI implements also a CUDA layer, I'd expect `goolfc` to be of much 
interest, too 
(fi. MPI against CUDA etc, see `eb GROMACS-4.6.5-goolfc-2.6.10-hybrid.eb -Dr`; 
notice Openmpi against gcccuda?).

TMI -I'd agree immediately- yet it's better to have all the information and 
know all the options, in advance!
This is a good moment to ask: are you trying to build GROMACS or QE, against 
PGI or, something else?

F.

p.s. / Tip of the day: Prefer a flat namespace while experimenting on this and 
only after you are happy 
with the build via easybuild go for hierarchical; fighting on two fronts at the 
same time is not helping anybody!

[3]
```
$ eb gmacml-1.7.0.eb -Dr
[...]
== temporary log file in case of crash /tmp/eb-cN7_ot/easybuild-VYnIjl.log
Dry run: printing build status of easyconfigs and dependencies
CFGS=[...]/HPCBIOS/20160201/software/EasyBuild/2.6.0/lib/python2.6/site-packages/easybuild_easyconfigs-2.6.0-py2.6.egg/easybuild/easyconfigs
 * [x] $CFGS/g/GCC/GCC-4.7.2.eb (module: GCC/4.7.2)
 * [ ] $CFGS/a/ACML/ACML-5.2.0-gfortran-64bit.eb (module: 
ACML/5.2.0-gfortran-64bit)
 * [ ] $CFGS/m/M4/M4-1.4.16-GCC-4.7.2.eb (module: M4/1.4.16-GCC-4.7.2)
 * [ ] $CFGS/b/Bison/Bison-2.7-GCC-4.7.2.eb (module: Bison/2.7-GCC-4.7.2)
 * [ ] $CFGS/m/MVAPICH2/MVAPICH2-1.9a2-GCC-4.7.2.eb (module: 
MVAPICH2/1.9a2-GCC-4.7.2)
 * [ ] $CFGS/g/gmvapich2/gmvapich2-1.7.9a2.eb (module: gmvapich2/1.7.9a2)
 * [ ] $CFGS/b/BLACS/BLACS-1.1-gmvapich2-1.7.9a2.eb (module: 
BLACS/1.1-gmvapich2-1.7.9a2)
 * [ ] 
$CFGS/s/ScaLAPACK/ScaLAPACK-2.0.2-gmvapich2-1.7.9a2-ACML-5.2.0-gfortran-64bit.eb
 (module: ScaLAPACK/2.0.2-gmvapich2-1.7.9a2-ACML-5.2.0-gfortran-64bit)
 * [ ] $CFGS/f/FFTW/FFTW-3.3.2-gmvapich2-1.7.9a2.eb (module: 
FFTW/3.3.2-gmvapich2-1.7.9a2)
 * [ ] $CFGS/g/gmacml/gmacml-1.7.0.eb (module: gmacml/1.7.0)
== Temporary log file(s) /tmp/eb-cN7_ot/easybuild-VYnIjl.log* have been removed.
== Temporary directory /tmp/eb-cN7_ot has been removed.
```

[4]

```
$ eb iompi-2015.01.eb -Dr
== temporary log file in case of crash /tmp/eb-a_zQYk/easybuild-nTooen.log
Dry run: printing build status of easyconfigs and dependencies
CFGS=[...]/HPCBIOS/20160201/software/EasyBuild/2.6.0/lib/python2.6/site-packages/easybuild_easyconfigs-2.6.0-py2.6.egg/easybuild/easyconfigs
 * [x] $CFGS/g/GCC/GCC-4.9.2.eb (module: GCC/4.9.2)
 * [x] $CFGS/i/icc/icc-2015.1.133-GCC-4.9.2.eb (module: 
icc/2015.1.133-GCC-4.9.2)
 * [x] $CFGS/i/ifort/ifort-2015.1.133-GCC-4.9.2.eb (module: 
ifort/2015.1.133-GCC-4.9.2)
 * [x] $CFGS/i/iccifort/iccifort-2015.1.133-GCC-4.9.2.eb (module: 
iccifort/2015.1.133-GCC-4.9.2)
 * [ ] $CFGS/h/hwloc/hwloc-1.10.0-iccifort-2015.1.133-GCC-4.9.2.eb (module: 
hwloc/1.10.0-iccifort-2015.1.133-GCC-4.9.2)
 * [ ] $CFGS/o/OpenMPI/OpenMPI-1.8.4-iccifort-2015.1.133-GCC-4.9.2.eb (module: 
OpenMPI/1.8.4-iccifort-2015.1.133-GCC-4.9.2)
 * [ ] $CFGS/i/iompi/iompi-2015.01.eb (module: iompi/2015.01)
== Temporary log file(s) /tmp/eb-a_zQYk/easybuild-nTooen.log* have been removed.
== Temporary directory /tmp/eb-a_zQYk has been removed.
```

--
echo "sysadmin know better bash than english" | sed s/min/mins/ \
        | sed 's/better bash/bash better/' # Yelling in a CERN forum


From: [email protected] [[email protected]] on 
behalf of Joachim Hein [[email protected]]
Sent: Thursday, February 11, 2016 16:34
To: [email protected]
Subject: Re: [easybuild] How to promote a package to a toolchain?

Hi Bart,

Cool.  Thanks for providing the PGI in first place.

There must be more to this.  To build the openmpi, and looking into 
$CFGS2/o/OpenMPI/OpenMPI-1.10.2-GCC-4.9.3-2.25.eb it seems I need a
 PGI toolchain.  It seems the GCC is a compiler module and a toolchain.  What I 
got from your PGI easyconfig is just a compiler module.  I am currently looking 
how to create a PGI compiler module which is known to EB as a toolchain.  

Asked differently, how do you build OpenMPI for PGI without a plain PGI 
toolchain?  Declaring PGI as a dependency would have side effects in a 
hierarchical module tree.  

When looking at eb --list-toolchains, there are a lot of things we have not 
build on our system.  So there must be a repository of known toolchains. 
Studying things I have not been able to spot how that thing is generated.

Best wishes
  Joachim

Reply via email to