CMAKE doesn't pass NVCC flags?

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

CMAKE doesn't pass NVCC flags?

Quang Ha
So, it doesn't seem that my setting in NVCC flags is being used:

In CMakeLists.txt:

project(tangram LANGUAGES CXX CUDA)
[...]

    FIND_PACKAGE(CUDA REQUIRED)
    if(CUDA_FOUND)
      add_definitions(-DCUDA_CALLABLE="__host__ __device__")
      set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-Xcompiler="-fopenmp -fPIC")
      set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};--std=c++11 --expt-relaxed-constexpr)
      set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-gencode arch=compute_70,code=sm_70)
      set(CUDA_PROPAGATE_HOST_FLAGS ON)
      set(CUDA_SEPARABLE_COMPILATION OFF)
      message(STATUS "CUDA include directories ${CUDA_INCLUDE_DIRS}")
      message(STATUS "Overwriting THRUST_DIR to point to ${CUDA_INCLUDE_DIRS}/thrust")
      set(THRUST_DIR "${CUDA_INCLUDE_DIRS}")
      set(EXTRA_LIBS ${CUDA_LIBRARIES})
      message("CUDA flags" ${CUDA_NVCC_FLAGS})
    else(CUDA_FOUND)
      message(FATAL "CUDA not found")
    endif(CUDA_FOUND)
[...]

Then, at cmake stage:
[...]
-- Overwriting THRUST_DIR to point to /projects/opt/centos7/cuda/9.0/include/thrust
CUDA flags-Xcompiler="-fopenmp -fPIC"--std=c++11--expt-relaxed-constexpr-gencodearch=compute_70,code=sm_70
-- Adding application directory app
[...]

But then, build fail, and when I do make VERBOSE=1:
[...]
[ 60%] Building CUDA object app/simple-vfgen-cuda/CMakeFiles/simple-vfgen-cuda.dir/simple-vfgen-cuda.cu.o
cd /home/qth20/develop/tangram/build/app/simple-vfgen-cuda && /projects/opt/centos7/cuda/9.0/bin/nvcc  -DCUDA_CALLABLE="\"__host__ __device__\"" -DHAVE_LAPACKE -DTHRUST -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_CUDA -DTHRUST_HOST_SYSTEM=THRUST_HOST_SYSTEM_OMP -I/home/qth20/develop/tangram -I/home/qth20/develop/tangram/build -I/home/qth20/develop/tangram/cinch/logging -I/home/qth20/installed/jali/include -I/home/qth20/installed/jali-tpls/include -I/home/qth20/installed/jali-tpls/trilinos-12-10-1/include -I/projects/opt/centos7/openmpi/3.1.0-gcc_8.1.0/include -I/home/qth20/installed/jali-tpls/trilinos-12-10-1/lib/cmake/Zoltan/../../../include -I/home/qth20/installed/jali-tpls/include/UnitTest++ -I/usr/include/lapacke -I/home/qth20/installed/xmof2d/include -I/projects/opt/centos7/cuda/9.0/include  -O3 -DNDEBUG   -std=c++11 -x cu -c /home/qth20/develop/tangram/app/simple-vfgen-cuda/simple-vfgen-cuda.cu -o CMakeFiles/simple-vfgen-cuda.dir/simple-vfgen-cuda.cu.o
[...]

None of the flags was passed into nvcc. This is with cmake/3.11.1. Does upgrading to 3.12 recommended to solve the issue?

Thanks,
Quang

--

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:
https://cmake.org/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: CMAKE doesn't pass NVCC flags?

Stephen McDowell
I think you are mixing old and new approaches. Since you have enabled the CUDA language (via your project(...) call), you should be using either CUDAFLAGS or CMAKE_CUDA_FLAGS.

I think CUDA_NVCC_FLAGS is only used for the old cuda_add_library or executable functions.

Note that finding the cuda package should no longer be necessary. If you support non-CUDA builds you should use CheckLanguage and enable_language(CUDA), and remove CUDA from the project(...) call. Currently if nvcc is not found, configuration will fail because you have CUDA in the project command which makes it required.

