I agree with Bart here.
Minimizing toolchain dependencies is key. Don't build something with
Intel + OpenMPI + CUDA if it's something that should be built with GCC
(for example CMake or Autoconf)... it is just wasting time and space.
That's why I dislike the "intel" and "foss" toolchains and we typically
do not use them at Compute Canada, they include too many things. We have
a very large number of packages that don't care about MPI and should not
be built with a toolchain that requires MPI. Most packages are that way
in fact.
My 2 cents...
Maxime
On 18-03-21 11:48, Bart Oldeman wrote:
You can mitigate this issue by installing as much as possible at the
compiler level -- we do that at Compute Canada. I have some pending
work on the framework that could make that possible for Python too.
The major incompatibility between goolfc and goolf=foss is in the MPI
libraries, one with and one without CUDA support. But anything that
does not need MPI should not need recompilation.
Basically for goolfc you'd have this shiny alphabet soup:
gcccuda - gompic - goolfc
/ \ /
GCCcore - GCC - golf - golfc
\ \
gompi - goolf
ie:
goolf has two direct subtoolchains (golf=GNU+OpenBLAS+LAPACK+FFTW, and
gompi)
goolfc has two direct subtoolchains (golfc and gompic)
golfc has two direct subtoolchains (golf and gcccuda)
Then you can install Python (except for mpi4py) for the golf toolchain.
I got one headache when trying to implement this though: what about
FFTW in a hierarchy? There need to be two FFTW modules, one with (in
goolf) and one without MPI (in golf), and the majority of applications
(even those that use MPI) use the serial FFTW.
1. using a -serial suffix for the serial one, and no suffix for the
MPI one?
2. using a -mpi suffix for the MPI one, no suffix for serial.
3. using pFFTW and FFTW?
4. anything else? Should the MPI FFTW only contain the parallel
libraries (libfftw3*_mpi.*) or also a copy of the non-MPI ones?
Bart
On 21 March 2018 at 10:55, Jakob Schiøtz <[email protected]
<mailto:[email protected]>> wrote:
I very strongly agree with Jack on this. If only a single program
/ python module uses CUDA, it is wasteful to have to build and
install a new toolchain, and to rebuild everything on the system,
including Python and perhaps even X11 (if using matplotlib).
But there may be something I have overlooked.
Best regards
Jakob
> On 19 Mar 2018, at 15:49, Jack Perdue <[email protected]
<mailto:[email protected]>> wrote:
>
>
> On 03/19/2018 09:43 AM, Joachim Hein wrote:
>> Hi,
>>
>> I am currently installing tensorflow via easybuild (I assume
many of us do these days) and am trying to understand EasyBuild’s
ideas on toolchains supporting cuda.
>>
>> I looked at TensorFlow-1.5.0-goolfc-2017b-Python-3.6.3.eb,
which builds ontop of a toolchain containing GCC, Cuda (installed
as a compiler module), and OpenMPI, Blas, FFTW etc.
>>
>> I now noticed that there is a new
TensorFlow-1.6.0-foss-2018a-Python-3.6.4-CUDA-9.1.85.eb, which is
accepted into the development branch (PR 6016). This builds
ontop a “vanilla” foss-2018a toolchain, using a Cuda and cuDNN
modules installed as a core module (system compiler).
>>
>> I am wondering how do we want to organise us in future? Do we
want to continue with the goolfc idea or do we go for a “core”
cuda and cuDNN? I feel this needs standardising soonish. It is
also something I feel I need to document for my users, who want to
build their own cuda based software. What models should be loaded
to build software.
>>
>> Any comments, how we take this further?
>>
>> Best wishes
>> Joachim
>>
>
> FWIW ($.02) I'm partial to the latter approach since it allows
> more flexibility of CUDA version without redefining an entire
> toolchain (which then requres everything to be rebuilt (e.g. Python)
> whether they need CUDA or not).
>
> Jack Perdue
> Lead Systems Administrator
> High Performance Research Computing
> TAMU Division of Research
> [email protected] <mailto:[email protected]> http://hprc.tamu.edu
> HPRC Helpdesk: [email protected] <mailto:[email protected]>
>
>
>
--
Jakob Schiøtz, professor, Ph.D.
Department of Physics
Technical University of Denmark
DK-2800 Kongens Lyngby, Denmark
http://www.fysik.dtu.dk/~schiotz/
<http://www.fysik.dtu.dk/%7Eschiotz/>
--
Dr. Bart E. Oldeman | [email protected]
<mailto:[email protected]> | [email protected]
<mailto:[email protected]>
Scientific Computing Analyst / Analyste en calcul scientifique
McGill HPC Centre / Centre de Calcul Haute Performance de McGill |
http://www.hpc.mcgill.ca
Calcul Québec | http://www.calculquebec.ca
Compute/Calcul Canada | http://www.computecanada.ca
Tel/Tél: 514-396-8926 | Fax/Télécopieur: 514-396-8934
--
---------------------------------
Maxime Boissonneault
Analyste de calcul - Calcul Québec, Université Laval
Président - Comité de coordination du soutien à la recherche de Calcul Québec
Team lead - Research Support National Team, Compute Canada
Instructeur Software Carpentry
Ph. D. en physique