On Sun, Jan 10, 2010 at 3:50 PM, Luke Parkinson <lparkin...@vpac.org> wrote:
> > ----- "James Bigler" <jamesbig...@gmail.com> wrote: > > > On Thu, Jan 7, 2010 at 8:52 PM, Luke Parkinson < lparkin...@vpac.org > > > wrote: > > > > ----- "James Bigler" < jamesbig...@gmail.com > wrote: > > > On Wed, Jan 6, 2010 at 11:00 PM, Luke Parkinson < > > lparkin...@vpac.org > wrote: > > > > > > > > > > Hello Everyone, > > > > > > I apologise in advance if this is the wrong way to revive an old > > topic, but I wasn't sure how to reply to old threads in the mailing > > list and I'm new to this list. I'm part of a team of developers > > looking at integrating CUDA into the Insight Toolkit ( > > http://www.itk.org/ ). People subscribing to the mailing list over > > there might have heard from my colleague. > > > > > > Thanks to James Bigler and his FindCUDA.cmake module, we have been > > able to get CUDA and ITK to link into the executable, but we're having > > a similar problem to the previous post (included below just in case). > > I have created several 'build environments' using this module with my > > own modifications that include the SDK (as an aside, can anyone point > > me in the direction of code that integrates C++ and CUDA without using > > cutil.h or cutil_inline.h?). It works brilliantly with just the CUDA > > SDK, and the SDK plus our own C++ CUDA utility programs, but when we > > include the ITK in the configuration, building gives errors exactly > > like those above. I've attached my modifications to the FindCUDA.cmake > > module (with a diff), and the 'CMakeLists.txt's we're using in the > > root and source directories. > > > > > > We got the original FindCUDA.cmake from the svn repository, and > > based our code on the driver examples. When we add our own CUDA/C++ > > code (files omitted as code is still under development, permission is > > required), we get the same errors as mentioned previously, along the > > lines of 'warning: comparison between signed and unsigned integer > > expressions'. > > > > > > > > > > Just including ITK (without our own code, using the provided driver > > code examples) > > > [Attached the corresponding files as ITKOnly_FindCUDA.cmake, > > ITKOnly_root_CMakeLists.txt, ITKOnly_src_CMakeLists.txt] > > > > > > Any ideas or suggestions would be helpful. This isn't crippling > > (only warnings), but it is annoying and could lead to problems later > > on if it has to do with how the CMake module deals with C/C++ code. I > > also noticed with that same module that there are a few variables that > > don't seem to do anything. The example I found was > > CUDA_INCLUDE_DIRECTORIES (deprecated by CUDA_INCLUDE_DIRS?). I assume > > that svn version was the most up-to-date, please let me know if I am > > wrong. > > > > > > snip... > > > > > > What versions of CUDA are you using? 2.3 or a 3.0 beta? > > > > > > Also, could you send the output of 'make VERBOSE=1' with > > CUDA_NVCC_FLAGS=-v for a single object compilation that has these > > warning? I would like to determine at which point these flags are > > causing problems. > > > > > > You could also attach (if possible) the cmake build script that is > > invoked by FindCUDA for the same object? > > > > > > Also, please make sure that CUDA_HOST_COMPILATION_CPP is ON (this > > can also be verified by me with the cuda_compile....cmake file you can > > attach). > > > > > > There is also the CUDA_PROPAGATE_HOST_FLAGS that you could turn off, > > if you wish to manage all the host flag propagation manually by using > > the OPTION -Xcompiler combination. > > > > > > James > > > > > The CMake build script is identicle to the others I posted, just > > different source files and executable names. I included it anyway > > though, in case there was something I missed. I also double-checked > > the CUDA_HOST_COMPILATION flag, it's definitely set to 1. If you still > > think it would help, where can I find cuda_compile.cmake? > > > > I've attached the complete 'make VERBOSE=1' for both the > > FindCUDA.cmake sample code, and one with some of the warnings we've > > been getting for our own code. The CMakeCache.txt is from the ITK > > build I'm using, so you can see some of the variables it had defined > > internally. If you've seen the CMakeLists.txt I sent yesterday, it > > includes an ITK file USE_ITK_FILE (it's just in the recommendded > > build, points to the attached UseITK.cmake), which is where the new > > compile flags are introduced. > > > > Thanks for the tip about the CUDA_PROPAGATE_HOST_FLAGS and OPTION > > -Xcompiler, I'll try it out if all else fails. And thanks for the > > quick reply and you help with this, > > > > Luke > > > > > > > > Thanks. If it's possible, I need the output after adding the -v > > argument to the CUDA_NVCC_FLAGS. This will show all the compilation > > steps from nvcc and then we can see what commands nvcc is passing to > > the compiler as well as what source files its using. > > > > Also, does it produce the warning when you don't specify -Wall? You > > may be able to suppress this flag with a -Wno-all for CUDA code. > > > > The cuda_compile.cmake file I talked about is part of the build > > system. Each CUDA file generates its own compilation script which is > > then invoked by the build system. The one for test_bin.cu in the svn > > test system should be found here: > > > > build/src/CMakeFiles/cuda_compile_generated_test_bin.cu.obj.cmake > > > > This file contains all the parameters (well most of them) that are > > used to compile the CUDA file. You don't have to send it to me now. I > > can see what I need to from the verbose output. > > > > Thanks, > > James > > The output I attached was produced with the '-v' flag argument added to the > CUDA_NVCC_FLAGS variable. If the output is not what you expected, could it > be that the ITK variables are overwriting the FindCUDA.cmake flags? > > I tried adding -Wno-all to CUDA_NVCC_FLAGS along with -v, but it wouldn't > compile, saying 'unknown flag 'v -w'' or 'v -Wno-all'. I think there's > definitely something happening with that variable, because when I added both > options to the CMAKE_CXX_FLAGS variable, it worked fine. I'll post the > output with just -v in the CMAKE_CXX_FLAGS variable, just in case it helps. > > By itself in the CMAKE_CXX_FLAGS variable, -w suppresses every warning but > "cc1: warning: command line option "-Wno-deprecated" is valid for > C++/Java/ObjC++ but not for C", and with -Wno-all I get "cc1plus: error: > unrecognized command line option "-Wno-all"" with all the old warnings. But > that's somewhat helpful, since that means that passing -w in CMAKE_CXX_FLAGS > makes it through to nvcc and blocks all the C++ warnings there. > > Hopefully the output I got by putting -v in the CMAKE_CXX_FLAGS variable > will help. > > Luke > This output looks like you put the -v in the CXX flags which isn't what I needed. I needed the -v flag passed to NVCC. You can add the -v flag to CUDA_NVCC_FLAGS from the GUI or ccmake. Also, -Wno-all is a CXX flag, not a NVCC flag. Adding it to CUDA_NVCC_FLAGS will make NVCC fail as you discovered. If you want to pass the flag to the CXX compiler with a NVCC flag you need to add -Xcompiler;-Wno-all to CUDA_NVCC_FLAGS. The -Xcompiler tells NVCC to pass the next flag to CXX compiler. Alternatively, you could edit the CMAKE_CXX_FLAGS or CMAKE_C_FLAGS to include -Wno-all which would then be automatically passed to nvcc via -Xcompiler. James
_______________________________________________ Powered by www.kitware.com Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Follow this link to subscribe/unsubscribe: http://www.cmake.org/mailman/listinfo/cmake