Hope that helps!

-Stephen

On Tue, Jul 24, 2018, 1:48 PM Quang Ha <[hidden email]> wrote:
So, it doesn't seem that my setting in NVCC flags is being used:

In CMakeLists.txt:

project(tangram LANGUAGES CXX CUDA)
[...]

    FIND_PACKAGE(CUDA REQUIRED)
    if(CUDA_FOUND)
      add_definitions(-DCUDA_CALLABLE="__host__ __device__")
      set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-Xcompiler="-fopenmp -fPIC")
      set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};--std=c++11 --expt-relaxed-constexpr)
      set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-gencode arch=compute_70,code=sm_70)
      set(CUDA_PROPAGATE_HOST_FLAGS ON)
      set(CUDA_SEPARABLE_COMPILATION OFF)
      message(STATUS "CUDA include directories ${CUDA_INCLUDE_DIRS}")
      message(STATUS "Overwriting THRUST_DIR to point to ${CUDA_INCLUDE_DIRS}/thrust")
      set(THRUST_DIR "${CUDA_INCLUDE_DIRS}")
      set(EXTRA_LIBS ${CUDA_LIBRARIES})
      message("CUDA flags" ${CUDA_NVCC_FLAGS})
    else(CUDA_FOUND)
      message(FATAL "CUDA not found")
    endif(CUDA_FOUND)
[...]

Then, at cmake stage:
[...]
-- Overwriting THRUST_DIR to point to /projects/opt/centos7/cuda/9.0/include/thrust
CUDA flags-Xcompiler="-fopenmp -fPIC"--std=c++11--expt-relaxed-constexpr-gencodearch=compute_70,code=sm_70
-- Adding application directory app
[...]

But then, build fail, and when I do make VERBOSE=1:
[...]
[ 60%] Building CUDA object app/simple-vfgen-cuda/CMakeFiles/simple-vfgen-cuda.dir/simple-vfgen-cuda.cu.o
cd /home/qth20/develop/tangram/build/app/simple-vfgen-cuda && /projects/opt/centos7/cuda/9.0/bin/nvcc  -DCUDA_CALLABLE="\"__host__ __device__\"" -DHAVE_LAPACKE -DTHRUST -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_CUDA -DTHRUST_HOST_SYSTEM=THRUST_HOST_SYSTEM_OMP -I/home/qth20/develop/tangram -I/home/qth20/develop/tangram/build -I/home/qth20/develop/tangram/cinch/logging -I/home/qth20/installed/jali/include -I/home/qth20/installed/jali-tpls/include -I/home/qth20/installed/jali-tpls/trilinos-12-10-1/include -I/projects/opt/centos7/openmpi/3.1.0-gcc_8.1.0/include -I/home/qth20/installed/jali-tpls/trilinos-12-10-1/lib/cmake/Zoltan/../../../include -I/home/qth20/installed/jali-tpls/include/UnitTest++ -I/usr/include/lapacke -I/home/qth20/installed/xmof2d/include -I/projects/opt/centos7/cuda/9.0/include  -O3 -DNDEBUG   -std=c++11 -x cu -c /home/qth20/develop/tangram/app/simple-vfgen-cuda/simple-vfgen-cuda.cu -o CMakeFiles/simple-vfgen-cuda.dir/simple-vfgen-cuda.cu.o
[...]

None of the flags was passed into nvcc. This is with cmake/3.11.1. Does upgrading to 3.12 recommended to solve the issue?

Thanks,
Quang
--

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:
https://cmake.org/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:
https://cmake.org/mailman/listinfo/cmake
Reply | Threaded
Open this post in threaded view
|

Re: CMAKE doesn't pass NVCC flags?

Quang Ha
I see - thanks! This is working now for 3.11 with CMAKE_CUDA_FLAGS.

On Tue, 24 Jul 2018 at 15:55, Stephen McDowell <[hidden email]> wrote:
I think you are mixing old and new approaches. Since you have enabled the CUDA language (via your project(...) call), you should be using either CUDAFLAGS or CMAKE_CUDA_FLAGS.

