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

