Hi Fotis,

Fotis Georgatos wrote:

Hi Martin,

On Jul 12, 2016, at 7:08 PM, Martin MOKREJŠ <[email protected]> wrote:
 Finally, I discovered Gentoo::RAP which has a bit cryptic documentation and the 
table at the top of thehttps://wiki.gentoo.org/wiki/Prefix/libc page drives me 
always crazy (I have more questions than which the table tries to 
document&explain). Gentoo::RAP uses Gentoo's MAIN portage repository (so less 
confusion for me but issues fixed in Gentoo::Prefix repository may still be broken 
in the MAIN tree ... ;)). You cannot get everything at once. What is very important 
for me, on Gentoo::RAP I got glibc-2.23 installed and more or less all apps 
including lots of java stuff can be run there. So, it is an amazing system how to 
get all the bells and whistles of Gentoo Linux on almost any platform.

wow, I didn’t know that this works:
* Prefix/libc essentially delivers one more isolation layer, at the level of 
glibc. [1]
The distribution/vector combinations here are quite a rich list: 
https://wiki.gentoo.org/wiki/Prefix/libc
This could have also helped to build Clang/3.4 on RHEL6.x w/out a patch, since 
glibc was the bottleneck!

I have sys-devel/clang-3.8.0-r100:0/3.8::gentoo installed on the Gentoo::RAP 
"system" (having the glibc-2.23)
but also sys-devel/clang-3.7.1-r100::gentoo_prefix I have just compiled against 
the old glibc-2.12 on the
Gentoo:Prefix approach. Maybe you want to backport some patches to EasyBuild if 
you have have issue to get
clang compiled on old libc systems. So, it is doable. ;)

In any case, EasyBuild is a variation on build systems, with a focus on HPC 
aims (ie. performance).
As an appetiser, have a check about how your FFTW library is provided via 
alternative build systems;
it may seem a triviality, but that is a prereq for, say, Molecular Dynamics 
codes on really large machines.
(namd, gromacs and the like)

Well, I think I am not up to answer all your good questions, but here is what 
the fftw package in Gentoo is able to handle. USE flags with a minus are those 
I have disabled on my laptop, but I could ask the system to enable any of them 
(almost any).

# emerge -pv fftw

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild   R    ] sci-libs/fftw-3.3.4:3.0/3::gentoo  USE="fortran mpi openmp threads (-altivec) -doc 
(-neon) -quad -static-libs {-test} (-zbus)" ABI_X86="32 (64) (-x32)" CPU_FLAGS_X86="avx 
sse sse2 -fma3 -fma4" 0 KiB
#

The USE flags are set globally in a make.conf file, but can be overridden per 
package in package.use config
file. So, I can enable globally mpi support in all apps but disable mpi support 
in a few at my will.


I can see why Prefix can get someone enthusiastic, yet if you had to pay the 
bill across 1000s of nodes,
you’d rather spend far more time in ensuring optimal maintainable builds. 
Furthermore, how would you do
rebuild a tree of tens of HPC applications, against a complex new toolchain 
(fi. cgmvolf) w/out a tool

I did not play with this myself but the emerge tool can create tarballs/rpms of 
the $DESTDIR with installed
files for each package, before that is move to the / of the filesystem (or to 
the $EPREFIX which is the
relocated path on Gentoo:Prefix installations. So, I think one can have easily 
one compile host and deploy
the compiled packages on a cluster. Moreover, one can use cccache and similar 
tools, also define hosts
which can serve precompiled packages (merely as I already noted above), so I 
think one can manage a cluster
even by deploying individual packages on each node (although deploying a whole 
image is a more common way
IMHO).

which can master such concepts? (esp. consider the difference CC vs MPICC). In 
EB, that is an one-liner.
Gentoo simply does not know things like MPI stack built with CUDA support over 
a given GCC and such.

For me, the following command enables MPI support in all packages I have:

USE=mpi emerge world

The emerge program respects the usual CC and CXX and F77 and F90 env variables 
to learn the compiler to be used,
so I can set CC=mpicc but IMHO it also works with CC=gcc because the emerge 
application passes to configure
--enable-mpi anyways thanks to the USE=mpi anyway.


To conclude, there is room for common approaches and more sharing of efforts 
across different build systems,
however we should not too quickly equate them and, always check the features of 
each one with each other.


Absolutely, but Gentoo gives you fully tuned binaries to your system if you 
care to set your CFLAGS/CXXFLAGS
properly, so the Gentoo:RAP approach gave me fully tuned binaries, resolved the 
dependencies, and abstracted
me from the RHEL6 stuff. Much faster then writing up hundreds of easybuild 
package definitions.

Now I will just recompile all apps with icc and if any succeeds the gcc-made 
binaries will be re-written on
my installation.

CC=icc CXX=icc USE="fftw fortran95 int64 mpi" emerge world
# Note: the 'emerge world' is the best approach, I need to learn some other 
arguments how to really get all currently installed apps, but the command would 
be quite similar


I will ask (CC:) the more advanced Gentoo devs if they would like to chim in 
into this discussion a promote
a bit the Gentoo features and nice building system, probably more advanced then 
LinuxFromScratch, etc. ;-)

Martin

Reply via email to