I think CUDA_NVCC_FLAGS is only used for the old cuda_add_library or executable functions.

Note that finding the cuda package should no longer be necessary. If you support non-CUDA builds you should use CheckLanguage and enable_language(CUDA), and remove CUDA from the project(...) call. Currently if nvcc is not found, configuration will fail because you have CUDA in the project command which makes it required.

Hope that helps!

-Stephen

On Tue, Jul 24, 2018, 1:48 PM Quang Ha <[hidden email]> wrote:
So, it doesn't seem that my setting in NVCC flags is being used:

In CMakeLists.txt:

project(tangram LANGUAGES CXX CUDA)
[...]

    FIND_PACKAGE(CUDA REQUIRED)
    if(CUDA_FOUND)
      add_definitions(-DCUDA_CALLABLE="__host__ __device__")
      set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-Xcompiler="-fopenmp -fPIC")
      set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};--std=c++11 --expt-relaxed-constexpr)
      set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-gencode arch=compute_70,code=sm_70)
      set(CUDA_PROPAGATE_HOST_FLAGS ON)
      set(CUDA_SEPARABLE_COMPILATION OFF)
      message(STATUS "CUDA include directories ${CUDA_INCLUDE_DIRS}")
      message(STATUS "Overwriting THRUST_DIR to point to ${CUDA_INCLUDE_DIRS}/thrust")
      set(THRUST_DIR "${CUDA_INCLUDE_DIRS}")
      set(EXTRA_LIBS ${CUDA_LIBRARIES})
      message("CUDA flags" ${CUDA_NVCC_FLAGS})
    else(CUDA_FOUND)
      message(FATAL "CUDA not found")
    endif(CUDA_FOUND)
[...]

Then, at cmake stage:
[...]
-- Overwriting THRUST_DIR to point to /projects/opt/centos7/cuda/9.0/include/thrust
CUDA flags-Xcompiler="-fopenmp -fPIC"--std=c++11--expt-relaxed-constexpr-gencodearch=compute_70,code=sm_70
-- Adding application directory app
[...]

But then, build fail, and when I do make VERBOSE=1:
[...]
[ 60%] Building CUDA object app/simple-vfgen-cuda/CMakeFiles/simple-vfgen-cuda.dir/simple-vfgen-cuda.cu.o
cd /home/qth20/develop/tangram/build/app/simple-vfgen-cuda && /projects/opt/centos7/cuda/9.0/bin/nvcc  -DCUDA_CALLABLE="\"__host__ __device__\"" -DHAVE_LAPACKE -DTHRUST -DTHRUST_DEVICE_SYSTEM=THRUST_DEVICE_SYSTEM_CUDA -DTHRUST_HOST_SYSTEM=THRUST_HOST_SYSTEM_OMP -I/home/qth20/develop/tangram -I/home/qth20/develop/tangram/build -I/home/qth20/develop/tangram/cinch/logging -I/home/qth20/installed/jali/include -I/home/qth20/installed/jali-tpls/include -I/home/qth20/installed/jali-tpls/trilinos-12-10-1/include -I/projects/opt/centos7/openmpi/3.1.0-gcc_8.1.0/include -I/home/qth20/installed/jali-tpls/trilinos-12-10-1/lib/cmake/Zoltan/../../../include -I/home/qth20/installed/jali-tpls/include/UnitTest++ -I/usr/include/lapacke -I/home/qth20/installed/xmof2d/include -I/projects/opt/centos7/cuda/9.0/include  -O3 -DNDEBUG   -std=c++11 -x cu -c /home/qth20/develop/tangram/app/simple-vfgen-cuda/simple-vfgen-cuda.cu -o CMakeFiles/simple-vfgen-cuda.dir/simple-vfgen-cuda.cu.o
[...]

None of the flags was passed into nvcc. This is with cmake/3.11.1. Does upgrading to 3.12 recommended to solve the issue?

Thanks,
Quang
--

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:
https://cmake.org/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:
https://cmake.org/mailman/listinfo/cmake