Re: [CMake] Possible bug/incompatibility FindCUDA with Visual Studio 2017
Hi, Thanks for your pointers, problem solved. I have upgraded to CMake 3.9.1 (I don't think this matters though) and I switched to using the new CUDA CMake support as at your point 3). I am also using CUDA 9 RC which supports VS2017 (I was testing under CUDA 8 / CUDA 9 earlier, but just forgot to mention this). Now all builds successfully. I am attaching the updated CMakeLists.txt file for the record. Thanks, Best Regards, Andrea On 8/10/2017 4:28 PM, Robert Maynard wrote: So you are going to have two issues. 1. The FindCUDA module has not been updated to handle VS2017. The issue is that the VCInstallDir variable now returns a different relative path to the compiler than it previously did. If you can determine the new logic a patch fixing this behavior be great. 2. It doesn't look like CUDA 8.0 supports VS2017 ( http://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html#system-requirements ). 3. You could also look at using the new CMake 3.9 cuda support ( https://devblogs.nvidia.com/parallelforall/building-cuda-applications-cmake/ ). On Thu, Aug 10, 2017 at 5:49 AM, Andrea Borsicwrote: Hi All, I am working on this platform: Windows 10 64bit Visual Studio 2015 Community Edition Visual Studio 2017 Community Edition CUDA 8.0 CMake 3.9 I am in the middle of switching from VS2015 to VS2017, but CUDA projects fail to properly compile under VS2017 as the compiler/linker fail to find tools on the path setup by CMake. I believe this is bug/incompatibly of the CMake FindCUDA module with VS2017. To reproduce the problem I am attaching a tiny project main.cu is a minimal CUDA example from the web CMakeLists.txt is a CMake file that leads to a successful build under VS2015 and unsuccessful under VS2017 Output VS2015 is the output from building the project under VS2015 (all targets built OK) Output VS2017 is the output from building the project under VS2015 (1 target OK one target fails) I have noticed also that oddly under VS2017 an "x64" and "main.dir" directories are created outside the build dir, and at the level of the source directory. I thought of reporting this to the list, and any help is welcome, Thank you and Best Regards, Andrea -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake #include // // Nearly minimal CUDA example. // Compile with: // // nvcc -o example example.cu // #define N 1000 // // A function marked __global__ // runs on the GPU but can be called from // the CPU. // // This function multiplies the elements of an array // of ints by 2. // // The entire computation can be thought of as running // with one thread per array element with blockIdx.x // identifying the thread. // // The comparison i>>(da, db); // // Copy output array from GPU back to CPU. // cudaMemcpy(hb, db, N*sizeof(int), cudaMemcpyDeviceToHost); for (int i = 0; i
Re: [CMake] Possible bug/incompatibility FindCUDA with Visual Studio 2017
So you are going to have two issues. 1. The FindCUDA module has not been updated to handle VS2017. The issue is that the VCInstallDir variable now returns a different relative path to the compiler than it previously did. If you can determine the new logic a patch fixing this behavior be great. 2. It doesn't look like CUDA 8.0 supports VS2017 ( http://docs.nvidia.com/cuda/cuda-installation-guide-microsoft-windows/index.html#system-requirements ). 3. You could also look at using the new CMake 3.9 cuda support ( https://devblogs.nvidia.com/parallelforall/building-cuda-applications-cmake/ ). On Thu, Aug 10, 2017 at 5:49 AM, Andrea Borsicwrote: > Hi All, > > I am working on this platform: > > Windows 10 64bit > Visual Studio 2015 Community Edition > Visual Studio 2017 Community Edition > CUDA 8.0 > CMake 3.9 > > I am in the middle of switching from VS2015 to VS2017, but CUDA projects > fail to properly compile under VS2017 as the compiler/linker fail to find > tools on the path setup by CMake. I believe this is bug/incompatibly of the > CMake FindCUDA module with VS2017. > > To reproduce the problem I am attaching a tiny project > > main.cu is a minimal CUDA example from the web > CMakeLists.txt is a CMake file that leads to a successful build under VS2015 > and unsuccessful under VS2017 > Output VS2015 is the output from building the project under VS2015 (all > targets built OK) > Output VS2017 is the output from building the project under VS2015 (1 target > OK one target fails) > > I have noticed also that oddly under VS2017 an "x64" and "main.dir" > directories are created outside the build dir, and at the level of the > source directory. > > I thought of reporting this to the list, and any help is welcome, > > Thank you and Best Regards, > > Andrea > > > -- > > Powered by www.kitware.com > > Please keep messages on-topic and check the CMake FAQ at: > http://www.cmake.org/Wiki/CMake_FAQ > > Kitware offers various services to support the CMake community. For more > information on each offering, please visit: > > CMake Support: http://cmake.org/cmake/help/support.html > CMake Consulting: http://cmake.org/cmake/help/consulting.html > CMake Training Courses: http://cmake.org/cmake/help/training.html > > Visit other Kitware open-source projects at > http://www.kitware.com/opensource/opensource.html > > Follow this link to subscribe/unsubscribe: > http://public.kitware.com/mailman/listinfo/cmake -- Powered by www.kitware.com Please keep messages on-topic and check the CMake FAQ at: http://www.cmake.org/Wiki/CMake_FAQ Kitware offers various services to support the CMake community. For more information on each offering, please visit: CMake Support: http://cmake.org/cmake/help/support.html CMake Consulting: http://cmake.org/cmake/help/consulting.html CMake Training Courses: http://cmake.org/cmake/help/training.html Visit other Kitware open-source projects at http://www.kitware.com/opensource/opensource.html Follow this link to subscribe/unsubscribe: http://public.kitware.com/mailman/listinfo/cmake
[CMake] Possible bug/incompatibility FindCUDA with Visual Studio 2017
Hi All, I am working on this platform: * Windows 10 64bit * Visual Studio 2015 Community Edition * Visual Studio 2017 Community Edition * CUDA 8.0 * CMake 3.9 I am in the middle of switching from VS2015 to VS2017, but CUDA projects fail to properly compile under VS2017 as the compiler/linker fail to find tools on the path setup by CMake. I believe this is bug/incompatibly of the CMake FindCUDA module with VS2017. To reproduce the problem I am attaching a tiny project * main.cu is a minimal CUDA example from the web * CMakeLists.txt is a CMake file that leads to a successful build under VS2015 and unsuccessful under VS2017 * Output VS2015 is the output from building the project under VS2015 (all targets built OK) * Output VS2017 is the output from building the project under VS2015 (1 target OK one target fails) I have noticed also that oddly under VS2017 an "x64" and "main.dir" directories are created outside the build dir, and at the level of the source directory. I thought of reporting this to the list, and any help is welcome, Thank you and Best Regards, Andrea PROJECT (Test) CMAKE_MINIMUM_REQUIRED(VERSION 3.1) FIND_PACKAGE(CUDA REQUIRED) SET(CUDA_NVCC_FLAGS "-arch=sm_35" CACHE STRING "nvcc flags" FORCE) CUDA_ADD_EXECUTABLE(main main.cu) #include // // Nearly minimal CUDA example. // Compile with: // // nvcc -o example example.cu // #define N 1000 // // A function marked __global__ // runs on the GPU but can be called from // the CPU. // // This function multiplies the elements of an array // of ints by 2. // // The entire computation can be thought of as running // with one thread per array element with blockIdx.x // identifying the thread. // // The comparison i>>(da, db); // // Copy output array from GPU back to CPU. // cudaMemcpy(hb, db, N*sizeof(int), cudaMemcpyDeviceToHost); for (int i = 0; i-- Build started: Project: ZERO_CHECK, Configuration: Debug x64 -- 1> Checking Build System 1> CMake does not need to re-run because D:/Dropbox/NES_Projects_Technical/Active/HP-EIT/Test Cmake VS2017/build_win64_vs2015_cuda8/CMakeFiles/generate.stamp is up-to-date. 2>-- Build started: Project: main, Configuration: Debug x64 -- 2> Building NVCC (Device) object CMakeFiles/main.dir/Debug/main_generated_main.cu.obj 2> main.cu 2> main.cu 2> Building Custom Rule D:/Dropbox/NES_Projects_Technical/Active/HP-EIT/Test Cmake VS2017/src/CMakeLists.txt 2> CMake is re-running because D:/Dropbox/NES_Projects_Technical/Active/HP-EIT/Test Cmake VS2017/build_win64_vs2015_cuda8/CMakeFiles/generate.stamp is out-of-date. 2>the file 'D:/Dropbox/NES_Projects_Technical/Active/HP-EIT/Test Cmake VS2017/build_win64_vs2015_cuda8/CMakeFiles/main.dir/main_generated_main.cu.obj.depend' 2>is newer than 'D:/Dropbox/NES_Projects_Technical/Active/HP-EIT/Test Cmake VS2017/build_win64_vs2015_cuda8/CMakeFiles/generate.stamp.depend' 2>result='-1' 2> -- Configuring done 2> -- Generating done 2> -- Build files have been written to: D:/Dropbox/NES_Projects_Technical/Active/HP-EIT/Test Cmake VS2017/build_win64_vs2015_cuda8 2> Creating library D:/Dropbox/NES_Projects_Technical/Active/HP-EIT/Test Cmake VS2017/build_win64_vs2015_cuda8/Debug/main.lib and object D:/Dropbox/NES_Projects_Technical/Active/HP-EIT/Test Cmake VS2017/build_win64_vs2015_cuda8/Debug/main.exp 2> main.vcxproj -> D:\Dropbox\NES_Projects_Technical\Active\HP-EIT\Test Cmake VS2017\build_win64_vs2015_cuda8\Debug\main.exe 2> main.vcxproj -> D:/Dropbox/NES_Projects_Technical/Active/HP-EIT/Test Cmake VS2017/build_win64_vs2015_cuda8/Debug/main.pdb (Full PDB) 3>-- Skipped Build: Project: ALL_BUILD, Configuration: Debug x64 -- 3>Project not selected to build for this solution configuration == Build: 2 succeeded, 0 failed, 0 up-to-date, 1 skipped ==1>-- Build started: Project: ZERO_CHECK, Configuration: Debug x64 -- 1>Checking Build System 1>CMake does not need to re-run because D:/Dropbox/NES_Projects_Technical/Active/HP-EIT/Test Cmake VS2017/build_win64_vs2017_cuda8/CMakeFiles/generate.stamp is up-to-date. 2>-- Build started: Project: main, Configuration: Debug x64 -- 2>Building NVCC (Device) object CMakeFiles/main.dir/Debug/main_generated_main.cu.obj 2>Failed to run C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/VC/bin (The system cannot find the file specified. 2> 2>). 2>CMake Error at main_generated_main.cu.obj.Debug.cmake:222 (message): 2> Error generating D:/Dropbox/NES_Projects_Technical/Active/HP-EIT/Test Cmake 2> VS2017/build_win64_vs2017_cuda8/CMakeFiles/main.dir//Debug/main_generated_main.cu.obj 2> 2> 2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Microsoft.CppCommon.targets(171,5): error MSB6006: