Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Melodic CPU/GPU compilation flag #2265

Merged
merged 42 commits into from
May 17, 2019
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
c53a081
[Release] 1.9.1 (#1691)
kfunaoka Nov 7, 2018
b3e0aec
Feature/edit typo (#1769)
harderthan Jan 16, 2019
9fae6cc
[Release] 1.10.0 (#1898)
kfunaoka Jan 23, 2019
2b8fb78
Update README.md
amc-nu Feb 3, 2019
34ff6a6
Update contact details
gbiggs Feb 27, 2019
b98cf4b
Feature/update autoware launcher (#2056)
isamu-takagi Mar 15, 2019
166c826
Merge pull request #2039 from gbiggs/master
gbiggs Mar 18, 2019
f781965
Update CHANGELOGs
kfunaoka Mar 21, 2019
f4c35b9
Replace URI in CHANGELOGs
kfunaoka Mar 21, 2019
8877ebd
Set version 1.10.0
kfunaoka Mar 21, 2019
f7d2eb9
Creanup rst format
kfunaoka Mar 21, 2019
a4b6f37
1.11.0
kfunaoka Mar 21, 2019
37b9feb
Change RTM default topic to match UKF node launch file (#2142)
amc-nu Mar 22, 2019
21e268d
[Release] 1.11.0 (#2140)
kfunaoka Mar 23, 2019
ec63273
Remove old issue and PR templates (#2148)
gbiggs Mar 25, 2019
276073b
Update repository info files (#2149)
gbiggs Mar 25, 2019
6a7d1b9
Merge left over features from around the 1.11 release (#2151)
Mar 26, 2019
d5b2ed9
Add .repos file for setting up an Autoware workspace using vcs (#2161)
Apr 1, 2019
9f7bf97
Remove enablePlannerDynamicSwitch (#1919)
kfunaoka Apr 15, 2019
bb4fcd0
Updated paths in quick_start launch files and parameters in default.r…
sgermanserrano Apr 16, 2019
7998aa7
Fix bug that limits the data rate of DataRateCheckerPlugin (#2205)
drwnz Apr 23, 2019
3888daa
Adding install directive for node (#2195)
snehagn Apr 26, 2019
e7c12b0
fix install directive for waypoint extractor (#2219)
wep21 Apr 26, 2019
3a8230c
Merge branch 'master' into feature/melodic
amc-nu May 14, 2019
859101e
Fix for AutowareLauncher nosetests error
amc-nu May 14, 2019
55697e5
Add GPU Checks on autoware_build_flags
amc-nu May 16, 2019
d8144a2
Add CMake GPU checks for lidar_apollo_cnn_seg
amc-nu May 16, 2019
a0854b8
Add CMake GPU checks for lidar_euclidean_cluster_detect
amc-nu May 16, 2019
4a18e6b
Add CMake GPU checks for lidar_point_pillars
amc-nu May 16, 2019
e37da6d
Add CMake GPU checks for trafficlight_recognizer
amc-nu May 16, 2019
00e5792
Add CMake GPU checks for vision_darknet_detect
amc-nu May 16, 2019
7a1684d
Add CMake GPU checks for vision_segment_enet_detect
amc-nu May 16, 2019
815655e
Add CMake GPU checks for vision_ssd_detect
amc-nu May 16, 2019
8e19caa
Add CMake GPU checks for ndt_gpu
amc-nu May 16, 2019
1f6883a
Add CMake GPU checks for lidar_localizer
amc-nu May 16, 2019
6df0017
Increase Minimum Eigen Version to 3.3.6 on GPU mode, according to #2098
amc-nu May 16, 2019
813c8a4
Add Missing autoware_build_flags to vision_segment_enet_detect
amc-nu May 16, 2019
219dc84
Add missing autoware_build_flags to ndt_gpu
amc-nu May 16, 2019
c856562
Add autoware_build_flags as build tool for ndt_gpu
amc-nu May 16, 2019
e03f265
Merge remote-tracking branch 'upstream/feature/melodic' into feature/…
amc-nu May 16, 2019
6228106
Invert CMake CUDA compilation flag logic
amc-nu May 17, 2019
6384537
Increase Eigen minimum required version to 3.3.7
amc-nu May 17, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,24 @@ if(${CMAKE_VERSION} VERSION_LESS "3.1.0")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
else()
set(CMAKE_CXX_STANDARD 11)
endif()
endif()

find_package(CUDA QUIET)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only search for CUDA if the user has explicitly enabled it. i.e. something like:

USE_CUDA=FALSE
if(ENABLE_CUDA)
  if ("$ENV{ROS_DISTRO}" STREQUAL "melodic")
    find_package(CUDA REQUIRED)
    if (${CUDA_VERSION} etc. etc.)
      USE_CUDA=TRUE
    endif()
  else()
    message(FATAL "CUDA support requires ROS Melodic or greater")
  endif()
else()
  message(STATUS "CUDA support is disabled. Use -DENABLE_CUDA=TRUE and install Eigen >= 3.3.7 to enable it")
endif()

Then you can also just do a check on USE_CUDA rather than needing to check both ENABLE_CUDA and CUDA_FOUND elsewhere.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

got it, preparing a new PR

find_package(Eigen3 QUIET)

option(ENABLE_CUDA "Enable_CUDA" FALSE)

####### Melodic Checks
if (ENABLE_CUDA AND CUDA_FOUND AND "$ENV{ROS_DISTRO}" STREQUAL "melodic" )
if(${CUDA_VERSION} VERSION_GREATER "9.1" AND ${CMAKE_VERSION} VERSION_LESS "3.12.3")
unset(CUDA_cublas_device_LIBRARY CACHE)
set(CUDA_cublas_device_LIBRARY ${CUDA_cublas_LIBRARY})
set(CUDA_CUBLAS_LIBRARIES ${CUDA_cublas_LIBRARY})
endif()
if (${EIGEN3_VERSION_STRING} VERSION_LESS "3.3.7")
message(FATAL_ERROR "GPU support on Melodic requires Eigen version>= 3.3.7")
endif()
else()
message(WARNING "CUDA support is disabled. Use -DENABLE_CUDA=TRUE and install Eigen >= 3.3.7 to enable it")
endif()
####### End Melodic Checks
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,7 @@ catkin_package(
###CAFFE
set(CAFFE_PATH "$ENV{HOME}/caffe/distribute")

####### Melodic Checks
SET (CPU_ONLY FALSE)
if (CUDA_FOUND AND "$ENV{ROS_DISTRO}" STREQUAL "melodic" )
if(${CMAKE_VERSION} VERSION_LESS "3.12.3")
message("GPU support on Melodic requires CMake version>= 3.12.3")
SET (CPU_ONLY TRUE)
endif()
endif()
####### End Melodic Checks

if (NOT CPU_ONLY AND ${CUDA_FOUND} AND EXISTS "${CAFFE_PATH}")
if (ENABLE_CUDA AND ${CUDA_FOUND} AND EXISTS "${CAFFE_PATH}")
include_directories(${CUDA_INCLUDE_DIRS})

IF ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "^arm")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -65,22 +65,8 @@ add_executable(lidar_euclidean_cluster_detect

find_package(CUDA)
find_package(Eigen3 QUIET)
####### Melodic Checks
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You could make a couple of macros for this (one for just the CMake check and one that has both CMake and Eigen checks) and put them in the autoware_build_flags-extras.cmake file.

SET (CPU_ONLY FALSE)
if (CUDA_FOUND AND "$ENV{ROS_DISTRO}" STREQUAL "melodic" )
if(${CMAKE_VERSION} VERSION_LESS "3.12.3")
message("GPU support on Melodic requires CMake version>= 3.12.3")
SET (CPU_ONLY TRUE)
else()
if (${EIGEN3_VERSION_STRING} VERSION_LESS "3.3.5")
message("GPU support on Melodic requires Eigen version>= 3.3.5")
SET (CPU_ONLY TRUE)
endif()
endif()
endif()
####### End Melodic Checks
if (NOT CPU_ONLY AND ${CUDA_FOUND})
INCLUDE(FindCUDA)

if (ENABLE_CUDA AND ${CUDA_FOUND})
message("-- USING ACCELERATED CLUSTERING --")
message("Version: " ${CUDA_VERSION})
message("Library: " ${CUDA_CUDA_LIBRARY})
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,17 +5,7 @@ project(lidar_point_pillars)
option(CUDA_AVAIL "CUDA available" OFF)
find_package(CUDA)

####### Melodic Checks
SET (CPU_ONLY FALSE)
if (NOT CPU_ONLY AND CUDA_FOUND AND "$ENV{ROS_DISTRO}" STREQUAL "melodic" )
if(${CMAKE_VERSION} VERSION_LESS "3.12.3")
message("GPU support on Melodic requires CMake version>= 3.12.3")
SET (CPU_ONLY TRUE)
endif()
endif()
####### End Melodic Checks

if (NOT CPU_ONLY AND CUDA_FOUND)
if (ENABLE_CUDA AND CUDA_FOUND)
message("CUDA is available!")
message("CUDA Libs: ${CUDA_LIBRARIES}")
message("CUDA Headers: ${CUDA_INCLUDE_DIRS}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -250,7 +250,7 @@ target_link_libraries(label_maker
##############################SSD'sFORK of CAFFE NEEDS TO BE PREVIOUSLY COMPILED####################
set(SSD_CAFFE_PATH "$ENV{HOME}/ssdcaffe/distribute")
####################################################################################################
if (EXISTS "${SSD_CAFFE_PATH}")
if (ENABLE_CUDA AND EXISTS "${SSD_CAFFE_PATH}")

find_package(CUDA REQUIRED)

Expand Down Expand Up @@ -312,7 +312,7 @@ install(DIRECTORY launch/
#############Please follow README file for instructions#############################################
set(MXNET_PATH "$ENV{HOME}/mxnet/")
####################################################################################################
if (EXISTS "${MXNET_PATH}")
if (ENABLE_CUDA AND EXISTS "${MXNET_PATH}")

find_package(CUDA REQUIRED)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,16 +33,7 @@ catkin_package(CATKIN_DEPENDS

set(CMAKE_CXX_FLAGS "-O3 -g -Wall ${CMAKE_CXX_FLAGS}")

####### Melodic Checks
SET (CPU_ONLY FALSE)
if (CUDA_FOUND AND "$ENV{ROS_DISTRO}" STREQUAL "melodic" )
if(${CMAKE_VERSION} VERSION_LESS "3.12.3")
message("GPU support on Melodic requires CMake version>= 3.12.3")
SET (CPU_ONLY TRUE)
endif()
endif()
####### End Melodic Checks
if (NOT CPU_ONLY AND ${CUDA_FOUND})
if (ENABLE_CUDA AND ${CUDA_FOUND})
list(APPEND CUDA_NVCC_FLAGS "--std=c++11 -I$${PROJECT_SOURCE_DIR}/darknet/src -I${PROJECT_SOURCE_DIR}/src -DGPU")
SET(CUDA_PROPAGATE_HOST_FLAGS OFF)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ FIND_PACKAGE(catkin REQUIRED COMPONENTS
image_transport
roscpp
sensor_msgs
autoware_build_flags
)
FIND_PACKAGE(CUDA)
FIND_PACKAGE(OpenCV REQUIRED)
Expand All @@ -31,16 +32,7 @@ INCLUDE_DIRECTORIES(
##############################ENet's CAFFE FORK NEEDS TO BE PREVIOUSLY COMPILED####################
set(ENET_CAFFE_PATH "$ENV{HOME}/ENet/caffe-enet/distribute")
####################################################################################################
####### Melodic Checks
SET (CPU_ONLY FALSE)
if (NOT CPU_ONLY AND CUDA_FOUND AND "$ENV{ROS_DISTRO}" STREQUAL "melodic" )
if(${CMAKE_VERSION} VERSION_LESS "3.12.3")
message("GPU support on Melodic requires CMake version>= 3.12.3")
SET (CPU_ONLY TRUE)
endif()
endif()
####### End Melodic Checks
if (EXISTS "${ENET_CAFFE_PATH}" AND ${CUDA_FOUND})
if (ENABLE_CUDA AND EXISTS "${ENET_CAFFE_PATH}" AND ${CUDA_FOUND})

ADD_EXECUTABLE(vision_segment_enet_detect
nodes/vision_segment_enet_detect/vision_segment_enet_detect_node.cpp
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,17 +48,7 @@ include_directories(
set(SSD_CAFFE_PATH "$ENV{HOME}/ssdcaffe/distribute")
####################################################################################################

####### Melodic Checks
SET (CPU_ONLY FALSE)
if (CUDA_FOUND AND "$ENV{ROS_DISTRO}" STREQUAL "melodic" )
if(${CMAKE_VERSION} VERSION_LESS "3.12.3")
message("GPU support on Melodic requires CMake version>= 3.12.3")
SET (CPU_ONLY TRUE)
endif()
endif()
####### End Melodic Checks

if (NOT CPU_ONLY AND ${CUDA_FOUND} AND EXISTS "${SSD_CAFFE_PATH}")
if (ENABLE_CUDA AND ${CUDA_FOUND} AND EXISTS "${SSD_CAFFE_PATH}")
include_directories(${CUDA_INCLUDE_DIRS})

IF ("${CMAKE_SYSTEM_PROCESSOR}" MATCHES "^arm")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,27 +1,13 @@
cmake_minimum_required(VERSION 2.8.3)
project(ndt_gpu)

find_package(catkin REQUIRED)
find_package(catkin REQUIRED COMPONENTS
autoware_build_flags)
find_package(PCL REQUIRED)
find_package(CUDA)

find_package(Eigen3 QUIET)

####### Melodic Checks
SET (CPU_ONLY FALSE)
if (CUDA_FOUND AND "$ENV{ROS_DISTRO}" STREQUAL "melodic" )
if(${CMAKE_VERSION} VERSION_LESS "3.12.3")
message("GPU support on Melodic requires CMake version>= 3.12.3")
SET (CPU_ONLY TRUE)
else()
if (${EIGEN3_VERSION_STRING} VERSION_LESS "3.3.5")
message("GPU support on Melodic requires Eigen version>= 3.3.5")
SET (CPU_ONLY TRUE)
endif()
endif()
endif()
####### End Melodic Checks

if (NOT EIGEN3_FOUND)
# Fallback to cmake_modules
find_package(cmake_modules REQUIRED)
Expand All @@ -33,7 +19,7 @@ else ()
set(EIGEN3_INCLUDE_DIRS ${EIGEN3_INCLUDE_DIR})
endif ()

if (NOT CPU_ONLY AND CUDA_FOUND)
if (ENABLE_CUDA AND CUDA_FOUND)
set_directory_properties(PROPERTIES COMPILE_DEFINITIONS "")

if(CMAKE_CROSSCOMPILING)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
<maintainer email="anh@ertl.jp">Anh Viet Nguyen</maintainer>
<license>Apache 2</license>
<buildtool_depend>catkin</buildtool_depend>
<buildtool_depend>autoware_build_flags</buildtool_depend>

<build_depend>libpcl-all-dev</build_depend>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,22 +16,7 @@ endif ()
find_package(CUDA)
find_package(Eigen3 QUIET)

####### Melodic Checks
SET (CPU_ONLY FALSE)
if (CUDA_FOUND AND "$ENV{ROS_DISTRO}" STREQUAL "melodic" )
if(${CMAKE_VERSION} VERSION_LESS "3.12.3")
message("GPU support on Melodic requires CMake version>= 3.12.3")
SET (CPU_ONLY TRUE)
else()
if (${EIGEN3_VERSION_STRING} VERSION_LESS "3.3.5")
message("GPU support on Melodic requires Eigen version>= 3.3.5")
SET (CPU_ONLY TRUE)
endif()
endif()
endif()
####### End Melodic Checks

if (NOT CPU_ONLY AND CUDA_FOUND)
if (ENABLE_CUDA AND CUDA_FOUND)
add_definitions(-DCUDA_FOUND)
list(APPEND PCL_OPENMP_PACKAGES ndt_gpu)
endif ()
Expand Down Expand Up @@ -105,7 +90,7 @@ add_executable(ndt_mapping nodes/ndt_mapping/ndt_mapping.cpp)
target_link_libraries(ndt_mapping ${catkin_LIBRARIES})
add_dependencies(ndt_mapping ${catkin_EXPORTED_TARGETS})

if (NOT CPU_ONLY AND CUDA_FOUND)
if (ENABLE_CUDA AND CUDA_FOUND)
target_include_directories(ndt_matching PRIVATE ${CUDA_INCLUDE_DIRS})
target_include_directories(ndt_mapping PRIVATE ${CUDA_INCLUDE_DIRS})
endif ()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@ args:
- {name: interval_sec, type: real, default: 0.1}
- {name: num_prediction, type: int, default: 10}
- {name: sensor_height, type: real, default: 2.0}
- {name: filter_out_close_object_threshold, type: real, default: 1.5}
- {name: input_topic, type: str, default: /detection/objects}

panel:
widget: node.panel
frames:
- {target: args.interval_sec, widget: basic.real}
- {target: args.num_prediction, widget: basic.int}
- {target: args.sensor_height, widget: basic.real}
- {target: args.filter_out_close_object_threshold, widget: basic.real}
- {target: args.input_topic, widget: basic.text}