Coder Social home page Coder Social logo

Comments (12)

ZhenshengLee avatar ZhenshengLee commented on July 18, 2024 1

how to use the cupoch c++ library

the following steps work in ubuntu1804

install cupoch with 3rdparty libs

add some install command to third_party/CMakeLists.txt

# Installation
install(TARGETS ${FLANN_LIBRARIES}
                ${fmt_LIBRARIES}
                ${rmm_LIBRARIES}
                ${liblzf_LIBRARIES}
                ${rply_LIBRARIES}
        EXPORT ${PROJECT_NAME}3rdTargets
        RUNTIME DESTINATION ${CUPOCH_INSTALL_BIN_DIR}
        LIBRARY DESTINATION ${CUPOCH_INSTALL_LIB_DIR}
        ARCHIVE DESTINATION ${CUPOCH_INSTALL_LIB_DIR}
)

install(DIRECTORY ${flann_INCLUDE_DIRS}
                    ${fmt_INCLUDE_DIRS}
                    ${cnmem_INCLUDE_DIRS}
                    ${rmm_INCLUDE_DIRS}
                    ${liblzf_INCLUDE_DIRS}
                    ${rply_INCLUDE_DIRS}
    DESTINATION ${CUPOCH_INSTALL_INCLUDE_DIR}/../
)

I will not use the python interface so

cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/cupoch/cupoch -DBUILD_UNIT_TESTS=OFF -DBUILD_PYBIND11=OFF -DBUILD_PYTHON_MODULE=OFF
make -j
sudo make install

write a new cmake file

set vars

# root dirs
set(CUPOCH_ROOT "/opt/cupoch/cupoch/")
# 增加对cupoch支持
find_package(PkgConfig QUIET)
find_package(pybind11  QUIET)
include(GenerateExportHeader)
if (PKGCONFIG_FOUND)
    pkg_search_module(EIGEN3          eigen3>=3.2.7   QUIET)
    pkg_search_module(GLFW            glfw3           QUIET)
    pkg_search_module(GLEW            glew            QUIET)
    pkg_search_module(JSONCPP         jsoncpp>=1.7.0  QUIET)
    pkg_search_module(PNG             libpng>=1.6.0   QUIET)
    pkg_search_module(JPEG_TURBO      libturbojpeg    QUIET)
endif (PKGCONFIG_FOUND)
set(CUPOCH_INCLUDE_DIRS ${CUPOCH_ROOT}/include
    ${CUPOCH_ROOT}/third_party
    ${CUPOCH_ROOT}/third_party/rmm/include
    ${CUPOCH_ROOT}/third_party/cnmem/include
    ${CUPOCH_ROOT}/third_party/fmt/include
    ${CUPOCH_ROOT}/third_party/liblzf/include
    ${PNG_INCLUDE_DIRS}
)
set(CUPOCH_LIBRARY_DIRS ${CUPOCH_ROOT}/lib)
set(CUPOCH_LIBRARIES
    cupoch_camera
    cupoch_collision
    cupoch_geometry
    cupoch_integration
    cupoch_io
    cupoch_odometry
    cupoch_planning
    cupoch_registration
    cupoch_utility
    cupoch_visualization
    tinyobjloader
    turbojpeg
    stdgpu
    flann_cuda_s
    fmt
    rmm
    liblzf
    rply
    ${CUDA_LIBRARIES}
    ${CUDA_CUBLAS_LIBRARIES}
    ${CUDA_curand_LIBRARY}
    ${PNG_LIBRARIES}
)
set(CUPOCH_NVCC_FLAGS
    -use_fast_math
    --expt-relaxed-constexpr
    --expt-extended-lambda
    --default-stream per-thread
    --use_fast_math
    -Xcudafe "--diag_suppress=integer_sign_change"
    -Xcudafe "--diag_suppress=partial_override"
    -Xcudafe "--diag_suppress=virtual_function_decl_hidden"
)
if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo" )
    list(APPEND CUPOCH_NVCC_FLAGS
        -G;-g
    )
endif()
set(CUPOCH_DEFINITIONS
    -DFLANN_USE_CUDA
    -DUSE_RMM
)

using the cupoch

APPEND_TARGET_ARCH_FLAGS()

set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS}
        ${CUPOCH_NVCC_FLAGS}
)
add_definitions(${CUPOCH_DEFINITIONS})
link_directories(${CUPOCH_LIBRARY_DIRS})
link_libraries(${CUPOCH_LIBRARIES})
add_executable(${EXE_NAME} src/${EXE_NAME}_node.cpp src/${EXE_NAME}.cpp)

todo

You can write a FindCUPOCH.cmake as well

from cupoch.

ZhenshengLee avatar ZhenshengLee commented on July 18, 2024 1

thank you ,but I still can't use Cupoch directly, The error is that there is a problem with RMM. Do you have a similar problem?

You could find it more in perception_cupoch

Thanks.

from cupoch.

Shipborn avatar Shipborn commented on July 18, 2024

So i've managed to piece together that what was missing was:

link_directories("path__to__cupoch__:  /cupoch/build/lib")

find_package(fmt REQUIRED)
find_package(flann REQUIRED)

install(TARGETS my_prog DESTINATION lib/${PROJECT_NAME})

target_link_libraries(my_prog
        cupoch_geometry
        cupoch_utility
        cupoch_registration
        cupoch_visualization
        fmt
        flann_cuda_s
        )


However, now I am running into an issue with memory allocation.

given the function that converts ROS2 sensor_msgs::msgs::Pointcloud2 Messages to cupoch::geometry::Pointcloud (I wrote this, but i think you also have such a function hidden somewhere? ) :

cupoch::geometry::PointCloud poseGraph::prepare_pointcloud(const sensor_msgs::msg::PointCloud2 &msg){
    thrust::host_vector<Eigen::Vector3f> source_cloud(msg.width);
    for (unsigned long j = 0; j < msg.data.size(); j = j + 16) { // Assumes XYZI content
        Eigen::Vector3f z;
        for (unsigned int k = 0; k < 3; k++) // Assumes 4 steps of int8 per float ( Skips the I of XYZI component)
        {
            u_char v[] = {msg.data[j + k * 4 + 0],
                          msg.data[j + k * 4 + 1],
                          msg.data[j + k * 4 + 2],
                          msg.data[j + k * 4 + 3]};
            float w;
            memcpy(&w, &v, sizeof(v));
            z[k] = w;
        }
        source_cloud[j/16];
    }
    return cupoch::geometry::PointCloud(source_cloud);
}

now using:

void poseGraph::query_icp(const unsigned long idx_a,
                          const unsigned long idx_b,
                          const Vertex &vertex) {

    auto pointcloud_b = this->pointcloud_database[idx_b];  // type sensor_msgs::msg::Pointcloud2
    auto pointcloud_a = this->pointcloud_database[idx_a];


    cupoch::geometry::PointCloud pc_a = this->prepare_pointcloud(pointcloud_a);
    cupoch::geometry::PointCloud pc_b =  this->prepare_pointcloud(pointcloud_a);  // <---- Adding this line crashes the system.
/// If i remove the line, then such errors do not occur.
}

Error:

CUDA Error detected. cudaErrorInvalidValue invalid argument
pose_graph: /home/shipborn/Documents/dashing/main/ros2/src/external/cupoch/third_party/rmm/include/rmm/mr/device/cuda_memory_resource.hpp:83: virtual void rmm::mr::cuda_memory_resource::do_deallocate(void*, std::size_t, cudaStream_t): Assertion `status__ == cudaSuccess' failed.
Signal: SIGABRT (Aborted)

from cupoch.

neka-nat avatar neka-nat commented on July 18, 2024

Hi @Shipborn ,

Thank you for your feedback.
cmake install is currently not supported.
I plan to support it in the future.

For the error, please initialize the allocator when you run the program.

cupoch::utility::InitializeAllocator();

from cupoch.

Shipborn avatar Shipborn commented on July 18, 2024

dear Neka,

Thank you for your reply.
Initializing the allocator does not solve the problem. It still throws me the same error.
The default InitializeAllocator() function does nothing?

The implementation is:

inline void InitializeAllocator(
        rmmAllocationMode_t mode = CudaDefaultAllocation,
        size_t initial_pool_size = 0,
        bool logging = false,
        const std::vector<int> &devices = {}) {}

The function I'm trying to call repeatedly is your RegistrationICP method.

void poseGraph::query_icp(const unsigned long idx_a,
                          const unsigned long idx_b,
                          const Vertex &vertex) {

    sensor_msgs::msg::PointCloud2 pointcloud_b = this->pointcloud_database[idx_b];
    sensor_msgs::msg::PointCloud2 pointcloud_a = this->pointcloud_database[idx_a];

    ////-------------------- This point crashes at the second entry into this function.--------------
    thrust::host_vector<Eigen::Vector3f> source_cloud(pointcloud_a.width); // <------------------------------------------

    for (unsigned long j = 0; j < pointcloud_a.data.size(); j = j + 16) {
        Eigen::Vector3f z;
        for (unsigned int k = 0; k < 3; k++) // Assumes 4 steps of int8 per float
        {
            u_char v[] = {pointcloud_a.data[j + k * 4 + 0],
                          pointcloud_a.data[j + k * 4 + 1],
                          pointcloud_a.data[j + k * 4 + 2],
                          pointcloud_a.data[j + k * 4 + 3]};
            float w;
            memcpy(&w, &v, sizeof(v));
            z[k] = w;
        }
        source_cloud[j/16] = z;
    }
    auto source = std::make_shared<cupoch::geometry::PointCloud>(source_cloud);

    thrust::host_vector<Eigen::Vector3f> target_cloud(pointcloud_b.width);
    for (unsigned long j = 0; j < pointcloud_b.data.size(); j = j + 16) {
        Eigen::Vector3f y;
        for (unsigned int k = 0; k < 3; k++) // Assumes 4 steps of int8 per float
        {
            u_char v[] = {pointcloud_b.data[j + k * 4 + 0],
                          pointcloud_b.data[j + k * 4 + 1],
                          pointcloud_b.data[j + k * 4 + 2],
                          pointcloud_b.data[j + k * 4 + 3]};
            float w;
            memcpy(&w, &v, sizeof(v));
            y[k] = w;
        }
        target_cloud[j/16] = y;
    }


    auto target = std::make_shared<cupoch::geometry::PointCloud>(target_cloud);
    auto res = cupoch::registration::RegistrationICP(
                                                     *source,
                                                     *target,
                                                     0.20);

this works, but only the first loop. I am running this function multiple times and it always executes fine the first loop. but then crashes somewhere in the 2 - 4th loop. The error thrown is:

corrupted size vs. prev_size
Signal: SIGABRT (Aborted)

or:

free(): invalid pointer
Signal: SIGABRT (Aborted)

I do call your initializer in the main function:

int main(int argc, char **argv) {
    cupoch::utility::InitializeAllocator();
    rclcpp::init(argc, argv);

    rclcpp::executors::SingleThreadedExecutor executor;
    auto node = std::make_shared<poseGraph>();
    executor.add_node(node);
    executor.spin();
    rclcpp::shutdown();
    return 0;
}

I would like to know where the error comes from when the function runs for a second time? I assumed that the end of the function it is all properly freed and garbage collected?

Greetings and thank you very much for your time.

from cupoch.

neka-nat avatar neka-nat commented on July 18, 2024

Thank you for the feedback!
Can I get the source code that I can run?
I'd like to debug it in my environment.

from cupoch.

neka-nat avatar neka-nat commented on July 18, 2024

If it's difficult to share the code, is it possible to use gdb or something similar to find out more about debugging information?

from cupoch.

xiaopeige avatar xiaopeige commented on July 18, 2024

how to use the cupoch c++ library

the following steps work in ubuntu1804

install cupoch with 3rdparty libs

add some install command to third_party/CMakeLists.txt

# Installation
install(TARGETS ${FLANN_LIBRARIES}
                ${fmt_LIBRARIES}
                ${rmm_LIBRARIES}
                ${liblzf_LIBRARIES}
                ${rply_LIBRARIES}
        EXPORT ${PROJECT_NAME}3rdTargets
        RUNTIME DESTINATION ${CUPOCH_INSTALL_BIN_DIR}
        LIBRARY DESTINATION ${CUPOCH_INSTALL_LIB_DIR}
        ARCHIVE DESTINATION ${CUPOCH_INSTALL_LIB_DIR}
)

install(DIRECTORY ${flann_INCLUDE_DIRS}
                    ${fmt_INCLUDE_DIRS}
                    ${cnmem_INCLUDE_DIRS}
                    ${rmm_INCLUDE_DIRS}
                    ${liblzf_INCLUDE_DIRS}
                    ${rply_INCLUDE_DIRS}
    DESTINATION ${CUPOCH_INSTALL_INCLUDE_DIR}/../
)

I will not use the python interface so

cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/cupoch/cupoch -DBUILD_UNIT_TESTS=OFF -DBUILD_PYBIND11=OFF -DBUILD_PYTHON_MODULE=OFF
make -j
sudo make install

write a new cmake file

set vars

# root dirs
set(CUPOCH_ROOT "/opt/cupoch/cupoch/")
# 增加对cupoch支持
find_package(PkgConfig QUIET)
find_package(pybind11  QUIET)
include(GenerateExportHeader)
if (PKGCONFIG_FOUND)
    pkg_search_module(EIGEN3          eigen3>=3.2.7   QUIET)
    pkg_search_module(GLFW            glfw3           QUIET)
    pkg_search_module(GLEW            glew            QUIET)
    pkg_search_module(JSONCPP         jsoncpp>=1.7.0  QUIET)
    pkg_search_module(PNG             libpng>=1.6.0   QUIET)
    pkg_search_module(JPEG_TURBO      libturbojpeg    QUIET)
endif (PKGCONFIG_FOUND)
set(CUPOCH_INCLUDE_DIRS ${CUPOCH_ROOT}/include
    ${CUPOCH_ROOT}/third_party
    ${CUPOCH_ROOT}/third_party/rmm/include
    ${CUPOCH_ROOT}/third_party/cnmem/include
    ${CUPOCH_ROOT}/third_party/fmt/include
    ${CUPOCH_ROOT}/third_party/liblzf/include
    ${PNG_INCLUDE_DIRS}
)
set(CUPOCH_LIBRARY_DIRS ${CUPOCH_ROOT}/lib)
set(CUPOCH_LIBRARIES
    cupoch_camera
    cupoch_collision
    cupoch_geometry
    cupoch_integration
    cupoch_io
    cupoch_odometry
    cupoch_planning
    cupoch_registration
    cupoch_utility
    cupoch_visualization
    tinyobjloader
    turbojpeg
    stdgpu
    flann_cuda_s
    fmt
    rmm
    liblzf
    rply
    ${CUDA_LIBRARIES}
    ${CUDA_CUBLAS_LIBRARIES}
    ${CUDA_curand_LIBRARY}
    ${PNG_LIBRARIES}
)
set(CUPOCH_NVCC_FLAGS
    -use_fast_math
    --expt-relaxed-constexpr
    --expt-extended-lambda
    --default-stream per-thread
    --use_fast_math
    -Xcudafe "--diag_suppress=integer_sign_change"
    -Xcudafe "--diag_suppress=partial_override"
    -Xcudafe "--diag_suppress=virtual_function_decl_hidden"
)
if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo" )
    list(APPEND CUPOCH_NVCC_FLAGS
        -G;-g
    )
endif()
set(CUPOCH_DEFINITIONS
    -DFLANN_USE_CUDA
    -DUSE_RMM
)

using the cupoch

APPEND_TARGET_ARCH_FLAGS()

set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS}
        ${CUPOCH_NVCC_FLAGS}
)
add_definitions(${CUPOCH_DEFINITIONS})
link_directories(${CUPOCH_LIBRARY_DIRS})
link_libraries(${CUPOCH_LIBRARIES})
add_executable(${EXE_NAME} src/${EXE_NAME}_node.cpp src/${EXE_NAME}.cpp)

todo

You can write a FindCUPOCH.cmake as well

how to use the cupoch c++ library

the following steps work in ubuntu1804

install cupoch with 3rdparty libs

add some install command to third_party/CMakeLists.txt

# Installation
install(TARGETS ${FLANN_LIBRARIES}
                ${fmt_LIBRARIES}
                ${rmm_LIBRARIES}
                ${liblzf_LIBRARIES}
                ${rply_LIBRARIES}
        EXPORT ${PROJECT_NAME}3rdTargets
        RUNTIME DESTINATION ${CUPOCH_INSTALL_BIN_DIR}
        LIBRARY DESTINATION ${CUPOCH_INSTALL_LIB_DIR}
        ARCHIVE DESTINATION ${CUPOCH_INSTALL_LIB_DIR}
)

install(DIRECTORY ${flann_INCLUDE_DIRS}
                    ${fmt_INCLUDE_DIRS}
                    ${cnmem_INCLUDE_DIRS}
                    ${rmm_INCLUDE_DIRS}
                    ${liblzf_INCLUDE_DIRS}
                    ${rply_INCLUDE_DIRS}
    DESTINATION ${CUPOCH_INSTALL_INCLUDE_DIR}/../
)

I will not use the python interface so

cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/cupoch/cupoch -DBUILD_UNIT_TESTS=OFF -DBUILD_PYBIND11=OFF -DBUILD_PYTHON_MODULE=OFF
make -j
sudo make install

write a new cmake file

set vars

# root dirs
set(CUPOCH_ROOT "/opt/cupoch/cupoch/")
# 增加对cupoch支持
find_package(PkgConfig QUIET)
find_package(pybind11  QUIET)
include(GenerateExportHeader)
if (PKGCONFIG_FOUND)
    pkg_search_module(EIGEN3          eigen3>=3.2.7   QUIET)
    pkg_search_module(GLFW            glfw3           QUIET)
    pkg_search_module(GLEW            glew            QUIET)
    pkg_search_module(JSONCPP         jsoncpp>=1.7.0  QUIET)
    pkg_search_module(PNG             libpng>=1.6.0   QUIET)
    pkg_search_module(JPEG_TURBO      libturbojpeg    QUIET)
endif (PKGCONFIG_FOUND)
set(CUPOCH_INCLUDE_DIRS ${CUPOCH_ROOT}/include
    ${CUPOCH_ROOT}/third_party
    ${CUPOCH_ROOT}/third_party/rmm/include
    ${CUPOCH_ROOT}/third_party/cnmem/include
    ${CUPOCH_ROOT}/third_party/fmt/include
    ${CUPOCH_ROOT}/third_party/liblzf/include
    ${PNG_INCLUDE_DIRS}
)
set(CUPOCH_LIBRARY_DIRS ${CUPOCH_ROOT}/lib)
set(CUPOCH_LIBRARIES
    cupoch_camera
    cupoch_collision
    cupoch_geometry
    cupoch_integration
    cupoch_io
    cupoch_odometry
    cupoch_planning
    cupoch_registration
    cupoch_utility
    cupoch_visualization
    tinyobjloader
    turbojpeg
    stdgpu
    flann_cuda_s
    fmt
    rmm
    liblzf
    rply
    ${CUDA_LIBRARIES}
    ${CUDA_CUBLAS_LIBRARIES}
    ${CUDA_curand_LIBRARY}
    ${PNG_LIBRARIES}
)
set(CUPOCH_NVCC_FLAGS
    -use_fast_math
    --expt-relaxed-constexpr
    --expt-extended-lambda
    --default-stream per-thread
    --use_fast_math
    -Xcudafe "--diag_suppress=integer_sign_change"
    -Xcudafe "--diag_suppress=partial_override"
    -Xcudafe "--diag_suppress=virtual_function_decl_hidden"
)
if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo" )
    list(APPEND CUPOCH_NVCC_FLAGS
        -G;-g
    )
endif()
set(CUPOCH_DEFINITIONS
    -DFLANN_USE_CUDA
    -DUSE_RMM
)

using the cupoch

APPEND_TARGET_ARCH_FLAGS()

set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS}
        ${CUPOCH_NVCC_FLAGS}
)
add_definitions(${CUPOCH_DEFINITIONS})
link_directories(${CUPOCH_LIBRARY_DIRS})
link_libraries(${CUPOCH_LIBRARIES})
add_executable(${EXE_NAME} src/${EXE_NAME}_node.cpp src/${EXE_NAME}.cpp)

todo

You can write a FindCUPOCH.cmake as well

how to use the cupoch c++ library

the following steps work in ubuntu1804

install cupoch with 3rdparty libs

add some install command to third_party/CMakeLists.txt

# Installation
install(TARGETS ${FLANN_LIBRARIES}
                ${fmt_LIBRARIES}
                ${rmm_LIBRARIES}
                ${liblzf_LIBRARIES}
                ${rply_LIBRARIES}
        EXPORT ${PROJECT_NAME}3rdTargets
        RUNTIME DESTINATION ${CUPOCH_INSTALL_BIN_DIR}
        LIBRARY DESTINATION ${CUPOCH_INSTALL_LIB_DIR}
        ARCHIVE DESTINATION ${CUPOCH_INSTALL_LIB_DIR}
)

install(DIRECTORY ${flann_INCLUDE_DIRS}
                    ${fmt_INCLUDE_DIRS}
                    ${cnmem_INCLUDE_DIRS}
                    ${rmm_INCLUDE_DIRS}
                    ${liblzf_INCLUDE_DIRS}
                    ${rply_INCLUDE_DIRS}
    DESTINATION ${CUPOCH_INSTALL_INCLUDE_DIR}/../
)

I will not use the python interface so

cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/cupoch/cupoch -DBUILD_UNIT_TESTS=OFF -DBUILD_PYBIND11=OFF -DBUILD_PYTHON_MODULE=OFF
make -j
sudo make install

write a new cmake file

set vars

# root dirs
set(CUPOCH_ROOT "/opt/cupoch/cupoch/")
# 增加对cupoch支持
find_package(PkgConfig QUIET)
find_package(pybind11  QUIET)
include(GenerateExportHeader)
if (PKGCONFIG_FOUND)
    pkg_search_module(EIGEN3          eigen3>=3.2.7   QUIET)
    pkg_search_module(GLFW            glfw3           QUIET)
    pkg_search_module(GLEW            glew            QUIET)
    pkg_search_module(JSONCPP         jsoncpp>=1.7.0  QUIET)
    pkg_search_module(PNG             libpng>=1.6.0   QUIET)
    pkg_search_module(JPEG_TURBO      libturbojpeg    QUIET)
endif (PKGCONFIG_FOUND)
set(CUPOCH_INCLUDE_DIRS ${CUPOCH_ROOT}/include
    ${CUPOCH_ROOT}/third_party
    ${CUPOCH_ROOT}/third_party/rmm/include
    ${CUPOCH_ROOT}/third_party/cnmem/include
    ${CUPOCH_ROOT}/third_party/fmt/include
    ${CUPOCH_ROOT}/third_party/liblzf/include
    ${PNG_INCLUDE_DIRS}
)
set(CUPOCH_LIBRARY_DIRS ${CUPOCH_ROOT}/lib)
set(CUPOCH_LIBRARIES
    cupoch_camera
    cupoch_collision
    cupoch_geometry
    cupoch_integration
    cupoch_io
    cupoch_odometry
    cupoch_planning
    cupoch_registration
    cupoch_utility
    cupoch_visualization
    tinyobjloader
    turbojpeg
    stdgpu
    flann_cuda_s
    fmt
    rmm
    liblzf
    rply
    ${CUDA_LIBRARIES}
    ${CUDA_CUBLAS_LIBRARIES}
    ${CUDA_curand_LIBRARY}
    ${PNG_LIBRARIES}
)
set(CUPOCH_NVCC_FLAGS
    -use_fast_math
    --expt-relaxed-constexpr
    --expt-extended-lambda
    --default-stream per-thread
    --use_fast_math
    -Xcudafe "--diag_suppress=integer_sign_change"
    -Xcudafe "--diag_suppress=partial_override"
    -Xcudafe "--diag_suppress=virtual_function_decl_hidden"
)
if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo" )
    list(APPEND CUPOCH_NVCC_FLAGS
        -G;-g
    )
endif()
set(CUPOCH_DEFINITIONS
    -DFLANN_USE_CUDA
    -DUSE_RMM
)

using the cupoch

APPEND_TARGET_ARCH_FLAGS()

set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS}
        ${CUPOCH_NVCC_FLAGS}
)
add_definitions(${CUPOCH_DEFINITIONS})
link_directories(${CUPOCH_LIBRARY_DIRS})
link_libraries(${CUPOCH_LIBRARIES})
add_executable(${EXE_NAME} src/${EXE_NAME}_node.cpp src/${EXE_NAME}.cpp)

todo

You can write a FindCUPOCH.cmake as well

thank you ,but I still can't use Cupoch directly, The error is that there is a problem with RMM. Do you have a similar problem?

from cupoch.

ZhenshengLee avatar ZhenshengLee commented on July 18, 2024

@xiaopeige Hi, the compiling issue with RMM happens when you use cupoch that > 0.1.7, which upgrade thirdparty of rmm.

You could use this fat source of cupoch, which based on the version of 0.1.7

Thanks.

Edit, with cupoch over 0.1.7, you could linking without librmm, so you could remove rmm in cmake files.

from cupoch.

dHofmeister avatar dHofmeister commented on July 18, 2024

Dear @neka-nat,

I was wondering if there has been a change to having "official" support for "sudo make install" of your package and then using it in C++ projects?

Ideally, one would only need to

find_package(cupoch REQUIRED)

install(TARGETS my_prog DESTINATION lib/${PROJECT_NAME})

target_link_libraries(my_prog
        cupoch
        )

Our intend is to use your libraries inside a docker container while using ROS2.

Greetings

from cupoch.

ZhenshengLee avatar ZhenshengLee commented on July 18, 2024

@dHofmeister your requirement is related with ZhenshengLee/perception_cupoch#3

https://github.com/ZhenshengLee/perception_cupoch/tree/noetic#cupoch this will help to use cupoch with ros2 and cpp.

ros2cuda/cupoch-fat@20d9cb5
ros2cuda/cupoch-fat@61aa98c
ros2cuda/cupoch-fat@352f39a
these are useful custom changes to make cupoch cpp friendly.

I'll try to find sometime to merge this.

from cupoch.

dHofmeister avatar dHofmeister commented on July 18, 2024

@ZhenshengLee Thank you.

I will try and compile it in the nvidia/cuda:11.2.0-devel-ubuntu18.04 docker image

from cupoch.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.