Dear all, 

Mid 2018 there was a discussion on the mailing list (subject 'Cuda supporting 
toolchains') on CUDA-supporting toolchains (gcccuda, fosscuda, intelcuda) vs 
using CUDA as a 'normal' dependency (and adding its version as a suffix). 

Advantage of a CUDA based toolchain is - at least in the case of fosscuda - an 
MPI built with CUDA support. 

One disadvantage in using CUDA-based toolchains is that if a high-level package 
requires e.g. fosscuda, we often need to create easyconfigs for a lot of the 
deps (because they only exist with foss or intel), because the foss toolchain 
is not a subtoolchain of fosscuda. Sure, we should probably push the community 
to not use 'higher' toolchains than needed for the package (i.e. don't use foss 
for non-mpi software), but in practice this still happens quite often. 

Another disadvantage is that we may want to update CUDA versions independently 
from toolchains (namely: more often) because of the relatively fast 
development. 

At the time of the previous discussion, there did not really seem to be 
consensus: some people preferred the CUDA-supporting toolchains (in conjunction 
with a policy to build things with the lowest possible toolchains, to maximize 
sharing deps with non-CUDA toolchains). Others seemed to favour the CUDA-as-dep 
approach for its flexibility (us at SURFsara included). 

However, if I check the repo for foss-2018b and fosscuda-2018b based 
EasyConfigs, I find only 3 EasyConfigs that use foss + CUDA-as-dep. On the 
other hand, there are 93 EasyConfigs for fosscuda. 

Have we as a community converged to CUDA-toolchains as a solution? And does 
that mean we will also keep pushing for EasyConfigs to be created at the lowest 
possible toolchains? What are the opinions/practices in other centers? 

Regards, 

Caspar van Leeuwen 


Reply via email to