On Sun, Mar 20, 2016 at 10:37 PM, dpchoudh . <dpcho...@gmail.com> wrote:
> I'd tend to agree with Gilles. I have written CUDA programs in pure C > (i.e. neither involving MPI nor C++) and a pure C based tool chain builds > the code successfully. So I don't see why CUDA should be intrinsically C++. > nvcc calls the C++ compiler for the non-CUDA compilation steps: http://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/ So even if you don't have any C++ code, the host code is still compiled by g++, which *usually* is free to insert calls to the C++ runtime. * A few years ago I worked on a C++ project but we were not allowed to link against the C++ library... And there is actually a way to tell g++ not to generate calls to the C++ runtime. However, it is not something as easy as flipping a switch so you will just have to linked against the std++ lib. :-) Rayson ================================================== Open Grid Scheduler - The Official Open Source Grid Engine http://gridscheduler.sourceforge.net/ http://gridscheduler.sourceforge.net/GridEngine/GridEngineCloud.html > > From the Makefile (that I had attached in my previous mail) the only CUDA > library being linked against is this: > > /usr/local/cuda/lib64/libcudart.so > and ldd on that shows this: > > [durga@smallMPI lib64]$ ldd libcudart.so > linux-vdso.so.1 => (0x00007ffe1e7f1000) > libc.so.6 => /lib64/libc.so.6 (0x00007ff7e4493000) > libdl.so.2 => /lib64/libdl.so.2 (0x00007ff7e428f000) > libpthread.so.0 => /lib64/libpthread.so.0 (0x00007ff7e4072000) > librt.so.1 => /lib64/librt.so.1 (0x00007ff7e3e6a000) > /lib64/ld-linux-x86-64.so.2 (0x00007ff7e4af3000) > > I don't see any C++ dependency here either. > > And finally, I don't think there is any version issue. This is a clean > CUDA 7.5 install directly from NVIDIA CUDA repo (for Redhat) and all > provided examples run fine with this installation. > > I believe there are NVIDIA employees in this list; hopefully one of them > will clarify. > > Thanks > Durga > > Life is complex. It has real and imaginary parts. > > On Sun, Mar 20, 2016 at 10:23 PM, Gilles Gouaillardet < > gilles.gouaillar...@gmail.com> wrote: > >> I am a bit puzzled... >> >> if only cuda uses the c++ std libraries, then it should depend on them >> (ldd libcudaxyz.so can be used to confirm that) >> and then linking with cuda lib should pull the c++ libs >> >> could there be a version issue ? >> e.g. the missing symbol is not provided by the version of the c++ >> lib that is pulled. >> that might occur if you are using cuda built for distro X on distro Y >> >> could you please double check this ? >> if everything should work, then i recommend you report this to nvidia >> >> Cheers, >> >> Gilles >> >> On Monday, March 21, 2016, Damien Hocking <dam...@0x544745.com> wrote: >> >>> Durga, >>> >>> The Cuda libraries use the C++ std libraries. That's the std::ios_base >>> errors.. You need the C++ linker to bring those in. >>> >>> Damien >>> >>> On March 20, 2016 9:15:47 AM "dpchoudh ." <dpcho...@gmail.com> wrote: >>> >>>> Hello all >>>> >>>> I downloaded some code samples from here: >>>> >>>> https://github.com/parallel-forall/code-samples/ >>>> >>>> and tried to build the subdirectory >>>> >>>> posts/cuda-aware-mpi-example/src >>>> >>>> in my CentOS 7 machine. >>>> >>>> I had to make several changes to the Makefile before it would build. >>>> The modified Makefile is attached (the make targets I am talking about are >>>> the 3rd and 4th from the bottom). Most of the modifications can be >>>> explained as possible platform specific variations (such as path >>>> differences betwen Ubuntu and CentOS), except the following: >>>> >>>> I had to use a C++ linker (mpic++) to link in the object files that >>>> were produced with C host compiler (mpicc) and CUDA compiler (nvcc). If I >>>> did not do this, (i.e. I stuck to mpicc for linking), I got the following >>>> link error: >>>> >>>> mpicc -L/usr/local/cuda/lib64 -lcudart -lm -o >>>> ../bin/jacobi_cuda_normal_mpi jacobi.o input.o host.o device.o >>>> cuda_normal_mpi.o >>>> device.o: In function `__static_initialization_and_destruction_0(int, >>>> int)': >>>> tmpxft_00004651_00000000-4_Device.cudafe1.cpp:(.text+0xd1e): undefined >>>> reference to `std::ios_base::Init::Init()' >>>> tmpxft_00004651_00000000-4_Device.cudafe1.cpp:(.text+0xd2d): undefined >>>> reference to `std::ios_base::Init::~Init()' >>>> collect2: error: ld returned 1 exit status >>>> >>>> Can someone please explain why would I need a C++ linker for object >>>> files that were generated using C compiler? Note that if I use mpic++ both >>>> for compiling and linking, there are no errors either. >>>> >>>> Thanks in advance >>>> Durga >>>> >>>> Life is complex. It has real and imaginary parts. >>>> _______________________________________________ >>>> users mailing list >>>> us...@open-mpi.org >>>> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users >>>> Link to this post: >>>> http://www.open-mpi.org/community/lists/users/2016/03/28760.php >>>> >>> >> _______________________________________________ >> users mailing list >> us...@open-mpi.org >> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users >> Link to this post: >> http://www.open-mpi.org/community/lists/users/2016/03/28762.php >> > > > _______________________________________________ > users mailing list > us...@open-mpi.org > Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/users > Link to this post: > http://www.open-mpi.org/community/lists/users/2016/03/28764.php >