Re: nvidia-cuda-toolkit: nvcc needs to pass -fpie to compiler
Lumin, on dim. 07 mai 2017 02:29:46 +0000, wrote:
> I'm not sure whether this bug should be marked as serious. Since your test
> cases are mixing the default cc (GCC-6) and clang-3.8 together.
Well, there is no choice about this: not doing so leads to:
cc -c -o test.o test.c
nvcc -c test-cuda.cu -o test-cuda.o
ERROR: No supported gcc/g++ host compiler found, but clang-3.8 is available.
Use 'nvcc -ccbin clang-3.8' to use that instead.
This was documented in NEWS.Debian.gz. Having to use "--compiler-options
-fPIC" was however not documented in NEW.Debian.gz, at least that should
> I reproduced the failure you reported, but there is a simpler solution
> to the issue as shown below.
> test$ CC=clang-3.8 make
> clang-3.8 -c -o test.o test.c
> nvcc -ccbin clang-3.8 -c test-cuda.cu -o test-cuda.o
> clang-3.8 test.o test-cuda.o -lcudart -o test
Ok, but that's still something difficult to the user to work out, while
it is needed for basically any use of nvcc. Currently NEWS.Debian.gz
only advises to use -ccbin clang-3.8.
> Maybe this is a bug about GCC's linking process on a set of GCC-6 and
> clang-3.8 produced objects.
> Clang-3.8 is able to link a set of mixed object files while GCC-6
> fails to do so. I guess
> this bug is a GCC-6 bug and not related to CUDA?
Well, AIUI it's not considered a bug to require PIE, but a toolchain
> On the other hand, for instance, cuda application package
> "caffe-contrib" was thoroughly
> and finely compiled by clang-3.8 .
Sure, but application Makefiles are not ready for that, we had to
tinker them to use clang-3.8, and NEWS.Debian.gz only talks about the
invokation of nvcc, not the eventual linking issue.